U #g%@sBddlZddlZddddgZddZdd Zd dZGd d d eZdd ddddddddddddddddddd d!d"d#gd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;gdd?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSgdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkgdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddgddddddddddddddddddddddddgddddddddddddddddddddddddgddddddddddddddddddddddddgddddddddddddddddddddddddgddddddddddddddddddddddddgdddddddddddddd d d d d ddddddgddddddddddddd d!d"d#d$d%d&d'd(d)d*d+gd,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCgdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[gd\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsgdtdudvdwdxdydzd{d|d}d~dddddddddddddgddddddddddddddddddddddddgddddddddddddddddddddddddgddddddddÐdĐdŐdƐdǐdȐdɐdʐdːd̐d͐dΐdϐdАdѐdҐdgdԐdՐd֐dאdؐdِdڐdېdܐdݐdސdߐddddddddddddggZdd ddd$d%ddd(d)d*d+d,d-d.d/dDdEd2d3dHdIdJdKgd&d'dd?d@dAdBdCdXdYdFdGd\d]d^d_d`dadbdcddgdTdUdVdWdddZd[ddddddddd0d1ddd4d5d6d7gdLdMdNdOdddedRdSdhdidjdkdddddpdqdddtdudvdwgdfdgd d!d"d#dldmdndodddrdsddddddddddgd8d9d:d;dPdQddddddddddddddddddgdxdydzd{ddd~dddddddddddddddddgddddddddddddddddddːddddddgddddd|d}ddddddddddddddddddgddddddddddddd d!d"d#ddݐd&d'ddddgddddddddddddddddddddddddgdddddddddd d d d d ddd$d%ddd(d)d*d+gd,d-d.d/dDdEd2d3dHdIdJdKdLdMdNdOdddedRdSdhdidjdkgdFdGd\d]d^d_d`dadbdcdxdydfdgd|d}d~dddddd<d=gdtdudvdwd0d1dzd{d4d5d6d7d8d9d:d;dPdQd>d?dTdUdVdWgdldmdndodddrdsdddddԐdՐd֐dאdddڐdېddddgddd@dAdBdCdddddddddddddddddĐdgdXdYdZd[dpdqddddddddddÐdؐdِdƐdǐdܐdݐdސdgdddddddddddddddddАdѐddddddgdddȐdɐdʐdːd̐d͐dΐdϐdddҐdӐddddddddddgddddddddddddddddddddddddgdddddd d d d d ddddddddddddddgddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3gd4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKgdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcgdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{gd|d}d~dddddddddddddddddddddggZ dd ddd$d%d@dAdBdCdXdYddddd0d1dLdMdNdOdddegd&d'dd?dZd[ddddd2d3dHdIdJdKdfdgd d!d"d#gdTdUdVdWddd,d-d.d/dDdEd`dadbdcddd8d9d:d;dPdQgddd(d)d*d+dFdGd\d]d^d_ddd4d5d6d7dRdSdhdidjdkgdldmdndodddddddddxdydzd{ddddddddgdddddddddtdudvdwddddddddddddgdddddpdqddddddddddd|d}ddddddgdrdsddddddddddd~dddddddddddgddddddddddddddddddd d ddd$d%gdddddddddddddddd d d d&d'ddddgddddddddddddd d!d"d#ddddddddgddddddddddddddddddddd(d)d*d+gd,d-d.d/dDdEd`dadbdcdxdyd8d9d:d;dPdQdldmdndoddgdFdGd\d]d^d_dzd{d4d5d6d7dRdSdhdidjdkddd@dAdBdCgdtdudvdwd0d1dLdMdNdOdddeddddd<d=dXdYdZd[dpdqgd2d3dHdIdJdKdfdgd|d}d~dd>d?dTdUdVdWdrdsddddgddddddddddÐdؐdِddddddd̐d͐dΐdϐddgdddddddڐdېdddddddȐdɐdʐdːddddddgdԐdՐd֐dאdddddddĐdŐdddddddddddАdgdddddddƐdǐdܐdݐdސdߐdddddddҐdӐddddgdddddddddddd d"d#d$d%d&d'd@dAdBdCdDdEgddddddddddd d!d:d;d<d=d>d?ddddddgddddddd4d5d6d7d8d9ddddddd.d/d0d1d2d3gddddddd d d d ddd(d)d*d+d,d-dFdGdHdIdJdKgdLdMdNdOdPdQdjdkdldmdndoddddddddddddgdddedfdgdhdiddddddd^d_d`dadbdcddddddgd|d}d~ddddXdYdZd[d\d]dvdwdxdydzd{ddddddgdRdSdTdUdVdWdpdqdrdsdtduddddddddddddgddddddddddddddddddddddddgdĐdŐdƐdǐdȐdɐdʐdːd̐d͐dΐdϐdАdѐdҐdӐdԐdՐd֐dאdؐdِdڐdgdܐdݐdސdߐddddddddddddddddddddgdddddddddddddddddddddd d d gd d ddddddddddddddddddd d!d"d#gd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;gd<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSgdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkgdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddgddddddddddddddddddddddddgddddddddddddddddddddddddgddddddddddddddddÐdĐdŐdƐdǐdȐdɐdʐdgd̐d͐dΐdϐdАdѐdҐdӐdԐdՐd֐dאdؐdِdڐdېdܐdݐdސdߐddddgddddddddddddddddddddddddgdddddddddddddd d d d d ddddddgddddddddddddd d!d"d#d$d%d&d'd(d)d*d+gd,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCgdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[gd\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsgdtdudvdwdxdydzd{d|d}d~dddddddddddddgddddddddddddddddddddddddgddddddddddddddddddddddddgddddddddÐdĐdŐdƐdǐdȐdɐdʐdːd̐d͐dΐdϐdАdѐdҐdgdԐdՐd֐dאdؐdِdڐdېdܐdݐdސdߐddddddddddddgg4Z dd ddCdXdYd2d3dHd!d"d#ddddddd~dddddgdd$d%dZd[ddIdJdKd8d9d:ddpdqdddddddddgd&d'dd?d,d-d.dcdddRdSdhddddxdydzddddddgdTdUdVd/dDdEddd4didjdkdddd{ddddddddgdWdddFdGd\d5d6d7dldmdnddddddddddddgddd(d]d^d_dLdMdNdodddddtdddddddddgd)d*d+ddddOdddeddddudvdwdddddddddgd@dAdBdd0d1dfdgd dddddddd|d}ddddddgddddddd&d'dd]d^d_dLdMdNdd<d=drdsddddgddddddddddtdudvdOddded>d?dTddddddgdddԐd d d ddddwd0d1dfdgd|dUdVdWddddÐdؐdgdddאd d!d"dddd2d3dHd}d~ddldmdnddddڐdېdgdddd#ddݐddd(dIdJdKd8d9d:doddddddddgddddddd)d*d+d`dadbd;dPdQddd@ddddddgddddddd,d-d.dcdxdydRdSdhdAdBdCdԐdՐd֐ddĐdgdddd d dd/dDdEdzd{d4didjdkdXdYdZdאdddƐdǐdgdddڐdd$d%dFdGd\d5d6d7dddd[dpdqddddݐdސdgddddϐddddddd d!dddd1d2d3dRdSdTdsdtdugdddddddddd4d5d6ddddFdGdHdUdVdWdddgdddȐddddddd7d8d9d(d)d*dIdJdKdjdkdldddgdɐdʐdːddddddd d d d+d,d-dLdMdNdmdndod^d_d`gdddddАdѐdddd ddd@dAdBdOdPdQddddadbdcgddddҐdӐddddd"d#d$dCdDdEdddedfddddvdwdxgdddddddddd%d&d'ddddgdhdidXdYdZdydzd{gddddddddd d:d;d<dddd|d}d~d[d\d]dddgd̐d͐dΐddddddd=d>d?d.d/d0ddddpdqdrdddgdddddddʐdːd̐dӐdԐdՐdddd?d@dAdZd[d\dcdddegddddĐdŐdƐd͐dΐdϐdddddddTdUdVd]d^d_ddd gddddǐdȐdɐddddddddddWdXdYdddd!d"d#gddddܐdݐdސddddddd d d ddddddd6d7d8gddddߐddddddddd d ddddd0d1d2d9d:d;gdddddddddddddddd*d+d,d3d4d5dNdOdPgddddddddddddÐd$d%d&d-d.d/dHdIdJdQdRdSgdddddddddd֐dאdؐd'd(d)dBdCdDdKdLdMdfdgdhgdddddddАdѐdҐdِdڐdېd<d=d>dEdFdGd`dadbdidjdkgdldmdndudvdwddddddddddddd d!d"d)d*d+gdodpdqdddddddddddddddd#d$d%d,d-d.gdddddddddddddddddddސdߐdd/d0d1gddddddddddƐdǐdȐddddؐdِdڐddddDdEdFgddddddddddɐdʐdːdҐdӐdԐdېdܐdݐddddGdHdIgdddddddÐdĐdŐd̐d͐dΐdՐd֐dאddddddd\d]d^gddddddd~dddϐdАdѐdddddddddd_d`dagddddxdydzddddddddddd d ddddtdudvgdrdsdtd{d|d}dddddddddd d d d&d'd(dwdxdygd2d3d4d;d<d=dVdWdXdddddÐdĐdːd̐d͐ddddddgd5d6d7dPdQdRdYdZd[ddddŐdƐdǐdddddddddgdJdKdLdSdTdUdndodpddddڐdېdܐdddddddddgdMdNdOdhdidjdqdrdsdԐdՐd֐dݐdސdߐdddddddddgdbdcdddkdldmddddאdؐdِddddddddddddgdedfdgddddddddddddddddddddd gdzd{d|dddddddddddddddd d d d ddgd}d~dd>d?d@ddddddddddΐdϐdАddddddgd8d9d:dAdBdCdddddddȐdɐdʐdѐdҐdӐddddddgddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3gd4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKgdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcgdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{gd|d}d~dddddddddddddddddddddgddddddddddddddddddddddddgddddddddddddddddddddddddgdĐdŐdƐdǐdȐdɐdʐdːd̐d͐dΐdϐdАdѐdҐdӐdԐdՐd֐dאdؐdِdڐdgdܐdݐdސdߐddddddddddddddddddddgg?Z dd dddXdYdZd[dHdIdJdKd8d9d:d;dpdqdrdsddddgd$d%d&d'ddddd`dadbdcdPdQdRdSdddddxdydzd{gdd?d,d-d.d/dddddhdidjdkddddddddgdTdUdVdWdDdEdFdGd4d5d6d7dldmdndoddddddddgddddd\d]d^d_dLdMdNdOdddddtdudvdwddddgd(d)d*d+dddddddedfdgddddddddd|d}d~dgd@dAdBdCd0d1d2d3d d!d"d#ddddddddddddgddddddddddddאd d!d"d#dddddHdIdJdKgddddddddddddddddߐd(d)d*d+d`dadbdcgddddddddddddddddd,d-d.d/dxdydzd{gddddddddӐddddd d dddDdEdFdGd4d5d6d7gddddddddddddېd$d%d&d'd\d]d^d_dLdMdNdOgddddːdddddddddddddtdudvdwdddedfdggddddϐdddddd d d ddddd0d1d2d3d|d}d~dgd8d9d:d;ddddddddddddddddddddgdPdQdRdSd@dAdBdCdԐdՐd֐dאdĐdŐdƐdǐddddddddgdhdidjdkdXdYdZd[dddddܐdݐdސdߐd̐d͐dΐdϐddddgdddddpdqdrdsddddddddddddddddgd<d=d>d?ddddddddÐddddddddddddgdTdUdVdWdddddؐdِdڐdېdȐdɐdʐdːddddddddgdldmdndodddddddddddddАdѐdҐdӐddddgddddd&d'd:d;ddddd|d}d~dd\d]dpdqddddgdd ddd<d=d>d?d.d/d0d1dddRdSdrdsdtduddddgddd d!ddddd2d3dFdGdTdUdVdWddddddddgd4d5d6d7ddd(d)dHdIdJdKdjdkdldmddd^d_ddddgd8d9d d d*d+d,d-dLdMdNdOdndoddd`dadbdcddddgd d ddd@dAdBdCdPdQdddedddddvdwdxdyddddgd"d#d$d%dDdEdddfdgdhdidXdYdZd[dzd{ddddddgdddddddʐdːdҐdӐdԐdՐddddd@dAdTdUd\d]d^d_gdddĐdŐd̐d͐dΐdϐdddddddddVdWdXdYddddgdƐdǐdȐdɐdddddddddd d d ddddddd0d1gdܐdݐdސdߐddddddddd d ddddd*d+d2d3d4d5gddddddddddddddd$d%d,d-d.d/dHdIdJdKgddddddddddÐd֐dאd&d'd(d)dBdCdDdEdLdMd`dagdddddddАdѐdؐdِdڐdېd<d=d>d?dFdGdZd[dbdcdddegddd d!dpdqdddddddddddddƐdǐddddgd"d#d6d7dddddddddddddȐdɐdʐdːdҐdӐdԐdgd8d9d:d;ddddddddddÐdĐdŐd̐d͐dΐdϐd֐dאddgdNdOdPdQddddddddd~ddddАdѐddddddgdRdSdfdgdddddxdydzd{ddddddddddddgdhdidjdkdrdsdtdud|d}ddddddddddddddgdldmdndodvdwddddddddddddddddddgdؐdِdڐdېdddddFdGdHdIdbdcdddedldmddddddgdܐdݐddddddd\d]d^d_dfdgdzd{ddddddddgddddddddd`dadtdud|d}d~dd>d?d@dAddddgdd d d ddd&d'dvdwdxdyd8d9d:d;dBdCdVdWddddgd d d d!d(d)d*d+d2d3d4d5d<d=dPdQdXdYdZd[ddddgd"d#d$d%d,d-d.d/d6d7dJdKdRdSdTdUdndodpdqdddԐdgdސdߐddd0d1dDdEdLdMdNdOdhdidjdkdrdsddd֐dאdؐdgddddddddddddd d d dddddddĐdŐdgdddddddddΐdϐdАdѐdddddddddܐdݐdސdgdddddȐdɐdʐdːdҐdӐdddddddddd4d d!d7d8gddÐdĐdŐd̐d͐ddddddddddd5d6dLdMd9dOdPdQgdƐdǐdڐdېdddddddddddddNdddedfdgdhdidgdܐdݐdސdߐddddddddddddd|d}d~dddddgddddddddddddddd d ddddddddgdǐdȐdɐdߐdːd̐dddϐddddddd+ddd.d/dd1d2d3gddd"d#dd%d&d'd(d)d*d@d,d-dCdDd0dFdGdHdIdJdKdagd$d:d;d<d=d>d?dUdAdBdXdYdEd[d\d]d^d_d`dvdbdcdydzgdRdSdTdjdVdWdmdndZdpdqdrdsdtduddwdxddd{dddgdkdldddodddddddddddddddddddgdddddddddddddddddddd֐ddÐdِdgddddʐddd͐dΐddАdѐdҐdӐdԐdՐddאdؐdddېdddgdddddddddddddddddddddd d d gd d ddddddddddddddddddd d!d"d#gd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;gd<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSgdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkgdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddgddddddddddddddddddddddddggFZ dd ddd$d%d&d'dDdEdFdGd\d]d^d_d d!d"d#d8d9d:d;ddddddddd|d}d~dddddddddddddddddddddddddd(d)d*d+d4d5d6d7dLdMdNdOdldmdndodddddddddddddȐdɐdʐdːddddddddddddd8d9d d d d ddddddd.d/d0d1djdkdldmdndoddgdd?dTdUdVdWddddd0d1d2d3dPdQdRdSdhdidjdkdtdudvdwdddddddddddddddddddddd d d d d!d"d#d,d-d.d/dDdEdFdGdddedfdgd|d}d~dd@dAdBdCdXdYdZd[ddddÐdؐdِdڐdېddddddddddddddddd"d#d$d%d&d'd:d;d2d3dFdGdHdIdJdKdddddXdYdZd[gddddd(d)d*d+dHdIdJdKd`dadbdcdldmdndoddddddddddddddddddddddddddddddddddddd\d]d^d_dtdudvdwd8d9d:d;dPdQdRdSdpdqdrdsddddddddddddd̐d͐dΐdϐddddddddddddd<d=d>d?dddddLdMdNdOdPdQddded\d]dpdqdrdsdtdugd@dAdBdCdXdYdZd[ddddd4d5d6d7dddddddddxdydzd{ddddddddddddddddddddd d ddd$d%d&d'd0d1d2d3dHdIdJdKdhdidjdkdddddddddddddĐdŐdƐdǐdܐdݐdސdߐdddddddddddddd ddddd(d)d*d+d,d-dfdgdhdid|d}d~dddddddd^d_gddddd,d-d.d/dLdMdNdOdddedfdgdpdqdrdsddddddddddddddddddddddddddddddddddddd`dadbdcdxdydzd{d<d=d>d?dTdUdVdWdddddԐdՐd֐dאdddddddddАdѐdҐdӐddddddd d!d4d5d6d7d@dAdBdCdDdEdddddRdSdTdUdVdWd`dadbdcdvdwdxdygdzd{dddddddƐdǐdȐdɐdܐdݐdސdߐdddddddАdѐdddddd d d d,d-d.d/dBdCdDdEddd d!d"d#d6d7ddddddddddddddddd̐d͐dΐdϐdАdѐddddddddddddddddddd2d3d4d5d6d7dJdKdldmdddddddddddddddddddddddҐdӐddddddgdddddddddddddddddҐdӐdԐdՐddddd d ddddd$d%dFdGdZd[d\d]d^d_d8d9d:d;dNdOdPdQdrdsdtdudvdwddddddddÐdĐdŐdddddddddؐdِdڐdېdܐdݐddddd&d'd(d)d*d+dLdMdNdOdbdcddded>d?d@dAdBdCdVdWdddԐdՐd֐dאdؐdِdddddȐdɐdʐdːddddddddgdddddddddddddddʐdːddddddddd&d'd(d)d<d=d>d?ddddddd0d1dRdSdfdgdhdidjdkddddddddd~ddddddddddddddddddddd d d d,d-d.d/d0d1dDdEdfdgdzd{d|d}d~ddXdYdZd[dndodpdqddddddddd̐d͐ddddddddddd d d dgddddddddd̐d͐dΐdϐddddddddddÐd֐dאd@dAdTdUdVdWdXdYd2d3d4d5dHdIdJdKdldmdndodpdqdddddddddddddddddddҐdӐdԐdՐd֐dאddd d d d!d"d#d$d%dFdGdHdId\d]d^d_d8d9d:d;d<d=dPdQdrdsddddddddddddÐdĐdŐddddddddddddddddgdddddddĐdŐdddddddddؐdِdڐdېddddddddddd*d+dLdMd`dadbdcdddedddddddddxdydzd{d|d}dddddƐdǐdȐdɐdʐdːdddddddddސdߐddddddd`dadtdudvdwdxdydRdSdTdUdhdidjdkdddddddddƐdǐdڐdېdܐdݐdސdߐdddddΐdϐdАdѐddddddddgddddddd d dܐdݐdސdd d!d7d8dkdldddddddϐdddd(d)d*d@dsdtduddddddאdؐdddd1d2d3d$d%d&d'd<d=d>d?dpdqdrdsddddddddd0d1d2d3dddedfdgd|d}d~dddddddddddddddddddddddddddddddddddddddddÐdĐdŐdƐdǐdȐdɐdʐdgddddddddd9dOdPdQdgdhdidddddʐdːd̐dddAdBdXdYdZdpdqdrdddddӐdԐdՐddIdJdKdadbdcdydzdTdUdVdWdldmdndodddddddddHdIdJdKd`dadbdcdddddd d d d̐d͐dΐdϐdАdѐdҐdӐdԐdՐd֐dאdؐdِdڐdېdܐdݐdސdߐddddddddddddddddddddddddddddgdddd4d5d6dLdMdddddddddd%d&d'd=d>d?dUddddddddddd.d/d0dFdGdHd{dddddddddddddddd,d-d.d/dDdEdFdGdxdydzd{ddddd d!d"d#d8d9d:d;dddddddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+gdNdddedfd|d}d~ddǐdȐdɐdߐddd"d#dVdWdmdndodddddАdѐdҐdddd+d^d_d`dvdwdxddddÐdِdڐdېdddddddd(d)d*d+d\d]d^d_dtdudvdwdddddddddPdQdRdSdhdidjdkd,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[gddddddĐdŐdƐd$d:d;d<dRdSdTdjddddddd͐dΐd,d-dCdDdEd[d\d]dddddddd֐ddddd d ddd@dAdBdCdXdYdZd[ddddddddd4d5d6d7dLdMdNdOddddddddd\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddggZ dd dddddddddddldmdndodtdudvdwd|d}d~dgd$d%d&d'd,d-d.d/d4d5d6d7ddddddddddddgdd?dDdEdFdGdLdMdNdOddddddddddddgdTdUdVdWd\d]d^d_dddedfdgddddddddddddgddddddddd d!d"d#dpdqdrdsdxdydzd{ddddgd(d)d*d+d0d1d2d3d8d9d:d;ddddddddddddgd@dAdBdCdHdIdJdKdPdQdRdSddddddddddddgdXdYdZd[d`dadbdcdhdidjdkddddddddddddgddddddddddddߐd,d-d.d/d4d5d6d7d<d=d>d?gdddddddddddddDdEdFdGdLdMdNdOdTdUdVdWgddddddddd d ddd\d]d^d_dddedfdgdldmdndogddddddddd$d%d&d'dtdudvdwd|d}d~dddddgddddddddddddd0d1d2d3d8d9d:d;d@dAdBdCgdddddddddddddHdIdJdKdPdQdRdSdXdYdZd[gdddddd d d ddddd`dadbdcdhdidjdkdpdqdrdsgddddd d!d"d#d(d)d*d+dxdydzd{ddddddddgddddddddddddddddddd d!ddd(d)gddddddddddddddddd4d5d6d7d*d+d,d-gdddddĐdŐdƐdǐd̐d͐dΐdϐddddd8d9d d d@dAdBdCgdԐdՐd֐dאdܐdݐdސdߐddddddddd d dddDdEddgddddddddddddddddd"d#d$d%ddddgddddddddddddddddd&d'd:d;d.d/d0d1gddddÐdȐdɐdʐdːdАdѐdҐdӐddddd<d=d>d?d2d3dFdGgdؐdِdڐdېdddddddddd dddddddHdIdJdKgdLdMdNdOdddddzd{ddddddd̐d͐dΐdϐddddgdPdQdddedXdYdZd[dddddddĐdŐddddddddgdfdgdhdid\d]dpdqdddddƐdǐdȐdɐddddddddgd|d}d~ddrdsdtdudddddܐdݐdސdߐddddddÐd֐dgdddRdSdddddddddddddddddؐdِdڐdgdTdUdVdWddd^d_dddddddddddАdѐddddgdjdkdldmd`dadbdcdddddddddҐdӐdԐdՐddddgdndodddvdwdxdydddddddʐdːdddddd d d gd d ddd,d-d.d/dLdMd`dadldmdndoddddddddgddd$d%dBdCdDdEdbdcdddedpdqddddddddÐdĐdgd&d'd(d)dFdGdZd[ddd d!ddddddddd~dddgd<d=d>d?d\d]d^d_d"d#d6d7ddddddddddddgd@dAdTdUddddd8d9d:d;dddddxdydzd{ddddgdVdWdXdYddd0d1dNdOdPdQddddd|d}ddddddgddddd2d3d4d5dRdSdfdgdrdsdtdudddddddƐdgddd*d+dHdIdJdKdhdidjdkdvdwdddddddȐdɐdʐdgd̐d͐dΐdϐddddd d d d!d,d-d.d/dLdMdNdOdldmddgdАdѐddddddd"d#d$d%d0d1dDdEdbdcdddeddddgdddddddddސdߐdddFdGdHdIdfdgdzd{d>d?d@dAgddddddddddddd\d]d^d_d|d}d~ddBdCdVdWgdddddؐdِdڐdېddddd`dadtdud8d9d:d;dXdYdZd[gdddddܐdݐdddddddvdwdxdyd<d=dPdQdndodpdqgdҐdӐdԐdՐddddddd&d'd2d3d4d5dRdSdTdUdrdsddgd֐dאdddd d d d(d)d*d+d6d7dJdKdhdidjdkddddgddddddddd̐d͐ddddddddddddddgddddddÐdĐdŐddddddddddd d ddĐdŐdgdddddƐdǐdڐdېdddddddddddddܐdݐdސdgdddddܐdݐdސdߐddddd d d dddddd d!d7d8gdddԐdՐdddddddddddddddd4d9dOdPdQgd֐dאdؐdِdddddΐdϐdАdѐddddd5d6dLdMdgdhdidgdddddddddҐdӐdddddddNdddedfddddgdddddȐdɐdʐdːddddddddd|d}d~dddddgdǐdȐdɐdߐdd%d&d'dAdBdXdYdsdtdudddddddÐdِdgddd"d#d=d>d?dUdZdpdqdrdddddddd֐dېdddgd$d:d;d<dVdWdmdndddddddddאdؐddddddgdRdSdTdjdoddddddddӐdԐdՐddd1d2d3d d ddgdkdlddddddddАdѐdҐddd.d/dIdJdKdad$d%d&d'gddddddd͐dΐdddd+d0dFdGdHdbdcdydzd<d=d>d?gddddʐdϐdddd,d-dCdDd^d_d`dvd{ddddTdUdVdWgdːd̐ddd(d)d*d@dEd[d\d]dwdxdddddddldmdndogddddddddddddd4d5d6d7dPdQdRdSddddgddddddddd0d1d2d3dLdMdNdOdhdidjdkddddgddddd,d-d.d/dHdIdJdKdddedfdgddddd,d-d.d/gd(d)d*d+dDdEdFdGd`dadbdcd|d}d~dddddd0d1d2d3gd@dAdBdCd\d]d^d_dxdydzd{ddddddddd\d]d^d_gdXdYdZd[dtdudvdwdddddd d d ddddd`dadbdcgdpdqdrdsddddddddd d!d"d#d̐d͐dΐdϐddddgddddddddddddd8d9d:d;dАdѐdҐdӐddddgdԐdՐd֐dאdddddldmdndodDdEdFdGddddddddgdؐdِdڐdېdddddpdqdrdsdHdIdJdKd d!d"d#ddddgdddddܐdݐdސdߐdddddtdudvdwdLdMdNdOd$d%d&d'gdd d d dddddddddxdydzd{dPdQdRdSd(d)d*d+gd4d5d6d7d d ddddddddddd|d}d~ddTdUdVdWgd8d9d:d;ddddddddddddÐdddddXdYdZd[gdddedfdgd<d=d>d?dddddddddĐdŐdƐdǐddddgdhdidjdkd@dAdBdCdddddddddȐdɐdʐdːddddggPZdd ddd$d%dZd[ddddd`dadbdcdddRdSdhdidjdkgd&d'dd?d,d-d.d/dDdEddd4d5d6d7dldmdndoddgdTdUdVdWdddFdGd\d]d^d_dLdMdNdOdddeddddddgddd(d)d*d+ddddd0d1dfdgd d!d"d#dddddpdqgd@dAdBdCdXdYd2d3dHdIdJdKd8d9d:d;dPdQdrdsddddgddddddddddddddddddddddddgdddtdudvdwddddd|d}ddddddːddddddgddddddd~dddddddddddddddddgddddddddddddddddddddddddgdxdydzd{ddddddddddddddѐddddddgddddddd&d'dddddtdudvdwd0d1dfdgd|d}d~dgdddd d d ddddddd2d3dHdIdJdKd8d9d:d;dPdQgd d!d"d#ddݐddd(d)d*d+d`dadbdcdxdydRdSdhdidjdkgddddddd,d-d.d/dDdEdzd{d4d5d6d7ddddd<d=gd d ddd$d%dFdGd\d]d^d_dLdMdNdOddded>d?dTdUdVdWgdldmdndodddddddddddddĐdŐddddddgddd@dAdBdCdԐdՐd֐dאdddƐdǐdܐdݐdސdߐd̐d͐dΐdϐddgdXdYdZd[dpdqddddddddddddddddddgdrdsddddddddÐdؐdِdddȐdɐdʐdːdddddАdgdddddddڐdېdddddddddddҐdӐddddgddddddddddd d!dddddddFdGdHdIdJdKgddddddd4d5d6d7d8d9d(d)d*d+d,d-dLdMdNdOdPdQgddddddd d d d ddd@dAdBdCdDdEdddedfdgdhdigddddddd"d#d$d%d&d'ddddddd|d}d~dddgdddddd d:d;d<d=d>d?d.d/d0d1d2d3dRdSdTdUdVdWgdjdkdldmdndod^d_d`dadbdcddddddddddddgdddddddvdwdxdydzd{ddddddddddddgdXdYdZd[d\d]dddddddddddddʐdːd̐d͐dΐdgdpdqdrdsdtdudddddddĐdŐdƐdǐdȐdɐddddddgdddddddddddddܐdݐdސdߐddddddddgddddddd֐dאdؐdِdڐdېd<d=d>d?d@dAdZd[d\d]d^d_gdАdѐdҐdӐdԐdՐdddddddTdUdVdWdXdYddddddgdddddddddd d d ddddddd0d1d2d3d4d5gddddddd d ddddd*d+d,d-d.d/dHdIdJdKdLdMgddddddÐd$d%d&d'd(d)dBdCdDdEdFdGd`dadbdcdddegddd d!d"d#ddddddddddddddddÐdĐdgd6d7d8d9d:d;ddddddddddddd~dddddgdNdOdPdQdRdSdddddddxdydzd{d|d}ddddddgdfdgdhdidjdkdrdsdtdudvdwddddddddddddgdldmdndodpdqdddddddddddddƐdǐdȐdɐdʐdgd̐d͐dΐdϐdАdѐdddddddd d d d d d&d'd(d)d*d+gddddddddddddd d!d"d#d$d%d,d-d.d/d0d1gdddddddddddddސdߐdddddDdEdFdGdHdIgdddddddؐdِdڐdېdܐdݐddddddd\d]d^d_d`dagdҐdӐdԐdՐd֐dאdddddddddddddtdudvdwdxdygd2d3d4d5d6d7dPdQdRdSdTdUdndodpdqdrdsdԐdՐd֐dאdؐdgdJdKdLdMdNdOdhdidjdkdldmddddddddddddgdbdcdddedfdgddddddddddddddddddgdzd{d|d}d~dd>d?d@dAdBdCddddddddÐdĐdŐdƐdgd8d9d:d;d<d=dVdWdXdYdZd[dddddddڐdېdܐdݐdސdgddddddddddddd d d dddddddddgdddddddΐdϐdАdѐdҐdӐdddddddddd4d5d6gdȐdɐdʐdːd̐d͐dddddddddddddLdMdNdddedfgddddddddddddddddddd|d}d~dddgddddddddddddddd d ddddddĐdŐdgdܐdݐdސdd d!d"d#d$d:d;d<d=d>d?dUdVdWdXdYdZdpdqdrgd7d8d9dOdPdQdRdSdTdjdkdldmdndodddddddddgdgdhdidddddddddddddddddddАdѐdgddddddddddʐdːd̐d͐dΐdϐddddddd+d,d-gdǐdȐdɐdߐdddddd%d&d'd(d)d*d@dAdBdCdDdEd[d\d]gdsdtdudddddddddddddddÐdVdWdldmdndogdddddddddd֐dאdؐdِdڐdېdddddddddgdӐdԐdՐddddddd1d2d3ddddd d ddddddgd.d/d0dFdGdHdIdJdKdadbdcddd$d%d&d'd(d)d*d+d@dAgd^d_d`dvdwdxdydzd{dddd<d=d>d?dTdUdBdCdXdYdZd[gdpdqdrdsdddvdwdddddddddddddd d d gddddddddddddddddddd d!d"d#d8d9gddddd,d-ddd0d1d2d3d4d5d6d7dLdMd:d;dPdQdRdSgd.d/dDdEdFdGdHdIdJdKd`dadNdOdddedfdgdhdidjdkddgd\d]d^d_dtdudbdcdxdydzd{d|d}d~dddddddddgddddddd2d3d\d]d^d_dd d d d4d5dސdߐddddgddd̐d͐dΐdϐd`dadbdcddd6d7d8d9d:d;d d ddddgdАdѐdҐdӐdddddddddddedfdgdhdiddd<d=d>d?gdddddddԐdՐd֐dאdؐdِdjdkddddd@dAdBdCdldmgd,d-d.d/d0d1dڐdېdddddddddܐdݐdndodpdqdrdsggKZdd ddd$d%d@dAdBdCdXdYddddd0d1dLdMdNdOdddegd&d'dd?dZd[ddddd2d3dHdIdJdKdfdgd d!d"d#gdTdUdVdWddd,d-d.d/dDdEd`dadbdcddd8d9d:d;dPdQgddd(d)d*d+dFdGd\d]d^d_ddd4d5d6d7dRdSdhdidjdkgdldmdndodddddddddxdydzd{ddddddddgdddddddddtdudvdwddddddddddddgdddddpdqddddddddddd|d}ddddddgdrdsddddddddddd~dddddddddddgddddddddddddddddddd d ddd$d%gdddddddddddddddd d d d&d'ddddgddddddddddddd d!d"d#ddddddddgddddddddddddddddddddd(d)d*d+gd,d-d.d/dDdEd`dadbdcdxdyd8d9d:d;dPdQdldmdndoddgdFdGd\d]d^d_dzd{d4d5d6d7dRdSdhdidjdkddd@dAdBdCgdtdudvdwd0d1dLdMdNdOdddeddddd<d=dXdYdZd[dpdqgd2d3dHdIdJdKdfdgd|d}d~dd>d?dTdUdVdWdrdsddddgddddddddddÐdؐdِddddddd̐d͐dΐdϐddgdddddddڐdېdddddddȐdɐdʐdːddddddgdԐdՐd֐dאdddddddĐdŐdddddddddddАdgdddddddƐdǐdܐdݐdސdߐdddddddҐdӐddddgdddddddddddd d"d#d$d%d&d'd@dAdBdCdDdEgddddddddddd d!d:d;d<d=d>d?ddddddgddddddd4d5d6d7d8d9ddddddd.d/d0d1d2d3gddddddd d d d ddd(d)d*d+d,d-dFdGdHdIdJdKgdLdMdNdOdPdQdjdkdldmdndoddddddddddddgdddedfdgdhdiddddddd^d_d`dadbdcddddddgd|d}d~ddddXdYdZd[d\d]dvdwdxdydzd{ddddddgdRdSdTdUdVdWdpdqdrdsdtduddddddddddddgddddddddddddddddddddddddgdĐdŐdƐdǐdȐdɐdʐdːd̐d͐dΐdϐdАdѐdҐdӐdԐdՐd֐dאdؐdِdڐdgdܐdݐdސdߐddddddddddddddddddddgdddddddddddddddddddddd d d gd d ddddddddddddddddddd d!d"d#gd$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;gd<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSgdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkgdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddgddddddddddddddddddddddddgddddddddddddddddddddddddgddddddddddddddddÐdĐdŐdƐdǐdȐdɐdʐdgd̐d͐dΐdϐdАdѐdҐdӐdԐdՐd֐dאdؐdِdڐdېdܐdݐdސdߐddddgddddddddddddddddddddddddgdddddddddddddd d d d d ddddddgddddddddddddd d!d"d#d$d%d&d'd(d)d*d+gd,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCgdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[gd\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsgdtdudvdwdxdydzd{d|d}d~dddddddddddddgg0ZddZddZddZddZddZddZddZddZdS(Nset_vars_for_coupled_hwrfset_vars_for_gsiset_vars_for_productscray_fcst_varscCs$|dt|t||tj|<dS)z!Set an environment variable and log a message about it @param logger a logging.Logger for the message @param var the variable to set in os.environ @param value the value of the variablez Set ENV %s=%sN)infostrreprosenviron)loggervarvaluer8/lfs/h1/ops/prod/packages/hwrf.v13.2.9/ush/hwrf_wcoss.pyloudenv srcCsht|ddt|ddt|ddt|ddd t|d d t|d d t|dd t|dddS)z!Sets variables that seem to speed up the 2016 HWRF on WCOSS Cray when running ensda jobs. @param logger a logging.Logger for log messages IOBUF_PARAMS*MPICH_GNI_MAX_EAGER_MSG_SIZE1024000MPICH_GNI_NUM_BUFS256MALLOC_TRIM_THRESHOLD_%dMALLOC_MMAP_MAX_0OMP_NUM_THREADS1MKL_NUM_THREADS FORT_BUFFEREDtrueNrr rrrcray_ensda_varss      r#cCs\t|ddt|ddt|dddt|dd t|d d t|d d t|d ddS)Nrrrrrrrrrrrrrr r!)r waveocean wrf_ranksrrrr%s     c@s eZdZdS)WCOSSConfigExceptionN)__name__ __module__ __qualname__rrrrr'/sr' !"#0123@ABCPQRS$%&'4567DEFGTUVW ()*+89:;HIJKXYZ[ ,-./<=>?LMNO\]^_`abcpqrsdefgtuvwhijkxyz{lmno|}~iiiiiiiiiiiiiiiii i i iiiii i iiiiiii i!i"i#i0i1i2i3i@iAiBiCiPiQiRiSi`iaibicipiqirisi$i%i&i'i4i5i6i7iDiEiFiGiTiUiViWidieifigitiuiviwi(i)i*i+i8i9i:i;iHiIiJiKiXiYiZi[ihiiijikixiyizi{i,i-i.i/i<i=i>i?iLiMiNiOi\i]i^i_iliminioi|i}i~iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii i i i iiiiiii i!i.i/i0i1i2i3iiiiiiiiiiiii"i#i$i%i&i'i4i5i6i7i8i9iiiiii iiiiiii(i)i*i+i,i-i:i;i<i=i>i?i@iAiBiCiDiEiRiSiTiUiViWidieifigihiiiviwixiyizi{iFiGiHiIiJiKiXiYiZi[i\i]ijikiliminioi|i}i~iiiiLiMiNiOiPiQi^i_i`iaibicipiqirisitiuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii0i1i2i3i4i5iHiIiJiKiLiMiiii i i iii i!i"i#i6i7i8i9i:i;iNiOiPiQiRiSi i iiiii$i%i&i'i(i)i<i=i>i?i@iAiTiUiViWiXiYiiiiiii*i+i,i-i.i/iBiCiDiEiFiGiZi[i\i]i^i_i`iaibicidieixiyizi{i|i}iiiiiiiiiiiiifigihiiijiki~iiiiiiiiiiiiiiiiiiliminioipiqiiiiiiiiiiiiiiiiiiirisitiuiviwiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii i i i i iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii i!i"i#i$i%i8i9i:i;i<i=iPiQiRiSiTiUihiiijikilimi&i'i(i)i*i+i>i?i@iAiBiCiViWiXiYiZi[inioipiqirisi,i-i.i/i0i1iDiEiFiGiHiIi\i]i^i_i`iaitiuiviwixiyi2i3i4i5i6i7iJiKiLiMiNiOibicidieifigizi{i|i}i~iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii iiii i i iiii iiiiii+i,i-iFiGiHiaibici|i}i~iiiiiiiiiiiii.i/i0iIiJiKidieifiiiiiiiiiiiiiiii1i2i3iLiMiNigihiiiiiiiiiiiiiiiiii4i5i6iOiPiQijikiliiiiiiiiiiiiiiii7i8i9iRiSiTiminioiiiiiiiiiiiiii i!i:i;i<iUiViWipiqiriiiiiiiiiiiii"i#i$i=i>i?iXiYiZisitiuiiiiiiiiiiiii%i&i'i@iAiBi[i\i]iviwixiiiiiiiiiiiii(i)i*iCiDiEi^i_i`iyizi{iiiiiiiiiiiiiiiiiiii i!i"i#i<i=i>i?iXiYiZi[itiuiviwiiiiii i i i$i%i&i'i@iAiBiCi\i]i^i_ixiyizi{iiiii i iii(i)i*i+iDiEiFiGi`iaibici|i}i~iiiiiiiiii,i-i.i/iHiIiJiKidieifigiiiiiiiiiiiii0i1i2i3iLiMiNiOihiiijikiiiiiiiiiiiii4i5i6i7iPiQiRiSiliminioiiiiiiiiiiiii8i9i:i;iTiUiViWipiqirisiiiiiiiiiiiiiiiiiiiiiiiiiiii i i i i iii0i1i2i3i4i5i6i7iXiYiZi[i\i]i^i_iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii8i9i:i;i<i=i>i?i`iaibicidieifigiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii@iAiBiCiDiEiFiGihiiijikiliminioiiiiiiiiiiiiiiiiiiiiiiiii i!i"i#i$i%i&i'iHiIiJiKiLiMiNiOipiqirisitiuiviwiiiiiiiiiiiiiiiiiiiiiiiii(i)i*i+i,i-i.i/iPiQiRiSiTiUiViWixiyizi{i|i}i~ic Csj|dkrft|d}|dddt|||Dd|d|||df||}||}q|S) Nrr^,cSsg|] }d|qSrr.0xrrr szplusprint.. zSend ranks %d through %dr+)minwritejoinranger)r firanknranksnrrr plusprints ( rAc sFd}d}d}d}d}|jd} | d|dd}|sN|d|d}|dkrdtd|j| d td d h} d|D]B} || } | d kr| |}| d | t| t|fnd| dkrd}| d | t| t|fn:| d| t| ft | | | | dtfq| sr| d dkrr|dd} | dd}| t ddt d|D}|dkr| dt}n|dkr| dt}n|dkr| dt}nv|dkr| dt}n\|dkr| d t}nB|d!kr| d"t}n(|d#kr(| d$t}ntd%|f| d&|D](}| d'fd(d|Dd)qD|| dtf|dkr| d*t|ft | | || dtfq| d+tfW5QRXtd d,6} d}| D]&}|d-}| d.||d)fqW5QRX| d/|jd0d1d2S)3Ncray_run_exe_callbackz3Setting up Cray-specific settings for forecast job.Zwrf_compute_ranksrZnproc_xZnproc_yr,z/Please set nproc_x and nproc_y in [%s] section.zWrite MPICH_RANK_ORDER file...ZMPICH_RANK_ORDERZwtZwrfz*WRF component %s has %s ranks so wrfio=%s.Z wrf_computezComponent %s has %s ranks.z Up to rank %sZ nio_groupsZnio_tasks_per_groupcSsg|] }t|qSr)intr4rrrr7Lsz)cray_run_exe_callback..z (?:\s|,)+r1z(Using wrf_5x15_6x4 grid for WRF compute.iz(Using wrf_8x10_4x6 grid for WRF compute.r0z(Using wrf_7x10_4x6 grid for WRF compute.r/z'Using wrf_9x7_3x8 grid for WRF compute.r.z(Using wrf_4x13_6x4 grid for WRF compute.r-z'Using wrf_3x9_6x4 grid for WRF compute.r,z'Using wrf_4x5_4x6 grid for WRF compute.zRWRF compute task count %d has no task geo in hwrf_wcoss.py. Update hwrf_wcoss.py.zWrite WRF compute grid.r2csg|]}d|qSr3rr4r>rrr7lsr8zWrite %s ranks for WRF I/Oz(Wrote %s ranks to MPICH_RANK_ORDER file.rtr+zMPICH_RANK_ORDER:%04d:%sz'Finished writing MPICH_RANK_ORDER file.3r)ZMPICH_RANK_REORDER_METHODr)conflogrZconfintr'ZsectionopengetrrAfindconfstrsumresplit wrf_5x15_6x4 wrf_8x10_4x6 wrf_7x10_4x6 wrf_9x7_3x8 wrf_4x13_6x4 wrf_3x9_6x4 wrf_4x5_4x6r:r;rstripenv)ZtaskrunnerZ componentsranksZcouplerr%r$Z wrfcomputeZwrfior r=crZiogZtpgZgridZigridZilinelinerrErrB"s                         &  rBcCs6|r|dt|ddn|dt|dddS)z!Sets task geometry for Phase 1 WCOSS @param logger a logging.Logger for messages @param coupled if True, a coupled forecast, if False, uncoupledz9SETTING WCOSS PHASE 1 VARIABLES FOR HWRF COUPLED FORECASTLSB_PJL_TASK_GEOMETRYa{(0,1,2,3,4,5,6,7,8,9,10,11,12)(13,14,15,16,29,30,31,32,45,46,47,48,61,62,63,64)(17,18,19,20,33,34,35,36,49,50,51,52,65,66,67,68)(21,22,23,24,37,38,39,40,53,54,55,56,69,70,71,72)(25,26,27,28,41,42,43,44,57,58,59,60,73,74,75,76)(77,78,79,80,93,94,95,96,109,110,111,112,125,126,127,128)(81,82,83,84,97,98,99,100,113,114,115,116,129,130,131,132)(85,86,87,88,101,102,103,104,117,118,119,120,133,134,135,136)(89,90,91,92,105,106,107,108,121,122,123,124,137,138,139,140)(141,142,143,144,157,158,159,160,173,174,175,176,189,190,191,192)(145,146,147,148,161,162,163,164,177,178,179,180,193,194,195,196)(149,150,151,152,165,166,167,168,181,182,183,184,197,198,199,200)(153,154,155,156,169,170,171,172,185,186,187,188,201,202,203,204)(205,206,207,208,221,222,223,224,237,238,239,240,253,254,255,256)(209,210,211,212,225,226,227,228,241,242,243,244,257,258,259,260)(213,214,215,216,229,230,231,232,245,246,247,248,261,262,263,264)(217,218,219,220,233,234,235,236,249,250,251,252,265,266,267,268)(269,270,271,272,285,286,287,288,301,302,303,304,317,318,319,320)(273,274,275,276,289,290,291,292,305,306,307,308,321,322,323,324)(277,278,279,280,293,294,295,296,309,310,311,312,325,326,327,328)(281,282,283,284,297,298,299,300,313,314,315,316,329,330,331,332)(333,334,335,336,349,350,351,352,365,366,367,368,381,382,383,384)(337,338,339,340,353,354,355,356,369,370,371,372,385,386,387,388)(341,342,343,344,357,358,359,360,373,374,375,376,389,390,391,392)(345,346,347,348,361,362,363,364,377,378,379,380,393,394,395,396)(397,398,399,400,413,414,415,416,429,430,431,432,445,446,447,448)(401,402,403,404,417,418,419,420,433,434,435,436,449,450,451,452)(405,406,407,408,421,422,423,424,437,438,439,440,453,454,455,456)(409,410,411,412,425,426,427,428,441,442,443,444,457,458,459,460)(461,462,463,464,465,466,467,468,469,470,471,472)}z:SETTING WCOSS PHASE 1 VARIABLES FOR HWRF ATM-ONLY FORECASTa{(0,1,2,3,16,17,18,19,32,33,34,35,48,49,50,51)(4,5,6,7,20,21,22,23,36,37,38,39,52,53,54,55)(8,9,10,11,24,25,26,27,40,41,42,43,56,57,58,59)(12,13,14,15,28,29,30,31,44,45,46,47,60,61,62,63)(64,65,66,67,80,81,82,83,96,97,98,99,112,113,114,115)(68,69,70,71,84,85,86,87,100,101,102,103,116,117,118,119)(72,73,74,75,88,89,90,91,104,105,106,107,120,121,122,123)(76,77,78,79,92,93,94,95,108,109,110,111,124,125,126,127)(128,129,130,131,144,145,146,147,160,161,162,163,176,177,178,179)(132,133,134,135,148,149,150,151,164,165,166,167,180,181,182,183)(136,137,138,139,152,153,154,155,168,169,170,171,184,185,186,187)(140,141,142,143,156,157,158,159,172,173,174,175,188,189,190,191)(192,193,194,195,208,209,210,211,224,225,226,227,240,241,242,243)(196,197,198,199,212,213,214,215,228,229,230,231,244,245,246,247)(200,201,202,203,216,217,218,219,232,233,234,235,248,249,250,251)(204,205,206,207,220,221,222,223,236,237,238,239,252,253,254,255)(256,257,258,259,272,273,274,275,288,289,290,291,304,305,306,307)(260,261,262,263,276,277,278,279,292,293,294,295,308,309,310,311)(264,265,266,267,280,281,282,283,296,297,298,299,312,313,314,315)(268,269,270,271,284,285,286,287,300,301,302,303,316,317,318,319)(320,321,322,323,336,337,338,339,352,353,354,355,368,369,370,371)(324,325,326,327,340,341,342,343,356,357,358,359,372,373,374,375)(328,329,330,331,344,345,346,347,360,361,362,363,376,377,378,379)(332,333,334,335,348,349,350,351,364,365,366,367,380,381,382,383)(384,385,386,387,400,401,402,403,416,417,418,419,432,433,434,435)(388,389,390,391,404,405,406,407,420,421,422,423,436,437,438,439)(392,393,394,395,408,409,410,411,424,425,426,427,440,441,442,443)(396,397,398,399,412,413,414,415,428,429,430,431,444,445,446,447)(448,449,450,451,452,453,454,455,456,457,458,459)}Nrrr coupledrrr fcst_wcoss1~s   rccCs6|r|dt|ddn|dt|dddS)z!Sets task geometry for Phase 2 WCOSS @param logger a logging.Logger for messages @param coupled if True, a coupled forecast, if False, uncoupledz9SETTING WCOSS PHASE 2 VARIABLES FOR HWRF COUPLED FORECASTr_a{(0,1,2,3,4,5,6,7,8,9,10,11,12)(13,14,15,16,29,30,31,32,45,46,47,48,61,62,63,64,77,78,79,80,93,94,95,96)(17,18,19,20,33,34,35,36,49,50,51,52,65,66,67,68,81,82,83,84,97,98,99,100)(21,22,23,24,37,38,39,40,53,54,55,56,69,70,71,72,85,86,87,88,101,102,103,104)(25,26,27,28,41,42,43,44,57,58,59,60,73,74,75,76,89,90,91,92,105,106,107,108)(109,110,111,112,125,126,127,128,141,142,143,144,157,158,159,160,173,174,175,176,189,190,191,192)(113,114,115,116,129,130,131,132,145,146,147,148,161,162,163,164,177,178,179,180,193,194,195,196)(117,118,119,120,133,134,135,136,149,150,151,152,165,166,167,168,181,182,183,184,197,198,199,200)(121,122,123,124,137,138,139,140,153,154,155,156,169,170,171,172,185,186,187,188,201,202,203,204)(205,206,207,208,221,222,223,224,237,238,239,240,253,254,255,256,269,270,271,272,285,286,287,288)(209,210,211,212,225,226,227,228,241,242,243,244,257,258,259,260,273,274,275,276,289,290,291,292)(213,214,215,216,229,230,231,232,245,246,247,248,261,262,263,264,277,278,279,280,293,294,295,296)(217,218,219,220,233,234,235,236,249,250,251,252,265,266,267,268,281,282,283,284,297,298,299,300)(301,302,303,304,317,318,319,320,333,334,335,336,349,350,351,352,365,366,367,368,381,382,383,384)(305,306,307,308,321,322,323,324,337,338,339,340,353,354,355,356,369,370,371,372,385,386,387,388)(309,310,311,312,325,326,327,328,341,342,343,344,357,358,359,360,373,374,375,376,389,390,391,392)(313,314,315,316,329,330,331,332,345,346,347,348,361,362,363,364,377,378,379,380,393,394,395,396)(397,398,399,400,413,414,415,416,429,430,431,432,445,446,447,448,461,462,463,464,477,478,479,480)(401,402,403,404,417,418,419,420,433,434,435,436,449,450,451,452,465,466,467,468,481,482,483,484)(405,406,407,408,421,422,423,424,437,438,439,440,453,454,455,456,469,470,471,472,485,486,487,488)(409,410,411,412,425,426,427,428,441,442,443,444,457,458,459,460,473,474,475,476,489,490,491,492)(493,494,495,496,497,498,499,500,501,502,503,504)}z:SETTING WCOSS PHASE 2 VARIABLES FOR HWRF ATM-ONLY FORECASTaY{(0,1,2,3,16,17,18,19,32,33,34,35,48,49,50,51,64,65,66,67,80,81,82,83)(4,5,6,7,20,21,22,23,36,37,38,39,52,53,54,55,68,69,70,71,84,85,86,87)(8,9,10,11,24,25,26,27,40,41,42,43,56,57,58,59,72,73,74,75,88,89,90,91)(12,13,14,15,28,29,30,31,44,45,46,47,60,61,62,63,76,77,78,79,92,93,94,95)(96,97,98,99,112,113,114,115,128,129,130,131,144,145,146,147,160,161,162,163,176,177,178,179)(100,101,102,103,116,117,118,119,132,133,134,135,148,149,150,151,164,165,166,167,180,181,182,183)(104,105,106,107,120,121,122,123,136,137,138,139,152,153,154,155,168,169,170,171,184,185,186,187)(108,109,110,111,124,125,126,127,140,141,142,143,156,157,158,159,172,173,174,175,188,189,190,191)(192,193,194,195,208,209,210,211,224,225,226,227,240,241,242,243,256,257,258,259,272,273,274,275)(196,197,198,199,212,213,214,215,228,229,230,231,244,245,246,247,260,261,262,263,276,277,278,279)(200,201,202,203,216,217,218,219,232,233,234,235,248,249,250,251,264,265,266,267,280,281,282,283)(204,205,206,207,220,221,222,223,236,237,238,239,252,253,254,255,268,269,270,271,284,285,286,287)(288,289,290,291,304,305,306,307,320,321,322,323,336,337,338,339,352,353,354,355,368,369,370,371)(292,293,294,295,308,309,310,311,324,325,326,327,340,341,342,343,356,357,358,359,372,373,374,375)(296,297,298,299,312,313,314,315,328,329,330,331,344,345,346,347,360,361,362,363,376,377,378,379)(300,301,302,303,316,317,318,319,332,333,334,335,348,349,350,351,364,365,366,367,380,381,382,383)(384,385,386,387,400,401,402,403,416,417,418,419,432,433,434,435,448,449,450,451,464,465,466,467)(388,389,390,391,404,405,406,407,420,421,422,423,436,437,438,439,452,453,454,455,468,469,470,471)(392,393,394,395,408,409,410,411,424,425,426,427,440,441,442,443,456,457,458,459,472,473,474,475)(396,397,398,399,412,413,414,415,428,429,430,431,444,445,446,447,460,461,462,463,476,477,478,479)(480,481,482,483,484,485,486,487,488,489,490,491)}Nr`rarrr fcst_wcoss2s   rdcCs4t|ddt|ddt|ddt|dddS) zi!Sets variables to speed up the products job on WCOSS @param logger a logging.Logger for log messagesMP_USE_BULK_XFERyesrrrrTRUENr!r"rrrrs   cCst|ddt|ddt|ddt|ddt|d d t|d d t|d d t|ddtjdd}|s||s|d}n |s|dkrd}n|ddS|dkr|d|n6|dkrt||n"|d krt||ntd|fdS)a!Sets variables that seem to speed up the H15B (2015 pre-baseline) version of HWRF on Phase I WCOSS. @param logger a logging.Logger for log messages @param wave "WW3" or the empty string @param ocean "POM", "HYCOM" or the empty string @param wrf_ranks Number of WRF ranks. If this number is small, then the function assumes a custom task count is in use, and will not set task geometry. This is a kludge used to prevent 2km task geometry settings for the 3km configuration. rerf MP_EUIDEVICEsn_full MP_EUILIBusMPICH_ALLTOALL_THROTTLErMP_EAGER_LIMIT100KrrrrrgZ WHICH_WCOSS2FZHYCOMTzSNo known LSB_PJL_TASK_GEOMETRY for this configuration. Will not set that variable.Nr+z@Not setting LSB_PJL_TASK_GEOMETRY due to small wrf rank count %dz&OOPES! FORGOT TO SET WHICH_WCOSS (%s))rr r rKwarningrdrcAssertionError)r r$r%r&Z which_wcossrbrrrrs4            cCsdt|ddt|ddt|ddt|ddt|d d t|d d t|d d t|dddS)z!Sets variables that seem to speed up the H15B (2015 pre-baseline) version of HWRF on Phase 2 WCOSS when running ensda jobs. @param logger a logging.Logger for log messagesrerfrhrirjrkrlrrmrnrrrrrgNr!r"rrrset_vars_for_ensda_hwrfs       rrcCs|dt|ddt|ddt|ddt|dd t|d d t|d d t|dd t|ddt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|ddt|d d!t|d"dd#S)$a1!Set variables for running GSI quickly on WCOSS. This routine is copied verbatim from the old ksh-based hwrf_nmm_gsi_d*.sh scripts and modified line-by-line for Python. It speeds up the 2014 HWRF GSI jobs by more than a factor of three. @param logger a logging.Logger for log messageszSETTING WCOSS VARIABLES FOR GSIZMEMORY_AFFINITYZMCMZMP_SHARED_MEMORYrfZAIXTHREAD_SCOPESZ XLSMPOPTSzparthds=1:stack=128000000ZLAPI_DEBUG_ENABLE_AFFINITYYESZ MP_FIFO_MTUZ4KZ MP_SYNC_QPZMP_SHM_ATTACH_THRESHZ500000Z MP_EUIDEVELOPr9reZMP_BULK_MIN_MSG_SIZEZ64kZ MP_RC_MAX_QPZ8192ZLAPI_DEBUG_RC_DREG_THRESHOLDZ1000000ZLAPI_DEBUG_QP_NOTIFICATIONZnoZLAPI_DEBUG_RC_INIT_SETUPZ XLFRTEOPTSz nlwidth=80Z MP_LABELIOZ MP_INFOLEVELrZMP_USE_TOKEN_FLOW_CONTROLNr`r"rrrrs(                   )r rO__all__rr#r Exceptionr'rWrVrUrTrSZ wrf_5x3_8x16rRrQZ wrf_4x12_6x4rArBrcrdrrrrrrrrrs 2222222222Zbbbbbbbbb2222222:2V:Vbbbbbbbbbbbbbbb 22222222JBJJbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb9222228422ZXZZXZ\b\bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbD2222222JBRRJJRbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbK22222222JJZbJJbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbV222222>66FNV^VbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbQ22222222JBJJbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb3 \ )