diff --git a/src/netlist.c b/src/netlist.c index 824db088..3d9a2439 100644 --- a/src/netlist.c +++ b/src/netlist.c @@ -1053,7 +1053,7 @@ void prepare_netlist_structs(int for_netlist) /* propagate_hilights(1, 0, XINSERT_NOREPLACE);*/ } -int warning_overlapped_symbols() +int warning_overlapped_symbols(int sel) { int i; Int_hashentry *table[HASHSIZE]; @@ -1071,8 +1071,13 @@ int warning_overlapped_symbols() dbg(1, " s=%s\n", s); found = int_hash_lookup(table, s, i, XINSERT_NOREPLACE); if(found) { - xctx->inst[i].color = -PINLAYER; - xctx->hilight_nets=1; + if(sel == 0) { + xctx->inst[i].color = -PINLAYER; + xctx->hilight_nets=1; + } else { + xctx->inst[i].sel = SELECTED; + xctx->need_reb_sel_arr = 1; + } my_snprintf(str, S(str), "Warning: overlapped instance found: %s(%s) -> %s\n", xctx->inst[i].instname, xctx->inst[i].name, xctx->inst[found->value].instname); statusmsg(str,2); @@ -1080,6 +1085,7 @@ int warning_overlapped_symbols() } } int_hash_free(table); + if(sel && xctx->need_reb_sel_arr) rebuild_selected_array(); return 0; } diff --git a/src/save.c b/src/save.c index d4e4120d..e7e824fe 100644 --- a/src/save.c +++ b/src/save.c @@ -2080,7 +2080,7 @@ void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 2 propagate_hilights(1, 1, XINSERT_NOREPLACE); } /* warning if two symbols perfectly overlapped */ - warning_overlapped_symbols(); + warning_overlapped_symbols(0); } void clear_undo(void) diff --git a/src/scheduler.c b/src/scheduler.c index d6467896..c6ff44b8 100644 --- a/src/scheduler.c +++ b/src/scheduler.c @@ -2981,7 +2981,16 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg } else if(argv[1][0] == 'w') { - if(!strcmp(argv[1],"windowid")) /* used by xschem.tcl for configure events */ + if(!strcmp(argv[1],"warning_overlapped_symbols")) + { + cmd_found = 1; + if(argc >= 3) { + warning_overlapped_symbols(atoi(argv[2])); + } else { + warning_overlapped_symbols(0); + } + } + else if(!strcmp(argv[1],"windowid")) /* used by xschem.tcl for configure events */ { cmd_found = 1; if(argc >= 3) { diff --git a/src/spice_netlist.c b/src/spice_netlist.c index c4369adb..e550d9f9 100644 --- a/src/spice_netlist.c +++ b/src/spice_netlist.c @@ -340,7 +340,7 @@ void global_spice_netlist(int global) /* netlister driver */ } /* warning if two symbols perfectly overlapped */ - warning_overlapped_symbols(); + warning_overlapped_symbols(0); /* preserve current level instance flags before descending hierarchy for netlisting, restore later */ stored_flags = my_calloc(146, xctx->instances, sizeof(unsigned int)); for(i=0;iinstances;i++) stored_flags[i] = xctx->inst[i].color; diff --git a/src/tedax_netlist.c b/src/tedax_netlist.c index 828c7566..6c8caec6 100644 --- a/src/tedax_netlist.c +++ b/src/tedax_netlist.c @@ -173,7 +173,7 @@ void global_tedax_netlist(int global) /* netlister driver */ fprintf(fd, "end netlist\n"); /* warning if two symbols perfectly overlapped */ - warning_overlapped_symbols(); + warning_overlapped_symbols(0); /* preserve current level instance flags before descending hierarchy for netlisting, restore later */ stored_flags = my_calloc(149, xctx->instances, sizeof(unsigned int)); for(i=0;iinstances;i++) stored_flags[i] = xctx->inst[i].color; diff --git a/src/verilog_netlist.c b/src/verilog_netlist.c index 385fed69..b0f18c77 100644 --- a/src/verilog_netlist.c +++ b/src/verilog_netlist.c @@ -327,7 +327,7 @@ void global_verilog_netlist(int global) /* netlister driver */ } /* warning if two symbols perfectly overlapped */ - warning_overlapped_symbols(); + warning_overlapped_symbols(0); /* preserve current level instance flags before descending hierarchy for netlisting, restore later */ stored_flags = my_calloc(150, xctx->instances, sizeof(unsigned int)); for(i=0;iinstances;i++) stored_flags[i] = xctx->inst[i].color; diff --git a/src/vhdl_netlist.c b/src/vhdl_netlist.c index 14e01385..4650681a 100644 --- a/src/vhdl_netlist.c +++ b/src/vhdl_netlist.c @@ -420,7 +420,7 @@ void global_vhdl_netlist(int global) /* netlister driver */ xctx->netlist_count++; /* warning if two symbols perfectly overlapped */ - warning_overlapped_symbols(); + warning_overlapped_symbols(0); /* preserve current level instance flags before descending hierarchy for netlisting, restore later */ stored_flags = my_calloc(151, xctx->instances, sizeof(unsigned int)); for(i=0;iinstances;i++) stored_flags[i] = xctx->inst[i].color; diff --git a/src/xschem.h b/src/xschem.h index 818ecae5..ff4f210d 100644 --- a/src/xschem.h +++ b/src/xschem.h @@ -1380,7 +1380,7 @@ extern void redraw_hilights(int clear); extern void set_tcl_netlist_type(void); extern void prepare_netlist_structs(int for_netlist); extern int compare_schematics(const char *filename); -extern int warning_overlapped_symbols(); +extern int warning_overlapped_symbols(int sel); extern void free_simdata(void); extern void delete_netlist_structs(void); extern void delete_inst_node(int i); diff --git a/src/xschem.tcl b/src/xschem.tcl index fee4f6a7..b24afa41 100644 --- a/src/xschem.tcl +++ b/src/xschem.tcl @@ -5524,6 +5524,8 @@ proc build_widgets { {topwin {} } } { -command "xschem check_unique_names 0" -accelerator {#} $topwin.menubar.hilight.menu add command -label {Rename duplicate instance names} \ -command "xschem check_unique_names 1" -accelerator {Ctrl+#} + $topwin.menubar.hilight.menu add command -label {Select overlapped instances} \ + -command "xschem warning_overlapped_symbols 1; xschem redraw" -accelerator {} $topwin.menubar.hilight.menu add command -label {Propagate Highlight selected net/pins} \ -command "xschem hilight drill" -accelerator {Ctrl+Shift+K} $topwin.menubar.hilight.menu add checkbutton -label "Increment Hilight Color" -variable incr_hilight diff --git a/xschem_library/ngspice/pv_ngspice.sch b/xschem_library/ngspice/pv_ngspice.sch index c96c267a..73487936 100644 --- a/xschem_library/ngspice/pv_ngspice.sch +++ b/xschem_library/ngspice/pv_ngspice.sch @@ -5,160 +5,33 @@ K {} V {} S {} E {} -B 2 760 -620 1166 -170 {flags=image,unscaled -alpha=0.8 -image=/home/schippes/x/1.png -image_data=" -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 -PP74pblzTz37rOsyI3r2PDxjhtkkwD3JAUALLVXYin/967uzZ5XpzP79Gxoby5TLffHhTH39ew7Hf37xhdv83SdPNjQ2Zsp182QAX6AKU7Sc -2uqYNu09h2PpN98Q0UMDBmy+9k2fOcnJjw0ZMnzxYuXH5B497FOm9Piv/6q7enVfTs76w4eTe/aMsFiuNjXN2rhx7+nTRPTC8OEzhw37RXh4 -bUPDRxUVr127XOG+nJxV3313z2233dq585WmppwNG8p//JGIuoaFFdpsmf37dwwN3VZd/ezmzTU3XSt2/eHDRPTo4ME3B7C5qmpcXNzqQ4dY -rxkAruHUVmrtC0bDunffX1urTC/bvz+xe/d45SJeRNMSElZ+913d1avKj2P795+watXwxYs/2LNn3aRJHUNDieh4Xd2YFSu6vvvuQ0VFs5KS -JrucT/zb2NgJq1YN+eijZfv3LxwzpuVPjB17a5cuSYsW3f6Xv5yur1+SmdmuGCpPn/7lrbe2M3AA4aEKU3hIYbd07HjhyhVl+vTly+sOH542 -dCgRWUJCJg8e/IlySR0iIvpw795zDQ1EtPzbb5uczlF9+hDRin/96/uffnISVdTULKqsfMDlS0MLKyqU5VcfPDise/cQk6mf1ZoZGztr06Yz -9fUNjY3527Y90LdvdKdOvgdw4erVKOVyPwDBBFUYEdntdg/fkTzX0NDV5YKHi/buXZCeXmC3Z8bGXvr5520//KA+deriRXX65MWLvSIiiGhs -//4vjhjR12ologiL5QuXa32duXaEWN/YGGo2d+rQoa/V2ux0lmVlqctcuHq1V3h4rc9XOOxqsZxtaPBxYQBp4GI7Cg8p7J81NfHqJZ+J1h85 -Emo2P9Cv37SEhCX79jUrFwAjIqLYW25RJpR66nhdXY8uXYrGj89YsWJrdbWT6LVf/zrJ61Fe9YULTqLEjz/+6Vrd115DY2LKb/x+P0AwQP6i -1nphqw8eHKXePoiosbl56Tff5A0fnnHHHYv37XNd8unExKExMaFm87yRI5uczq3V1REWCxFVnj7tJOrRpUubJ3YdOX+++MiRDzMyeoaHE1G3 -Tp0mDhx482IhJlPH0NAOZjMRdQwNDXO5LvX9ffr838GD7QgaQArohSk8VGFrDh16Z9SoET177j55UpmzqLKyMjt717Fjh86dc13yr+XlH2Vk -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 -83xyctWsWefnzDn57LP/cc89RPTI4MEV127w8f799zfm50eGhRHRvw0atDc7m4i6hoUtGD366DPPnM7NXfHQQ907d1YWbm3+vpyct9LStk6e -/NW0aV88/vidMTHqX99cVTUOx5IgO1RhCjMRLdu/P7F79/hu3ZRZ0xISVn73Xd3Vq0Q0rHv3/dduj+ZlMVdxUVGv//rX9y9fHvnee4P+53/W -Hj5MRJ9XVQ3t1i2mc2ciGtWnz/fnz6f17q1Mf15dTUTLxo69tUuXpEWLbv/LX07X1y/JzGz5o63MJ6Kx/ftPWLVq+OLFH+zZs27SpI7Xvltb -efr0L2+9VYuVBcAPVGFEZLfbzUR0+vLldYcPTxs6lIgsISGTBw/+5NqtN27p2PHClSvKtJfFXDU2N4eYzb+89dYIi+WnK1f2nDpFRGfq6ytP -n76vT58eXbrEdO78wZ49o/r2JaJRfft+XlXVz2rNjI2dtWnTmfr6hsbG/G3bHujbN7pTp9bmK3/ow717zzU0ENHyb79tcjpH9emjzL9w9WpU -x44arjYADqAKU7RULov27l2Qnl5gt2fGxl76+edtP/ygzD/X0NA1LExd2uNiTyQkLHrwQWUBU2HhkfPnp65d++wvf7nowQe//vHHV3buVBbb -UlV1f58+HczmrdXVm6uqZiUl9enatU/XrjuOHbvr1lubnc6yrCz1D124erVXeHh0p04e59fW1xPRqYsX1fknL17sFRGhTHe1WM42NGiwrgA4 -giqMiGw2W0sKW3/kSKjZ/EC/ftMSEpbs29d87UKU/6ypiXe5w6PHxT6prHQrx4oOHCg6cKBTaOjzycn/ePjhW/70p2an8/Pq6j+PHh1qNm+p -rv62tjbCYpmWkPDVyZMXrlypvnDBSZT48cc/Xav4FHdERnqcr4i95RZlIsRk6me1Hq+rU34cGhNT/uOPbNYQAK8cDgeyGKmfSDY2Ny/95pu8 -4cMz7rhj8b596tOrDx5UD9C8LOZqUHT0fX36hIWE1Dc2nrp0qdHpVK7Mu+Po0dsiIh6Oi/u8qoqItv7wQ97w4Uoj7Mj588VHjnyYkdEzPJyI -unXqNHHgQC/zFU8nJg6NiQk1m+eNHNnkdG69duWg+/v0+T8+LmYEoB3kL1J7YYpFlZX39+1bduLEoXPn1JlrDh3qYrGM6NnT+2KuOoWGvmmz -1Tz33Nnnn5+VlPTwypVKRXfp55+/PHHiTH399z/9RERbqqq6hoWpeWfKmjXH6upKHn+87oUXyrKybL17e59PRH8tL/8oI+Ps88//Njb2t59+ -Wt/YSETDe/bsYrGsOXSIzRoC4BV6YYq2TwGdMHDgU3femfHppzqMxnf7cnL+c9euzw4ccJu/buLEjysri26aD2AUtxsd3XXXXenp6SEhIf37 -95/mcpaSxWJZsGBBUVHR+vXr3ZYZPHhwVlZWXV3d7t27t2zZYlwo3BH4PpL7cnJcDyoBODd//nzXH9PS0iZOnOg6JycnZ8qUKQ9e+2TMdZmZ -M2fGx8ebTCbXi02jCiN8zRvAKGPGjNmwYYP6Y1JSUk1NzY83fgylLlNUVDR27Njc3NwuXbqoz6IXRkR2u13UW+YM/egjo4cA4KcePXrU1dVd -unRJnTN8+PCIiIjbb789JCRk+/btly9fdl3m9OnThYWFHTt2jI+PV38Fn0gCgB6sVmtBQcHq1aunT5+uzJkxY8bQoUOV6TvvvPPRRx9VpkeN -GqUeSLou07t373nz5r311luJiYn6jp13AvfCAABaUpjNZlOTGaYxjWlMizINACC2/wfEANOB9vZLbgAAAABJRU5ErkJggg==" -} +B 2 860 -550 1360 -160 {flags=graph +y1 = 0 +y2 = 7.29638 +divy = 4 +subdivy=1 +x1=0 +x2=22 +divx=8 + unitx=1 +color=15 +node=i(vload) +dataset=4} +B 2 860 -790 1360 -550 {flags=graph +y1 = 0 +y2 = 120 +divy = 4 +subdivy=1 +x1=0 +x2=22 +divx=8 + unitx=1 +color=8 +node="\\"Power; +plus +i(vload) +*\\"" +dataset=4} T {Voc = 22 Wp = 100W Vmp = 17.5} 610 -370 0 0 0.4 0.4 {} @@ -187,3 +60,93 @@ C {ipin.sym} 280 -360 2 1 {name=p2 lab=fade} C {ammeter.sym} 330 -360 3 0 {name=Vf} C {lab_pin.sym} 360 -360 2 0 {name=l3 sig_type=std_logic lab=f} C {ammeter.sym} 510 -590 2 1 {name=Vp} +C {code_shown.sym} 30 -280 0 0 {name=CONTROL +only_toplevel=true +value=" +vload plus minus 0 +vsun fade 0 0 +vref minus 0 0 +.control +save plus i(vload) +dc vload 0 22 0.5 vsun 0.2 1.0 0.2 +write pv_ngspice.raw +quit +.endc +"} +C {launcher.sym} 930 -140 0 0 {name=h3 +descr="Netlist, Simulate, Reload waves" +tclcommand=" +if \{![info exists sim]\} \{set_sim_defaults\} +set sim(spice,0,fg) 1 +if \{[xschem raw_query loaded]\} \{ ;# Unload + xschem raw_clear +\} +xschem netlist +xschem simulate +xschem raw_read $netlist_dir/[file tail [file rootname [xschem get current_name]]].raw +" +} +C {launcher.sym} 930 -100 0 0 {name=h1 +descr="Load embedded waves" +tclcommand="xschem raw_read_from_attr" +spice_data=" +VGl0bGU6ICoqIHNjaF9wYXRoOiAvaG9tZS9zY2hpcHBlcy94c2NoZW0tcmVwby90cnVuay94c2NoZW1fbGlicmFyeS9uZ3NwaWNlL3B2X25nc3BpY2Uuc2NoCkRhdGU6 +IFR1ZSBTZXAgMjcgMTc6MDQ6MjEgIDIwMjIKUGxvdG5hbWU6IERDIHRyYW5zZmVyIGNoYXJhY3RlcmlzdGljCkZsYWdzOiByZWFsCk5vLiBWYXJpYWJsZXM6IDMKTm8u +IFBvaW50czogMjI1ClZhcmlhYmxlczoKCTAJdih2LXN3ZWVwKQl2b2x0YWdlCgkxCXYocGx1cykJdm9sdGFnZQoJMglpKHZsb2FkKQljdXJyZW50CkJpbmFyeToKAAAA +AAAAAAAAAAAAAAAAABkliAuYCPU/AAAAAAAA4D8AAAAAAADgP2PJI6FN/PQ/AAAAAAAA8D8AAAAAAADwPzn3PsoC8PQ/AAAAAAAA+D8AAAAAAAD4P4fYHXy34/Q/AAAA +AAAAAEAAAAAAAAAAQA2vyIRr1/Q/AAAAAAAABEAAAAAAAAAEQM4hV50ey/Q/AAAAAAAACEAAAAAAAAAIQITIKWHQvvQ/AAAAAAAADEAAAAAAAAAMQFxMdkGAsvQ/AAAA +AAAAEEAAAAAAAAAQQMyZm3MtpvQ/AAAAAAAAEkAAAAAAAAASQJpKDtjWmfQ/AAAAAAAAFEAAAAAAAAAUQH7SwtZ6jfQ/AAAAAAAAFkAAAAAAAAAWQN8JriwXgfQ/AAAA +AAAAGEAAAAAAAAAYQCs+HKSodPQ/AAAAAAAAGkAAAAAAAAAaQLF9AK8qaPQ/AAAAAAAAHEAAAAAAAAAcQHRtptaWW/Q/AAAAAAAAHkAAAAAAAAAeQLLb6u7jTvQ/AAAA +AAAAIEAAAAAAAAAgQH5do/MEQvQ/AAAAAAAAIUAAAAAAAAAhQA99PmznNPQ/AAAAAAAAIkAAAAAAAAAiQBvckyJxJ/Q/AAAAAAAAI0AAAAAAAAAjQK+4eOR8GfQ/AAAA +AAAAJEAAAAAAAAAkQEruU+nVCvQ/AAAAAAAAJUAAAAAAAAAlQEtY20kx+/M/AAAAAAAAJkAAAAAAAAAmQJH3Brsk6vM/AAAAAAAAJ0AAAAAAAAAnQHMzjGYZ1/M/AAAA +AAAAKEAAAAAAAAAoQPlcIUA5wfM/AAAAAAAAKUAAAAAAAAApQPgwJIhUp/M/AAAAAAAAKkAAAAAAAAAqQMFnaDS8h/M/AAAAAAAAK0AAAAAAAAArQFOsQZgMYPM/AAAA +AAAALEAAAAAAAAAsQH/22FwlJvM/AAAAAAAALUAAAAAAAAAtQM0opczc3/I/AAAAAAAALkAAAAAAAAAuQDeiw2hGgfI/AAAAAAAAL0AAAAAAAAAvQJqkk9MyAPI/AAAA +AAAAMEAAAAAAAAAwQCWZ4wUuTvE/AAAAAACAMEAAAAAAAIAwQAr2tWi1VvA/AAAAAAAAMUAAAAAAAAAxQMhr+xVc+e0/AAAAAACAMUAAAAAAAIAxQIhFERKVLeo/AAAA +AAAAMkAAAAAAAAAyQNg/hBDd1OQ/AAAAAACAMkAAAAAAAIAyQGDUc163kdo/AAAAAAAAM0AAAAAAAAAzQIAtZIMW7LQ/AAAAAACAM0AAAAAAAIAzQAB+SO1P+Ni/AAAA +AAAANEAAAAAAAAA0QBBntPq/7/C/AAAAAACANEAAAAAAAIA0QKCBF1fFCwDAAAAAAAAANUAAAAAAAAA1QOCyCRgKygrAAAAAAACANUAAAAAAAIA1QJBq+wkkAxXAAAAA +AAAANkAAAAAAAAA2QIBsjvg00R/AAAAAAAAAAAAAAAAAAAAAABRGp5dXFwVAAAAAAAAA4D8AAAAAAADgP4wfoWkNCwVAAAAAAAAA8D8AAAAAAADwP0eJUPTC/gRAAAAA +AAAA+D8AAAAAAAD4P0AOqDB48gRAAAAAAAAAAEAAAAAAAAAAQEzo0v0s5gRAAAAAAAAABEAAAAAAAAAEQC8mOi3h2QRAAAAAAAAACEAAAAAAAAAIQO2kwHyUzQRAAAAA +AAAADEAAAAAAAAAMQP16lI5GwQRAAAAAAAAAEEAAAAAAAAAQQCeekt32tARAAAAAAAAAEkAAAAAAAAASQKnrzKykqARAAAAAAAAAFEAAAAAAAAAUQC+TKPBOnARAAAAA +AAAAFkAAAAAAAAAWQNskMCv0jwRAAAAAAAAAGEAAAAAAAAAYQOQV/kGSgwRAAAAAAAAAGkAAAAAAAAAaQBcMbDYmdwRAAAAAAAAAHEAAAAAAAAAcQGwiQsmragRAAAAA +AAAAHkAAAAAAAAAeQJpDqvMcXgRAAAAAAAAAIEAAAAAAAAAgQHriQChxUQRAAAAAAAAAIUAAAAAAAAAhQB36IUScRARAAAAAAAAAIkAAAAAAAAAiQKNFag6NNwRAAAAA +AAAAI0AAAAAAAAAjQIxSlxYrKgRAAAAAAAAAJEAAAAAAAAAkQNQ/QK5THARAAAAAAAAAJUAAAAAAAAAlQHjoVJ7VDQRAAAAAAAAAJkAAAAAAAAAmQI5i6Q9r/gNAAAAA +AAAAJ0AAAAAAAAAnQM30l+ew7QNAAAAAAAAAKEAAAAAAAAAoQDuZpoEa2wNAAAAAAAAAKUAAAAAAAAApQN/1XErgxQNAAAAAAAAAKkAAAAAAAAAqQDXsIAvnrANAAAAA +AAAAK0AAAAAAAAArQO2D292cjgNAAAAAAAAALEAAAAAAAAAsQKAWPXDHaANAAAAAAAAALUAAAAAAAAAtQFLdhK31MQNAAAAAAAAALkAAAAAAAAAuQBTdMtqY7wJAAAAA +AAAAL0AAAAAAAAAvQA+MfdWSlgJAAAAAAAAAMEAAAAAAAAAwQIB864dkHQJAAAAAAACAMEAAAAAAAIAwQOB7Wg+UdgFAAAAAAAAAMUAAAAAAAAAxQK73ts0BjwBAAAAA +AACAMUAAAAAAAIAxQHwSgxkVl/4/AAAAAAAAMkAAAAAAAAAyQDgbt3hXC/s/AAAAAACAMkAAAAAAAIAyQDjeC8p+DfY/AAAAAAAAM0AAAAAAAAAzQIB9J0bjBO4/AAAA +AACAM0AAAAAAAIAzQID6P2RdONQ/AAAAAAAANEAAAAAAAAA0QIAS4O7JD+K/AAAAAACANEAAAAAAAIA0QKDAMYi7+vy/AAAAAAAANUAAAAAAAAA1QACI4N+wnwzAAAAA +AACANUAAAAAAAIA1QHAimCCYVBjAAAAAAAAANkAAAAAAAAA2QACnfR/JRCPAAAAAAAAAAAAAAAAAAAAAAP4E71wiuQ9AAAAAAAAA4D8AAAAAAADgPzQAZVOzpg9AAAAA +AAAA8D8AAAAAAADwPy7llwNElA9AAAAAAAAA+D8AAAAAAAD4P0lMlGbUgQ9AAAAAAAAAAEAAAAAAAAAAQMi2/ltkbw9AAAAAAAAABEAAAAAAAAAEQM1N7LXzXA9AAAAA +AAAACEAAAAAAAAAIQC8oNDOCSg9AAAAAAAAADEAAAAAAAAAMQAvvXncPOA9AAAAAAAAAEEAAAAAAAAAQQK5nNf+aJQ9AAAAAAAAAEkAAAAAAAAASQNZYgxAkEw9AAAAA +AAAAFEAAAAAAAAAUQKJUDKOpAA9AAAAAAAAAFkAAAAAAAAAWQGpX2D8q7g5AAAAAAAAAGEAAAAAAAAAYQCY6zNKj2w5AAAAAAAAAGkAAAAAAAAAaQBTPz2gTyQ5AAAAA +AAAAHEAAAAAAAAAcQFJmW9J0tg5AAAAAAAAAHkAAAAAAAAAeQK8v3B7Cow5AAAAAAAAAIEAAAAAAAAAgQB1EhuDykA5AAAAAAAAAIUAAAAAAAAAhQDyKSiH7fQ5AAAAA +AAAAIkAAAAAAAAAiQIRD5OfJag5AAAAAAAAAI0AAAAAAAAAjQEKrGB5HVw5AAAAAAAAAJEAAAAAAAAAkQAbpm5VQQw5AAAAAAAAAJUAAAAAAAAAlQIkMK821Lg5AAAAA +AAAAJkAAAAAAAAAmQFFJ1+8xGQ5AAAAAAAAAJ0AAAAAAAAAnQNhgVVBjAg5AAAAAAAAAKEAAAAAAAAAoQJrUcVK/6Q1AAAAAAAAAKUAAAAAAAAApQDowskOBzg1AAAAA +AAAAKkAAAAAAAAAqQCV7rgOSrw1AAAAAAAAAK0AAAAAAAAArQFsi73hliw1AAAAAAAAALEAAAAAAAAAsQA0h7IvJXw1AAAAAAAAALUAAAAAAAAAtQNTeKpegKQ1AAAAA +AAAALkAAAAAAAAAuQN5E1Ri22wxAAAAAAAAAL0AAAAAAAAAvQFSlXa2mfQxAAAAAAAAAMEAAAAAAAAAwQI4jRcPl/wtAAAAAAACAMEAAAAAAAIAwQF29WkArVQtAAAAA +AAAAMUAAAAAAAAAxQACmDiueagpAAAAAAACAMUAAAAAAAIAxQNxZR4x/JQlAAAAAAAAAMkAAAAAAAAAyQFzIoxXbXwdAAAAAAACAMkAAAAAAAIAyQFSz4K7U4wRAAAAA +AAAAM0AAAAAAAAAzQHAhGhv+ZAFAAAAAAACAM0AAAAAAAIAzQAA3RhTD7fg/AAAAAAAANEAAAAAAAAA0QICh7q1V/uU/AAAAAACANEAAAAAAAIA0QMCdefA+beG/AAAA +AAAANUAAAAAAAAA1QEASfO6+TwLAAAAAAACANUAAAAAAAIA1QGCgKwzGChPAAAAAAAAANkAAAAAAAAA2QBBdrxw3hyDAAAAAAAAAAAAAAAAAAAAAANK4uRLWNBVAAAAA +AAAA4D8AAAAAAADgPx90bSaMKBVAAAAAAAAA8D8AAAAAAADwP55HWhtCHBVAAAAAAAAA+D8AAAAAAAD4P/3DdO73DxVAAAAAAAAAAEAAAAAAAAAAQFB7kJGtAxVAAAAA +AAAABEAAAAAAAAAEQAlxkPBi9xRAAAAAAAAACEAAAAAAAAAIQLHi6e4X6xRAAAAAAAAADEAAAAAAAAAMQDUHHGTM3hRAAAAAAAAAEEAAAAAAAAAQQM3crBaA0hRAAAAA +AAAAEkAAAAAAAAASQP43DLUyxhRAAAAAAAAAFEAAAAAAAAAUQLa5e8vjuRRAAAAAAAAAFkAAAAAAAAAWQFbiu7WSrRRAAAAAAAAAGEAAAAAAAAAYQEd0uIo+oRRAAAAA +AAAAGkAAAAAAAAAaQPcrsP/llBRAAAAAAAAAHEAAAAAAAAAcQKf0RT+HiBRAAAAAAAAAHkAAAAAAAAAeQKDKaq8ffBRAAAAAAAAAIEAAAAAAAAAgQCkI8J6rbxRAAAAA +AAAAIUAAAAAAAAAhQOSojtAlYxRAAAAAAAAAIkAAAAAAAAAiQBOv6dSGVhRAAAAAAAAAI0AAAAAAAAAjQBHYAB/ESRRAAAAAAAAAJEAAAAAAAAAkQPj/7LXOPBRAAAAA +AAAAJUAAAAAAAAAlQDY8iFqRLxRAAAAAAAAAJkAAAAAAAAAmQG7LTebtIRRAAAAAAAAAJ0AAAAAAAAAnQDxGJJC5ExRAAAAAAAAAKEAAAAAAAAAoQOmg26C3BBRAAAAA +AAAAKUAAAAAAAAApQGiMnu+R9BNAAAAAAAAAKkAAAAAAAAAqQAomSjjO4hNAAAAAAAAAK0AAAAAAAAArQIJ43Pm+zhNAAAAAAAAALEAAAAAAAAAsQNGRmf1ttxNAAAAA +AAAALUAAAAAAAAAtQDfgot59mxNAAAAAAAAALkAAAAAAAAAuQJqgqMz+eBNAAAAAAAAAL0AAAAAAAAAvQNiEeni7RxNAAAAAAAAAMEAAAAAAAAAwQEalvyFvDBNAAAAA +AACAMEAAAAAAAIAwQCBQa3pvvRJAAAAAAAAAMUAAAAAAAAAxQOjqJwV7UhJAAAAAAACAMUAAAAAAAIAxQCvdupLavxFAAAAAAAAAMkAAAAAAAAAyQH4yhhfu9BBAAAAA +AACAMkAAAAAAAIAyQMzevus7tA9AAAAAAAAAM0AAAAAAAAAzQDDBnxzfmwxAAAAAAACAM0AAAAAAAIAzQFh9wCvBQQhAAAAAAAAANEAAAAAAAAA0QLBcNd4LHwJAAAAA +AACANEAAAAAAAIA0QGAUdQHP6PI/AAAAAAAANUAAAAAAAAA1QAAm/tSYbda/AAAAAACANUAAAAAAAIA1QMC19AKVKATAAAAAAAAANkAAAAAAAAA2QMDc1UWEXxbAAAAA +AAAAAAAAAAAAAAAAAN5ZHWx6lBpAAAAAAAAA4D8AAAAAAADgP2+TJRoehRpAAAAAAAAA8D8AAAAAAADwP93J5q7BdRpAAAAAAAAA+D8AAAAAAAD4PxrV4CdlZhpAAAAA +AAAAAEAAAAAAAAAAQMqlb3kIVxpAAAAAAAAABEAAAAAAAAAEQNpTDpOrRxpAAAAAAAAACEAAAAAAAAAIQK3ES11OOBpAAAAAAAAADEAAAAAAAAAMQHb/47bwKBpAAAAA +AAAAEEAAAAAAAAAQQO9GonCSGRpAAAAAAAAAEkAAAAAAAAASQFeLiUczChpAAAAAAAAAFEAAAAAAAAAUQHwfitzS+hlAAAAAAAAAFkAAAAAAAAAWQE8Lvqhw6xlAAAAA +AAAAGEAAAAAAAAAYQPFFt+wL3BlAAAAAAAAAGkAAAAAAAAAaQMLvzpijzBlAAAAAAAAAHEAAAAAAAAAcQNL/his2vRlAAAAAAAAAHkAAAAAAAAAeQMJP1YHBrRlAAAAA +AAAAIEAAAAAAAAAgQHCacJNCnhlAAAAAAAAAIUAAAAAAAAAhQLqdvhK1jhlAAAAAAAAAIkAAAAAAAAAiQIq+f+QSfxlAAAAAAAAAI0AAAAAAAAAjQBIRWV5TbxlAAAAA +AAAAJEAAAAAAAAAkQEunSzRqXxlAAAAAAAAAJUAAAAAAAAAlQMyDH/NFTxlAAAAAAAAAJkAAAAAAAAAmQPSpi9fNPhlAAAAAAAAAJ0AAAAAAAAAnQChqsL3eLRlAAAAA +AAAAKEAAAAAAAAAoQMMdzcdGHBlAAAAAAAAAKUAAAAAAAAApQJOvajK/CRlAAAAAAAAAKkAAAAAAAAAqQD2Gd5Lj9RhAAAAAAAAAK0AAAAAAAAArQBN54mcl4BhAAAAA +AAAALEAAAAAAAAAsQDGi/Xq6xxhAAAAAAAAALUAAAAAAAAAtQE+R89WDqxhAAAAAAAAALkAAAAAAAAAuQANedkHqiRhAAAAAAAAAL0AAAAAAAAAvQEKVjt+rYBhAAAAA +AAAAMEAAAAAAAAAwQA6s7aA3JhhAAAAAAACAMEAAAAAAAIAwQJ87BDkR4BdAAAAAAAAAMUAAAAAAAAAxQDbZUN/0ghdAAAAAAACAMUAAAAAAAIAxQFg/WFJDBRdAAAAA +AAAAMkAAAAAAAAAyQKt0WwtVWRZAAAAAAACAMkAAAAAAAIAyQKjNBafJaxVAAAAAAAAAM0AAAAAAAAAzQLZmLAUiIRRAAAAAAACAM0AAAAAAAIAzQOzoJCdZUhJAAAAA +AAAANEAAAAAAAAA0QIBI//sfkA9AAAAAAACANEAAAAAAAIA0QEAKcVhmZwhAAAAAAAAANUAAAAAAAAA1QACsoYcGl/w/AAAAAACANUAAAAAAAIA1QAAAAAAAAAAAAAAA +AAAANkAAAAAAAAA2QACfbNc4PATA"}