Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
titleblock_future [27/12/2010 22:58]
xavier [Liste des fonctionnalités à implémenter]
titleblock_future [20/11/2014 13:01] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Réflexions sur le futur des cartouches ======
 +===== Besoins exprimés =====
 +  * Les utilisateurs ont souvent besoin d'un cartouche différent / plus évolué que celui utilisé par QET actuellement : il faut donc qu'ils puissent **modifier ses champs, leur valeur et leur agencement.**
 +  * En revanche, chaque utilisateur se sert souvent du même type de cartouche, qu'il a besoin d'​appliquer dans de nombreux schémas, voire de transmettre à des collègues : il faut donc un **système de template** (modèle ?​)  ​
 +  * La plupart des informations affichées par un cartouche correspondent à un champ texte ; toutefois, il est courant qu'une entreprise appose son logo : il faut donc prévoir deux types d'​informations affichées : **les champs de texte et les logos**
 +  * Il est actuellement possible de pré-remplir certains champs du cartouche depuis la configuration de QET ; de même, certaines valeurs affichées par les cartouches peuvent être calculées (numéro du schéma, nombre de schémas dans le projet) ; il faut étendre ces possibilités en prévoyant **plus de variables**,​ utilisables dans tous les champs
  
 +===== Réflexions sur l'​implémentation =====
 +==== Format des modèles ====
 +
 +Les modèles de cartouche (titleblock templates) pourraient être exportables sous forme de fichiers ''​.int''​.
 +Leur contenu serait bien entendu au format XML pour une intégration plus facile dans les fichiers projets.
 +
 +Exemple de modèle de cartouche :
 +<code xml>
 +<!-- le modèle de cartouche porte un nom qui permet de le référencer depuis un schéma.
 +Toutefois, contrairement aux éléments, on ne s'​encombre pas d'un système d'​arborescence -->
 +<​titleblocktemplate name="​ERDF">​
 +    <!-- on commence par déclarer les images embarquées utilisables comme logos -->
 +    <​logos>​
 +        <!-- Solution basique pour embarquer des images non vectorielles : les insérer en base64 dans le XML -->
 +        <logo storage="​base64"​ type="​png"​ name="​dott.png">​iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAMAAABKCk6nAAACslBMVEVzaYxjeaVjjr1zlsaEpt6EtvecvvfG2/​eEsu+oyPe31veMptZrcZRze6V7hrV7jr1zls5zotZ7pt6FrueMu/​eEkr1rbYx0c5hrhrVznc6Eqt5kgq1jdZxzirV7lsZ7otZ7reeXtN2MnsZreaWt0/​6Uvfd7f6WHd5iUjq3Gx96Mhpx+bYymqMCzwNm0t83Gz+d7nc6ZzP9zmsZmmcyEuveUmK2Tue+1z/​d7os6lvueYqs5rkr2ljrWMrN57rO+Eps6Mst5zo+9zoue90+ecob17krVzbYyLhKacmLVzjr2UvsaZrtmtyOW5y+tqLZFzWbVjAHN7htatOK2EFIyUJpycLKV7DISEHIxzCXuMHJRrBHNri7UAAAAhLDgaARpDWXszADNSHFNjDGNKAFJfhrVCCEIAGABKGFIAbQAYURgGUwAMnSkAtikzMzMAMwAAZRgAzDMAnhhDQUF7RXsAhghkKmgQPAAlWSUISQBSUVJ7ntYAjgAAegAIZQAAZgB2SopzXIwAhgBlGXdqXHpjCHNqYIRjSnhrba0xVEopRC1JT105aXMhSTkgPDoYOBBUh6cYQCkIKAAAIQAAHAAAEgAACgBfUGk5QTkQNBgPMQghMR45RUI2MUJNdJE1SmFSSF8ICQAQCwNFNkw5VXIILAAiHyI3KDgyUlMXLDV7sucMDxsqWVtzrtYXFxZikrQhTUIACghSC1pCGEUIBAAYQUIpKQ9QfasWHS1zrt4rQ1IIFhREa3sABAhrnNZroM5jkMZGZYxajsYIHAgIKAgYFgdSipwpUUIArBMQcRAIZAgYUQgYgyEpeSEZYhklSRAxOBAAwikFtDEIpiksaQ8YUhAAngglWxghSAgYYQgQdiEhIQgQLAApMQ8YMAgYKAgQIAgLGwAhMwgYJAgIIABrOFoxNBjs/​bmNAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nO2d/​WNdxXnn75WurnwvVy+WhCXLsvyiK+wksoviBeKkBbt166QB+1oStjEiJsW1ZYEo4p1iIECymwSDYxsISeokRiVxYtI3x3WgzYa2tN3d7PZlu0271Lvb7bb/​x96ZOXPOvJ+ZOTPn3Hut7w8t0X07Zz5+zvnOc555JpdrUOXzbW3t7YVCR0OrWOwMVSwmPWN0zuCs3Z23GxoeFABe4epEPalYCgGXi9clPGMCsLPzdoTDmSpddXV39/​T09q5c2dfX7+o8fSlZCAdnC84XnDE65/​pZ97s7bx+QEqiSh/​+CG55rqIGBUhjDpdL119ucbcHn+XoCZaRVlcpgXeBf89DQ6rqG/​Z2veyWI4TVr4NkO+zxfT8yM1BR2SqoEgNM4Z0/​MTBTYKf/​n6ksUYpMzb23AI2vrGh1dt66vb31djW6XFSIBlzcYDEFLA246OyUXabQ6yxs3ao9B6wGujI2hSRCYFMAJgf8zTENkDFer2sPRcoBXobttU5lkLY2Pl8sR4Bt0x6PlADe9nZKLimHd8UgH8KbNmz/​kk2qdK5rO+z+ZDEUCruvDjQP4IwDwhE++IwhwE9tkLRFGq7Nzy6ZNjQJ4YmLr1p/​7uS7XVFvVTslVLJbKRAjrxPCNNzo/​ioHJyYGBvr4wl9+fQ8fT7phwBd1tW54qoYGBYjWyWhMTg/​Gj1N7u/​CCK1WqxCGgGBAoB4I9+1AnXVYODKKs8NLRtW5PllA00APXv2D+PT1arUQzfFE/​YNeDx8VKpWr355rXgy0fWrAGJpABwnbQLXRt2qh4lQJP8ayTgzs1pAy4KWboEnEeAnR51o6kYARYQphBvjkPsFjD28QxK9Mebb3bAt/​mzyrTGgSahboEC/​wUAf+xjII9+ww1dXavZz2QIOLj/​l5hbA/​pr0noioB6XR9sAGgAswU2tiqmB/​wJ/​bG/​P5/​MVcM5dfcyHJicjo7V1a8xcySlgNEsrlViS+O/​JATs82LQFTROK1ZJQ27dv2PDxujZuvL6urq5KpYJOuqunh2FMxnAM4U98wuE54Ei9kfkRlEU1yJC3IuBidGcl5rJgXIol+Fqh0NaWz39YyGvteuq7Jsmv+HmllW5rc3cK4/​D3ysVfGGGxoCTbNQ24GAHurNKAq0USsPjEmQstGcI///​NpAcYBnOewBFnUtmsXMEW0s4qAgvus3anrPzvM552dA/​rNant7+OV4YtQR3J7b1thhlZxlE+kWEnC5GgFepX3qXV3R140XywTfdACPj5fRz7WHt4TRQmF0NMAyUCqVy5/​4hDXZQI4ONnWRDwk6AxvV3V03UiYnj63WrQN0AN+m+pAzwMFv3nxzkHGu9PT09+9AMYzeMUkGt6UcHWzqGiAIf1z/​sswITZhu3Vkky3eqtyn/​lbgCHJQMbS90o++t9MK/​7ih0d4dYJpNno90cbAYajwCvXWt9+mv7+las+MVfJP61lDdsYC0tLVeAg9/​Ed93BoeC8NoC/​4DclT1a6OdgsFDHZutX+/​PN5sGiMuNzHJo9cAe6kAYe54k4ScHLCbg42CxFQEgDOMYA1koNOAXN8wd8LJODRtWvVlxS13BxsFiIuq7+UYABWDQ5+9KO7dsFpcPWXf1mj9m6Vk8OfhEdeWgPmQSPr1kXPAqoU4P5+MDUwso60nBxsJiJtlv35A3W1b94MMlnlqt5Iujj6SfgvqlQEv4jsFVb9SLaTP9Hf19fb29NjPEVweLAZaSACLMgtViqwAAkt9ARlSIrR6dq06bbbtm/​fuFFrBMdcHDyy0MPD4Bd7uVcEWIbNJvmtAJi4C3/​4V9jzWkWtvAdV3erRGckXRvVGrLLNxbGjzAqa5rKvCAF3mKXpWg0wl3CmWysACxMzOnldu+ooFQ3THCLAHRLAHSBhDou3rhnAUfaJekqfFz8OcFL/​4jAPDY4eJUXZl+IAG037nR1wFiqJAI9IAK9wAHiELRVIePRlM8AgO10qbdiwa9fu3Zs2faT1AYc265OfjM6ot3c1V5MD1Z+Yb3ev8Ittjx4Q7hYwKMsAD4TXrC0TmzfrEXZ5xOkLn+/​EBHlGsgrRpHi7XVeM1w1zoZtnUC3LsET52a0gio0Bj9NaZy7HIxCnMg94sD6jkJR2a1S1q+SjsviW4eHBQfaPpZI07oj0XeeHtFanST9ulz5wPwRKFXnAipK4hI/​evJSOg2JA/​m+eACfnmxXhCLCy5DEJYV8rA4r8ESsAk7VJE1qrD8lPEx+u3nab1hWe1RoPQ6BUcEfCjxtG1qvevN7mlAJ5W/​rBH7EC8GTZCeByeYfdwrYxhwVpeqIBV2LmqTbnhNTtsI9dnBSAg2cUUDfdpHPgxEejz1ZtS0Wc1gxrCf2L3rIF/​f6nPqV+t+VyTFBMk87pQClMFpW+01nNTHxTVF1crhYtiyTcL62ME7pmYb8R10lktZWRXjWUzrlgVat6gLUOnvzaahTANuOQywIwsh0h4Lh3W52Yu/​yknqqyRAd60cwEkx+tVvF/​2AwDUBaLUNE/​SfjzGv+84mkioQcVQP7PgJU0VQkUVejrISFqgwdCwNothTjAGSxSRDcV8OtrlRYaKe4MRljAGt/​pWkrAYf3nFk0mPZE2bgz+vy3fXBbdH+BNuFz/​8YrOkwBos2AxwKZN4P92d+OCAKTeQKgHdF3ej5/​TgBIwzkdv8dqDR6b0RiESslnxUySkPtgJA0To5s3g/​xaQGqgvyYD8eTBUkI/​etSsDvpXURoHUJAK8Ri/​Jshr0IgHdSK6/​HvzfYSTPh2iiYgzgwEfHLlT3odTTHNEZZ2PwfAi4KB3AWfDNEnCr8IXzICVg5LISPhqzUvp5LCQwJKMtA7gcBxjVC2fAN4s0BxRIwRVSzBX7VWccYFjI4qdT6Uc2bdq9e2Ndu3eL8qAemvxpCUwNWwUvKkOKmY50dv5SktU6cm3avHliApT2TUxsFtwDRjO6So4XO2/​J5pc9qKgFOMl6OwVfErDIxWV1Gyx2ZvTD7lXUAVytOp4kBWA7GVWrv/​qr7CMN1EyzVQxP+kKjnDLgj+DIZQCXAWDmZlxBgBspc9BUQs9sYwCXSlqdrbXV1bVx46c/​XaoSjXcDwrffPjGxaxfojhHeksfwvn4go3tN9Jx2KjTCMYAHippV75oCGVvQIJDrOBaoVCwUPsyZLpDxbZlNeFJTpw7gjnFnfCugjzTI2OIWn6C9ZxkrJLxhw0037d59ww2DJOaRkXAbrZZpdepdeoDdbcvSJvJLYY85JpKLxYkJ8b1h2XRpqqgJ2BXh+sVZeBi4iSBLuA54mXAC4UL+eMDr1q0bhVobaARJn+0acGlV9ZEGvV7BhRv0dQ1Yl++4Y8uWDRuuu44r2eOWZyxLpOCmpyq6i9QPn2TjyqKgEkW7y8NYm645GkDRHG0iVioV+arqJKd97QhPP/​WGqx8oKDzpw6UoqDAFF6p0QY2NVSphL+U6WzDJWblS2/​wGXZvJTs07duzaBdoLjoWAMyh9aT4Flek335w4HoaDShUU3aDpbl1BD4tKm32aYhz2W0f+CyxG3xb+q9EpiLvWNRB4mkIh+QVPBDjoYSExVnoi7BfsABv1O87oUWIzCXtWF4BTUTEQ+pezbKSVwga6Hhb1UMv6aDSFAUPzvpyfVmkcG2gAeFWzAEabjQ0Aa9fVlVU5QBNooARqFspgG5Hh4euvrzTjpKOvvX3ZSEs0UCzByRHcZWKsWWeVktY3rSrU5aSjY8WKvj51wggmEsq33z4+ft11o6NrltMGTaEizs4XCmB2opyZwOkGmMss54WaRtgSQ8Bw7ikvcgna17VTO+ikebCpaE9dWR+DK43fcgvaTmV8fNu2wUGYP8KPXQXvBnsqggetlRYGvHdvra69e7M+DifCfazL1Y6OtjGSmii/​P1AU9vvO4sC9aC9ULRD6Xz5/​yecvAKEJDyyC2LGjp2eMxjYWLVPFgnsqcnxbBfC+fTWB9u3z8VPefwEqbI9aNmwK25qARXiB/​P+Uh18Aihocm7Z1bkXAeLCnIk17QxD+kj/​AEd1qot7Udb/​dCoD37EFDPTNDAL5zfwjYraveE/​7SzIz7b4caj0oeqoUEiztHV7QGYDDMB+qaojRz4MDBgwfdRxl5pThw0H0MT5aizfFKt93WbUs3aLnW/​ICBc2bhYsbT0wixO7fL/​No0+HqnVppsIYm2yrHkG3QclwIeN9bAgMsT1RZz76V0113T04cOuXS77J1+2mkID4yPh+Wl5dtvv+46643K8P6FUsDEHqm6wrtlQzk751ipAAMC09MuL9N+AZPFw9W2JHt2h1UvEsDFpIDTIqzG6xwx93NOCVN8q074ygCXShKKQa3jBqjbKK1dezehrkCeiy/​0AO/​f78jvegM8DpbyELffDTfcYH37HRkdjeoSZdvqCJeGgds+UoGqlKbqpZmqaa8LxhQGK9TMDEDsyGxxgGeQzUr6vQNFesS3W5tnsFSPHHMJYIbv9l2Brg9E1kJjVUiFP+e1vCY+fnEMY8TOfzC4/​if83mKRGPHyrl0J+Hb19pIxJQFM870jQTbFZ78ckBU+GA8YeGkg4KcTumkRYOTSk53JOOF5ytYdeoEGmXIXLcBJ0mU+AesFcBjDDu6XIsBuQpi0V0kAs8MtrjFmPLRlV34oV9uYc5qtywZwIhbeAHcQ5cxVvQbsosHmqz2ENcbjZXeAV/​kBfM89APBnPqMH+M4AcGI3LQS839FMKXy8r7eFAq+RPN9lO4d6YND9L5g5UmloyB6wl76xhw/​PBrr3s5/​9rEEIJ7VaQsCupsL4EX95YmLjRotnDIy9QkIM8nT/​CxpwkowokINTpxXhRdJAPB0pUfaYBzwTfKWbU4uKdPhOJbF8hdXi6LUR1P+iry+our2F6JrRWSxaZ0ShnC8GnOUUNxcmAf/​afXUdiWT00wJbF4Swo3MLy+xuuumGG7jNyFVi7XMg6j2glw26SxeLVQJwIr7uFwPygGdn9QGznzT6ae+AO6KEpaHZ0tonFQCGbwQLN50BdktYhDcOsRyvKWKBb/​dHmN9u3pgvA3jV4CCouh0auvHG/​n7QMwP81o03JgPsuLm3DPC998YD/​sxnmgFweCPeskXz5rhG3l5K+P5KEMlFmCFNMkkCcroLIWuwSMnMFspGT0//​+q+LP3fY4PdB8lsM2OFj/​4HQ5erZ27GV8u8Sf6ICmgj29Kxbt2PH9u2JJknw992dujR+VYjVeBOHsMOJElZIuLdXY3y7FXzVXbDWwHag+WQmOudwonTkiBqwyE/​fCbMcv/​Zrig+ZHAIoufMOuD6PQYB12pQNKp/​Iqj+LACfl6w5wHF4gcfwqP2JyCF5THYT0AasbWiSGpyNnPTVIKiivrIas8s74GwzRNBjg2ERwOoAdlXXcE8G57z7E5r77ROgCR32XyjvjbwDJaYNjEAPenxHgkcYA7GpJvij6JDH8WaBfRxL9A7j33hohg2MQA3Y7T+oINtSIBxy/​R1sqgB1NlA4TgCI4994rRqwQBRfIoORGAvig2/​JovG9kHKD4kU0FcE5vL8AYEQ6axiO+BMt19BjUISTDGJYAdhzCRU3AqhQHUip83fhoAhEbgWaA55DsigAaDHCuIVx0zglhKV5DwnNzNGEzxArADgmbAFYT9k42UBfYgHX16iTbr4aXaARkZgat7gM6Pj8/​r0f3/​vvvfwCIBLzfpCSjAQFLHhQieSeLVckH+yDZ10mjPDQyWChjdeAA+O+FBYDrQR2+v/​FQoMXFubmHHw6LAA7qGq29DQhY8qgfyTfXSJWx5NvkHD58OHDAeHQPLCC8i4uLvwGkovvggw8uAiHE4FMRYl0vXTMEDHtfT07CPowGJ2oGWFysg+SZqlgjeJsciy1U4AgfDKuhH4F300cfxZGpiOOj+N77wAPgnY8+Cv77sccQH801iLA/​x0F9wKhvc7Bqy+AsDQHDcjvxYPolKRMGbJHDZEIIIXsokhzwXKQohg2tliCAlYCDZ/​dV0wV5poBBwax4MI2wwHtoXUnWvbEyzYFQQ8zABcgej1f0Gb+AmeryrVtlFRo8GmPA0n3pDVCMRIDXGHwsRpVt24wBB8/​rnngCX26RwEX3SQ3ATz6JL+nATT/​xBOmlY2qmiV+PBcxWl9cBS6ro+Fy9BeBB8WNDDQKRNarbIqiVK3t6uM1QbGVY0ROG0FNPAWsV4QW+eH5egy+MYdJqGcSwIIDFgAdK9ArcLWAbXVklLB98FoAlD/​5jP4XKd/​jJTZ8rwmOqghNOYJoCZ0gJ8D7++Pw8/​vQi4aXjl5iGv84DpmujB5i1A1smVHtAOgIsLN2RvReW36ECPEl6YnVXF9P20lZrDPp7hyHE331jbr/​zUFEMB583MlqiAJ6KPivhe8eWLTfdpNoD8jd/​0w1gUWZa9tbgfqsebVd2y2D5kj3gp6HSAUxv1CfbpC8Uf5fCRcvm0xwWmWzI81q7bxcSNQohf04fr4ivLl4GMU9YjVjIl1y6KOYr2WYzkgBwpy1gljD9IlzCEi5ikUydCa1Yv37duiSdMgO5A3xCogjwiRN+AY9TvTa27t49GLvKiD/​9sj1gJjNNvSYzVGo5sFuVSm+vxi/​BRHBosQQG65lnntbQM8/​Ae3IAeJECrDJagjw0A3gve/​vdslvr9DnAnfaAmcw0+QqeCJnxrRMGOxgmtFv5vDSbGkkSwFH86uANL9NkQmt6WiOGBWlKBnCN7AK8deuuXVp8BUtskwCmM9Pk303BEhou4P0KLTUiz6YKRviRubkw+/​wQePT3LPLJuoBhvEsAS7PSIA996K4YwOMh3+pmTbpATgFTmWnFjxipkE9aPi3NptKAFQGsizeIYQlgaQyDP07zfGnA4cW5Wt1scPJuAZNjSfwxEWDAuJBwEVOGgGuagAV8KcAhXxO6OX5ykxAwMZbhX+IrbOO0opCo9TzMpirrPfbgIX5CCPhEPNZIJxjAhw5FgMVZ6T0mgHcZrs9ns9HB14xbAx7E3xj+ZWioI6n6+5LaLXUMhx5rTgjYhC8IYQpwLTaGJRaLAwzNlWkXFbZdXCfcf7DUYf88Fw9l+AdXy7T7Cwk6enR3K6x0NElyAnieALwA4B2MAPOTJdA08eBB9kES0AwJeBMwVxY9ctjRR/​sP1v+jx3Yo8WQ3/​MNHP+oGcMfw0NDgINieyajDBNaovKMHNUlKDPhJ8rk/​ilh5DO/​bh15XBTD6yMSnP600zxWQ4ecj4BOfoM/​1jjuKxR07+vrW2Yxh/​QIdNYEN/​2ZTXSFToVAsTkzYtfOSX0jcAp4zAYxfjwdce+455em1iQsm2FwWaPQKdlO3GkJqEMO/​uQTcgQBbEpYgjvgKAM+ZAia+AvOlCROIVXin2A/​E8EWABYSFgK0GkA6S8I9OAa8AF5ktWzZsuOkm4xtSGoBPnNAFDHZCNAL8OfmZrR0dhRl+mMEPt39FWlU/​w+HVq7dtGxoCnXvhhbxilTtau24deZsL/​+66rzPK5tTj2LShV5e4yjeyWAgwkYoG/​3N+Xh8wwru4GH4cAz5IAsY7tgQvHZwWOazIYmHAihOjms31F+jdCHvqf4FRmzDny45e+ILrvt2oKd+WLRMTn/​zk7t1GlLvATnygdnrlSlg9DUUE8NScIITndPOUCC9VeBdipEJ4msIbG8AqwJWu+jkxdeCw8ImYVPaA/​ttjY4n4jnV3s9ERvuaYb8d42CvvQx+qx/​GvmHpqUDsN1kLgQj84ziTgqNwOVTjPPa+D9/​nnEd6wkvqBubnjIcj9FGC88jBIgoj43qkFeFW+XbK6JHEOn1KljS/​fC190DZjY1wMANndcAsBTJGA+hnUAz7GfJQOYDeFp6o8xAawAnM9L5wbJc/​iERLuDh8fgETCQpaWORAKusYAxYjXm6D30B+WAKVkCVuzYjdXe7oCyoFc0ATh5Jlog8tH3FtseyFgE4IO1Y8eoy+xDqMIZ6YQkJ43vvUwt9dzcMXvAd8UDXtMWv0BnfXvyVlWiXtFAwcsOMtG8BsjK749/​PNkJEIDBf/​IxvLgYIRYJOedo8ZkogE0BC67n1EF3dXevXKlhX/​t6e4HFSmCwumXLz4LX/​eysQO7Dl2yriRzxLIdYMkrDihCLRb8bf2JBFzA/​TZqhXucB0xMjtcAkyX6KJM/​hB29wlommNUmEcDXBPqkogGtRAAtjGPhpIBFc8HcWL7qs13QB8yFMv0wBXgVqylevNljuPrx6NUhygBSHobEeVG0/​FrzHaR6LEOmzEpUD6AFmDZfQVjHv8wM4b3tNBElKQ8ul/​KUUASchTPCdCmnoI9bEGwOYRcy8WCMIKyZGcQKAjQirf8kzYKqG9HYvgPlLL7j40uLfgS/​kfgCDunLbIVuxfn1f37p1IFu9dm2suWYyz7wwYE87DA5Qa+ys+UKLdYAFvCA1T3EK7dgCzfegEGskchP5mRnmxeA79uR6epyMnY7tUnXnQAre6G0HSSrdcb0tYDKAI8A1hT/​WwmsawBRi7iX8JW7wdsASqN5ekJeXTKEEmWdewXtdHROncXIZdOkGO77PwejiAR+P7rKiy7BYUUqEA3xIQJTTnXeCg7jzTu4F/​C3uB3EYxDJnrUWZZ16+AdONDCy396ACmABcI1AJjZRIlPsyDWAoYfz6BCw2XqLMMy/​0Xl/​7CwaKGNstRtQCHAda9F47wBJ5BBwqnERJMs+84AB6yUSTCp2WVXePF2qgr13kbiIiKCdNS+SqI9fM6HiTAV4BAI/​IM8+84AhKMtEDaDv3yckeufR+JexYMTxskY2j4pcOYWEMLwokxFvXAqmHo8ZoDQoYGy954zNWcASFWZcBvBBSuZ+ttmWE31YuV83zrWCORDXGOEAAXliQobNTAsSpADYWHEJhJjqc4Kh3PtP+JbAwulqurjG9SL/​IBjAdwsIYjtOjlOjXHoNqLcDCG3YIWL0xlsmPVTur5ruJC9YEJQYcb79aH3CUoVCnkI1+rWq+XbxwzVctEWI9h93qgMMcY/​SYDyRI11133RYovJDQ6NfqZuvmm8MliCNYa9asDTUaCvzaCy98Ph6wyEuTis9M06+jTz3xBO6B1/​yAu3nAk9Uy+6Ae+Sm8XUR7lwXg+qeLRfzJSh4LFdchFbCgTYQjxu9mduAAjVhltRbtM9VmlquBAYOCj166g3O4u+zNNwd88Q6E9SgE7HfsqFgArnvzAbDIFFc+I6H6Z6R+LPj2mih++RgGiENRcM3xWiNuZMBcB+eBEDC+Z1aIXk6gFKdaRdlRr0cHFvUdFC7KpdcdiG/​J4pSHniJvre2oGxow28E52h4aA6aadYFXqyg76vXoZPErimEesD1eIGO71diAKeUJ3DjJTRuxYjg/​9np0KsBixHFoRXfpuHe3HuBVJODgMRWT+yylABiu6xMu+UKamWHxHj+OXLMMmKwgT/​Z+5Kg13XQTAc5VKhWwiBF0icaZRSb3WbdaxWK3X8A1dQBP8W6aj0i9jHT0DnEMa1mtZgIsEP/​RgWKh2ydgcsGoFmK+VjquUlqEmgaMvyEe8cHmBsw126trfHh4cNDfocUHMBTy02AzQrb6mardgHpWqug97AUeX9YjlPv3iwDXmhuwpO++nxURSJqAZUtZRIZK3m6YfJf4Mk2ibD3Aso0VPALWxTslXG1ohtcIMaQo59ucgPmm80jrrct/​Y2UA+DiPBV9YnySkBozfBT7F+urWB+yrbloq0HiMz0GL9RRnj7A10t+mIxLYsEO8rA3v3QEoHmRKqA82OeC0+RrE71NPucQbXawFMYxhHuRjuNbkgFM+qn37ZDloVo88wl5SsXd+9lk7vI8/​jjw17abhJT/​MSoPuHZSX3r8M2Ej68ctHm56lsothOmLFAdyUgE03GEyq5ICT4L32AK9JF3BcDjoS2L2Q378QeOdkgEVeGlz5o6w06Ckd9Zg+1MCAdbZMWa3aQ9y9tDMcnuIXCHlpqc9iYrjWwIB1NsVJdZK0VysHDSTzz7bumUdMTZbIqVLgpdFkiSk+SHGsNJQDexDGyaDTRHLVtAOYjV/​sn13gBRJeHZgb7/​79+/​fXag0NuNFkD9iFfzYFLFDWA0ir0QDb433IMV4NwmLEWQ8hrWsLsGxnQ6BlwCkoMFhaDoszWHNxBku9syHa0TAeMPnkX1jbmfUg0moswPrxy/​aMVk+QnoGK60QL3hMPWLRL2jJgLe2De5to5qDZRARy0ML8s/​6ehsGuhgaADx1aBqwtg/​idYsdeFcD6eIHMAAtiOOthpNXqgM3gMoibGnCwxKtxAKPdTWa0ctBw90L6cR4cezYFLesdrVboqIWA2ZUsDZroGG4wwAb+WTuA9fYDV8Rw7DRJGMMZjF7QTYXsqNIdqDEAG+JFcyRy6IM5khu8xCbwPGBBfXTWuegBclv56kbmQULqhyOSyd0XB7B6jmTinGUxLPyV/​aKq6GwBU+0iN7BPilI/​HJHcA06GVwG4JqqKbiDA3KPA1A+Hlyleni8LOCleQHhO/​CvwWJWI0x4+anebJgKsSHikAfjZpgFMbn3CX6GzByw2WGBRmdRzgYFelANOYq+wgj14+F+BDNmqaMpopT2AJN/​t3Y0HWBy/​yqs2F1o04OR4w020+F8JKCpiOOXxIzc+KfN8swa8T5x/​hku7pddoNeCE/​hko3OFQCpj30mFWOt0BHKgSfEVNJ9M9HE4Sg6W2XWrAyfnyOxxygBUxnO4AEnzFXUXTPRxOEpANAfghVg0ImLLQwqaTqR4OK5B/​FmafwUDJs9L86BMPC63Sz5TQNnh8p49HKcCHuA0A9qcOmNowoQ5YtPdYiofDCvlnIUL1xFhy9UQh7AavtKMlMR+ShHCKI0jv8FoSVkCneDi0VPnnA2rAT3ETmKgiOuEUCeNd5DvkwV8g9+HhJktoqrQ3tSGkNy0qids+p3Y0rCT2KgxgVWpLFGEIzJOJ8GL3LOydxQawIIbRX/​cNDIwTWrECbXQVJ80e/​YSobcfKv/​AL1xKI9z8AACAASURBVAJgrW3ApZqbcwG4ViWtbWdBc5dv883nqBxlVfIrnva0i5MK75TyxZCwBLEnvCK+stswB1iHr8X2ghTfquRXWg4wqnI2QxttIS32z4aAP/​KR6Ma4e7fudrHbthmOIZnD6uzvl/​yKfGthj4p5wA9HSfn0HxkhBgHZ9swEcYRWYq/​C716IBQxz0i88F/​I12M1vzGyR7uQkNUUqCLKUAeH4/​e+cSx6iM0CxAXxAciUl2xXGRzK5+TtCK+8vPScMYFHDLPDnF7agUd9qtFvjWPzAEaLvAyUp31xurb9WSGLtk9Y/​BzsCwpcVfGeCXQuFl1K64ejzz8vwRo4ZSdVdGq1bPH5cBzDMSU/​cAUb99t0mfM0M7wAFuKzcGcdjtzqh5PFLBIEqgGvqtsE0OBngOUZyvNL4leyVBgBPgGHfbMbXcAcbUuqtj9JuweEbsGSfQqVUeC0AP/​dczJALZWB46TKOmK2PchVT/​5ZE8vrnu+7SAwx8DNppRXZZ5duQqqXenBZd9I8d0wW8f3/​t83aAtVfa0zloSRaa0Jj+XniJJYtfYkftGMDoGxAamSmK7xJNvsMyfqXbWdZt1t69XzAG/​KlP6Q5iieYrzkKTquQL/​akglk2QyA3TQYQqJklBh2i8vUocHnHX6PhPMZ/​mZkgqwHCy9Jgx4Yr2LrAMX42rxcioeSLFRuL4pffT1grgGm7gr7P5xqOcdPGG93MhX/​mGtODFf28KODeiOYoDFN/​yjh06X54lYH5wdADHb8HhQvaAa8aAdX00baGrbZr7bvsnrIPXgG8KiMNruiHgaY+Aqwzfqu6+6oPe+535ApxkCyy5qK1nbQDvMQasQ2CSAdzfr70lc7vnrKXQYJH2CuigGrBk18JFqy3sVKKtmdhjceXR9Gm88JwpYB0C1So9R9Lfz3Xsxhv9AhbEL4s3uHvpBjCF2C1k2nWbBnCQk/​6cIeChofhRnJxEC0XLZQi69KlPaX55pU1/​om0lfidC2j1Dwco1RSJaMMzHQwzqhIWJmFQJn4WuicruSMGc9B5DwiNaE6UiVBWGcrmYH9H88rY2zy6LD03JP3z9WzASQcIVYGbabBy/​+FRML9JmgKsgC61TTpD3uT1OqDQAu4A8x8sacO1FQ8JeNJJv9//​IkO8CHeae2VFR9ekQjTSzA3gyTy3c31D0q8LtsUjB7h0vZE64q7u7tzeFh/​58aEr/​2Sv4ineVZXnYbwwtyVzbBHBwMo9lzbc9nW7QXBdo3j8DxUySJIBFO7ybI5bvdCiaJCmmSNHZgNPJGPDq1el0g+YCWP5v3hwwF8JQDwjEQiVfk+G1DmB0Phlfo1Ohmw1gkVjAep9KBNg8n9WMgPX4BmOnApyUsHALHl94G4FwQwA+FCgNwORDw3QAf944YxlpZHQULGsZDbQ20AhS4wDmLRYxBlzXZSXgA/​xo16KEpXstCBwW36NDKpiT/​pwtX1CIAcavP2hM2B4oj6TzlCEdwIoAFjTVVgKWhLA3xInidzrISVvRHQMT2GCK04/​UF6g3UE8P3biwuxttozI2VkFKEzCRYI5y0Fwrz5q6JFoOOKrwcClBLXRMDpoVvPHYXKRNng3g1qM4xtvaghhflSJgYfyKQKn5ygGb3Il1lTR+8TlaADZ6NiADnM8SsAyTPWDHiCW/​kQZgZ88G0gG8h+KGctCCZvhIcR2jZ1SAjx2L55YMsKgZqVrgNmR4F3a3nCgdwHRgquM3vmmlCjAwW87s1kIk/​O0G/​pmOYYN8VldPj7tnA6kApiZJKAct3JCmRr5PrgPimRIF2RFigjXia4MXzpUe0ybc5fTJTy6NxaNUYMbEr1bX2TjAZJVHnPiaaXEC5BgQ28/​fIIQf+1w821WDg11dbksf9UoIEioDwPbZaXUK0x6wzlTJQ+FFLp8CYYJbHF7dttGuAMseHbpGrEU4n3dfWJPbvfsWgSYnx8fHnf1ICA7XcJAk9kUyADyj8NLHgSgoogeH4seHoseI9IPEaBdwU8CfV9IdGR3t63NfWJPbtLlToHK1WCwOuPoRcHYHokf8pMHau5d5nyZgudXiDdZi4nJauhTgYcHGHHGKffSPs86ulcttmpgoCwjjTVomJwcSg4YDf4DDu3cvhbdD3tlQ9zJNTpF0F4fqIiYhP/​ywOWTVNZrMOjtW/​ds3fbgqIIzXvVRLxWLSH0GjDxMEUe55zx7mXahzhwFgdqpFJjl8LGah3fVjho760CFpAZ7PinTw/​R9mFrvQgIuuANeCf8eBxO8y4MvFsI55SqZkdkv66N9nRXrwE8WQZxUxJZX4RwR3Stm7zACTiP2iFWM2BSxaMtzmd91u8Cs3lAi+Vcd8ecD79knepbdzISHsprFtdrd4Ra7IVZs56vrd6fMc4TVtBfMupAbCv3P9rro2BrqeEnqknMQC6MSvoYeOdODAgQXzNYaLsVJ/​2spR19h8VldPz8qVfquWZb6OUxITv5fGu1fcUdkScLCToSFedirFywNitnzHbdZZLH3ASe4UJF7OPZNvssD7yCO6vplNXDwrFb7cq9IhUc7aKIRDo+U86yxW+oCVb7IArG+u2Bh9XCr2nepvNAOM0x0p9RdMB3CEWP2OxsDrGXGqfPUBG3czprVvnw/​ATzyBL6ZquOQjwCcDqQE/​GQrfAMS3APSqvpuG9yhQ65xWB1htwG1JG1qCFmgSewVfruk866f01FM6doi2VPPzarC85ufxZ0W/​g79b12rVfdYLe9LpWIWkDXjNmsS/​pcBrEcA6eHErw/​lQpngRYgxZNH0yRAyMtO9eKKS0Aet1j7CXIWAd7xy5ZRustLCzFm6YFVz+tbLToNTwP6TYwFkbsO/​SD0PAOuZKz07pSmW48CuaIVxrSMCey/​OsAMfjdQM3DrEp4BR3R2sUwFwDD6WQe1Z5Z3TZjPPKZsKOmr8x4JuBjpuGz0tlyR73MgDsNWdqFsBqc4UfzttZKpUiR50ghtMNYQPAPjfgMZokAf+swms7ITJBzP6+gZeGZQqpbXBoADg3qv2t4d59HR3r14MFzHjZ4/​pQK5CCDxgEMPLPMrwunbNYUaZadFPQieFUQ9gEsP5dOKwQKRZRL2O81q2tDS9hDhbDBR8wAKy2V26ds1jqy/​Q1AJioAKoDRh+VAUaEa9qAs8frCrE/​ppTQ8L/​4xS9+6Utf/​nLc8hnN74wAb7j77qDLwCqkSmWQUVfX0NAeN4DxRdKtd248wC+drOvluu6hJH5YAEf/​Cy+ePPnKKw8//​GLMNhJaPz85WQ6KNLdvL+h0kajkIV8dj4XSk2KD5ddc0QqtlvAY9HyWMnGr0qmvnK7rzNlXX31tllTbSjHgL7z++le/​+sYbX/​va17/​+1a9+4xu/​Vdfr9oAHwn7k5e2FQrdWL/​KKdgDL4zdNvARi8U3C42341nPnIF9EmAL8zW8KAX/​hxYe/​ejrUWfiZb0mu1eviD6BYDQCXq4XRUR28dYGz1SiIRv5ZlH327515QTctzkvH56Th4ndR5WEc350nvxLCYgB/​+7wQ8IsvPnyaAAzf+q1vWYYw6GIcVlRrd5rPaQawPH7TMle0xEfjNYR37jxJ0DpNExYDJt5+lHz3m2+Kwjifr/​tfFeDQPsfspucDcLp4swCcf+WV05QowLNLasBnZxnAAsKrAGDZMovxcWyvSqVi3G56hF7Qy0NL888+8s46Arlp/​oYB7hbxOWm4hMc0Iz2Uf+W3acA0s6VzcsBnWE/​21lvf+c63+Jtxpauru7unp7d35cp+djM8In6LN8bupmcXwDxebK/​0wTyjIb1vSuqzTOiuPHXqu9/​92mlGFLMLF74nA3yGphvo+/​e8LlsulW9rKxSoWumBgRLeMrFUvFF7K59cbo/​eHOkp4QTJ3D0/​84zOtu96iOcFU6WH/​EyVVrZd/​ApLl7sLz77NEc5Bw332VRHf2dkfvPmmZGo8smYNaI4Jsszr168g47d8xx3XXae7EYhhAMvuvnruGRXt6OAF0irwcTxV6tu27XckOnfudwV82bvw7/​yOCPBZMV2kuOxWaLsw4Kr+Rk3OAOvgffxxXbSR0gacP3lSSFEhGt6FCwLASr6zIqtFEwZ5ZYKvwfTIBLB8KL3h1UHslHA+b8y3jo/​ixwN+TXj3jfTlL8fwWYUyynffvWFDtVoqfexj+vY5JcAnoOwAo8/​6B7zz3LkvfvErX+FMlCng32Mz0jk1Xg3AgSr5QgEsPG03sM9Qeh7rKWnmN+5OqWeq1JJbrqQ2K3jyf+vOpaVXLOjWdYY2yGxGOhbwm29qgqp0d4OFp6Z8EwRwfPyCCU9yvAixBHLiEN7b13fq1EsvvfyyhG/​dAp89e+bMGQVikjCbkY4F/​J3vmBIz03NaeWiQhWZTCg/​E+Wd9x6wn4bVCCPhRPcCoHWt7+0WxQUb0jr5aF2Asfw+ZgmQz0pkDThjAqvh1ixdIF7BmvnIaA1ZcgY9iwGdV7yEQmwJ+6y2CRt0tm3rkjAC7hytBnBzwW29JyUknOHXm5NsowktmgL9NAB5d0dGxQvcZoJ708tAgDc0moVECWozX1jPHi3PUc4KbBwKsUyMNMtK/​LwWsmMBShBnA54wAz34/​ooE2AOnpMTZScvkIYFfGSizGbIkz5JouC8XwH8jslWIG+9prr70aqv4/​iLfSGel4wLMRDfyhPmeEE8yRZID94uUQw8PgJkpzehOlYKokJqziqxaZkdYAHKWywk+t7uoyTWeI5WGO5BsvEAvYuvoO34ZF12fJ8wENERnpPg3AUXkHeW03eJ6/​DDgOcE0A2BovlZHO6wAOCXe4JqxZbScYQhnfNPBSiJMCnhYDToCXBJx/​hQZ86TuCt0e5LArw+tHRNY0G2J979gyYuUaftb79Av3wHPbRO79EA750/​s23FIB76Cl0f6FtLBnfPZr10LyNQRaLySz5t1eRQqOlMFl6gGHP3GOX3dgroAsXcT761p2vfI0C/​IMfvP76PfewH/​it3wJlOt3dDN864ZUru/​Uqn8fqH7cP4Cl+BIUBnB5eIBIwy9esuxIYhWPO4nfp1Cn8vOEP//​BrpynAIC35+rfYT1y5AlcSCUvthgv5VfF8K6C8R2C7deuhtSyW68xznOYjwOJEhzZguEXYD1zF748iOkvvnOYB52SARXw7Ogr5fDxgWL8lyHHq13JoAE4X79M4hOWpSoP+aJTPsp8eAb1NwFk6zQB+Ha5Zef3189RHzgsLqiPF2Gmi4Ugb/​coefcDsILYsYHV5jYYIMG2npYC/​bQJ4/​VoVX3IXvvWU7d7zeYN66DjA6flnGvCzCsD6Pf9hStoJ3yPRaG/​jAF/​6whfGxsD2wocPvxv+8cKFL39ZDbijT5KdroAKaqpjLmXKXjAJ4MUYwKnjDQCLPZZ+LpoI4a9//​Uyy2+/​s7OHDxGD/​0R8xgC+dRwu0C4WdOy+EhC9ebNfoaizKTos2iuknFpRqzpGmRPMQFnCKE6RQz+A1hoLVrODPJq3CwVTps28eTcaXwtvRcfINBvAPfjA0tG3b6tXDwzt3fvOb7777x3985cqFCy+9pNXVeHVXFzVhqgwODg0JjPfw0NAgAViDr1aiMgO+dR/​9pDjLERyf0Ta0YDA+a2mvLgQrwOmR/​jGqkycAL1FPii9evHIln9+5U4cuEmWhFFtNtLcK4KfnlICNNpKGKQHLyH1bOMxLp9WAOxBgfb4UYeVGMe3JATNPgxuRL9he2hSxe74kYKaf7H/​8yU/​6+m41Abx+dHSkrrVr160LlrPI37cMODng7x8+fKQufsFZXT96gwesY6bUqluouuK/​B1otzTVnYpOFaqJxLjoLi/​X00yfmRP4eHhwGbLJfOPBZ995rwvdKvlc2wt97+zQH+JKDLUD6e+vS+J76+3SzHNJlo0QIZ8I3LoDn4G3VMIRNYvjll6V8O86d4wHHpDNcSzMPPYUXfnOjCIrugkXfmfB9HlIU9quGrxyHwPbre2lYJf0ZfcA/​vCgf3aiTRwg4Ll/​lWtoBrAzhuewAS+M3ugUbxrBpCKsAn+YAL4kaPHjUMuDEgGcvXJDMcvKnMwesfwtG61YEIxktXcmCL7RYki2zwEvHMOBDh3QBwyrp+wwA/​94FcZ5iSAT4nKCBh0fpPusPQ1gWKHMZAZbHLx3AxjFsEsLvvveewNLe+t3vCgAnnySZaK9uIjoELN3SZn4+C8AggBfFPasXWcD6cyWLqRLPDRTqCACnsY9eJKMAlt2EcQw/​+Xz6gOXxS06S/​N+Gv3/​uHLvF1p/​8CVlHjwFn4KGdAZ6bu3YB18XuWHaRWqwYAG7gSdKUqsVdRogVeAV8fWY7AGCGsBDwO+80MOCDDQb4xImGAnzlCt03+t13X3vtNRZwA8+Cpw7U0Jgpu0SnV7KD8EoMFrZYC7aA4WI0E5slUbi6NACc8iTJCHAtAKyalKQYw6pjEQdwag+GGcRQAeD3ku4taiaw16xeInpqaqZWO45GTbwPFm7k/​3wqXvp5mIKW75iIGlcfpwGb1HagjLRBSjpG2EWnC9gsgGNCONUYjolfYQBbhLCTGKYA1+/​CRtUbjQQ4LcRzcYfR0IDfXTKpv0omk40Koes4hsZNfmF8wL/​VOhE84I/​fMfHYMRawdjp6OshIG6Wk9QDPXjh8WP4A2a1MAzg+hL27aYzXJn4NQ9idz6IBg7rodAjvNQB8AA3QgmKmlALiCO+icr9xwRTJAvBBT4BnLx0+/​JOfsJlND6oZAMYjpBE+4Z34eSg3aNF3BXeIR1X7jYe/​L+BrBti+wDIG8Cx4hJyCnfYN2KXhIr9R+eNNAnj2ApvZbAy+IWKtIXaG2AKvkK8hYJeEWcC/​d+XKN7/​5IzGZH730knh/​vIYB/​AAUHupkd2PQJxp/​E/​jWFgFc17sX+K0dgL739smT4v3xjGT0rJ8Yo4VYk4OF7VYSxBFcs99cEFksY8DGD/​6NANenxEtHjjBrGm49cuSll9544+LFU6eMVjvwMglgErDWbViAmJRO1CKZ4Y2JX2PADmdKkj5Z7yztpDjeuhP0ewD63Ys7ExEGaWjtPDQFGGekYy+WQDhDTUvtrbFbJqX2zVjhbeG4AK4NYNMaaWPAs0xea+dOvJjp9MVkGS+jAKYA4xDWimHWcGGpAIveb/​hbEr7GgN2FsKLTHdH3bIncM++VV5I8PE4NcBxqtSy/​v7kAd2Eo51jA9k+PYT20bh6aAXwMp6S1LpuRIl+tK73bABJ5M+CS0NaAnSWkhYBfg92Iv/​GNP4I6fPjChT/​9U9xY/​uzZP/​uzl1+Omm15DeApZpxsY3gxVBxa9C6T7yY/​LeNrDthZCAsBA5Q4Xsm2a6gHNYB88aLdhMmsHhpnokMt4Jy0EQIatRpvku+TTJHsALuq3ZFE8Kuvwk0+2F0NX3st6DT+wx++997dd6cdwEQMm1xEaT2qkOl30Rd/​KV4bwC5CGDT6l96DYdGWsm3T++9nCNj8Mu1DdPw3HOC5OZXJejWuLZct4CR8GwrxnDZfG8AOEpZqwLNxuxraXqKXAacFWHmJjpc5Xuix9C2WGDA2Wkmslgtxds05YCcZaVvAl4xL5fuOHDEp5ZACphFnBVngxp0DdjJVsgV83jRhub59aQkcr3YaWg64Vjt+PBpXez9tL1HqRJaGTgDYRUbaEvD586YJ6fYAsAFfOWDyTpzFvZjHqw5gS8AuQjh3NP49AhnWfbwNVrydP98igEV4GxfwGasOmG1GtXk/​evviG3XA9zkEjPPSQOYJiiQSP4iUp6GBjPqSEnKQkc5ZbRFwwSBPCUsFQNume2sOAdMxnJ7ZkqY6fQSwixDO2WwCceFIPNeQ786ll1FWGx6swSQpBnDkpTHkDPEKi6FDGTQ0ZJQ4I/​1gLi4hKdAfGzwt/​PGRI0EpyBnjAFYDpmMYSKc0zl5kOV9aAZw8hOcA4NOGRuuKPl+iVOCod8BA/​gDL4TY+YDPCVwwALy2FfI8a840lnCLiBHgTAU5IeC4AfMbkQ6dOadId+uIX33jjtwPAs7MpAbZ57KcSepDY5ICNpkriqmlevXmyIdcsMNFGFmuKf+DPakEy4IvODFd8DYjyQT+UvceaTmizHkSAjabC77yjxXfluXPf/​S7ZkOteiwC2C+EAcSQbrLolPhrxmyiALUP4wQfh/​5uDgM1SHfkhHb7r26KOxdEkySQPrQf4eOzoz5lnq82K9I4rk9A1s9XfAlklpMGT4NnZo/​UbVs7UQ+e1Ls9tbSdP84CN+cYClocwJTPAJnjj4zdhANuFMAIMztz0YcOFeLgd7SdZusEkKTPAPtVagK9oAF7dfvJrLN+zIA+tXw4daiZu9MicdBbi+3Gwss1Dh7JISM9DwPOg85QZ4EvvvRdD93unTi0tvcEFsJ3F0gnhjGM4/​viS8rUI4bp5BiZrDtybjABfOh+38Ox7b1/​8Ckc3uAObzpGg4iZKfE46TcVNkGoJ50hIcBN4g5lSwPdBc8D33KN8zH/​rj3/​853/​+uzzdM2fPglO14asTwlR9R3o6fjzWPwMl5zttWn43F96BTQHHPObfubTE0z0NH2Z4BZzNZVrrwJoMsLrhIbHE1B1fTcKpI9bE64avGWGKryHgK/​fI+Z77i7/​gzdXps7C62j/​gdN10vHduUsDcJsSRjiy9wk2OgmKCe+se+oCVxQI6EO+zoNIzWxrWCsuBxYIysFmRxVpctAAsRtx77tzLL3N8z7z6KiwWAWdqi1c/​htNBvLBggNdZABuEcMAXzZGsAM/​OHmErdvrywugNctyfqdlkoQnBaYKWfPtpLd9MKGEamhDISGslpOfm5sH/​O4pbt9rVRTOA8/​lXeL5hJRA40yR8DWLYt9kyw+swgPVDGN2AwwC2BExCbhNknqk6r1QB+0JsirYFAN+DHPU2IWCyjs8B4JnYnHQkH35a3zWTMthaVg+wRkIaZaFRGjohYGC3Dp879847b7xxRmyu3AE2i+EFqORYF0LZ4HUav7oJadZiJQM8C7rTgs4dRynCTJ21TakOL93JEok5KV47rFgm27trSK90J+D7YNRaOyHgK1dmYW8W0JjlDBTT1cNRAE+ZxTDS8URKhtdx/​E5rhvD8fMA5rHFICJjU0aMAM/​fn7ABnq0wAB/​IDePaoT75Nhtg1XiPCc54ACwWOyhFgEy+drZz6Z33AwQU6VcBuLBaWudXKQo7tFRayWSqfFcyBUwUMDsoZ36nmuEx7wTutsWVWBoAT56FZ6eels9IhdwloRrBCWpWRDgAfnSP2EPMMGByRS75TjR/​DvvBOx4dwlKaMKsGbD3CjI76mAFtWQ8eood20D/​+MBSukFRnpMA9N7MTrFzA4Hud8p9Jz0wvmelhHtoTRUUmH+0GchybW6ngF7HaOlDpifxUitoiRw1S3NwTl0IspAQZH44fvlFs/​fUwoX3iBHpNKI4SV6Q7w7Q+1AmCXZssnSlM1EWDPfJ0hzhopq0SEwRc81DKAZwKZ4OQfDMqH+gFPUgN+QqBGBOzRYrHSt1wmxmnRW2s1vdYQpLAtC4yH1GY9mCJg/​wFMIUZSoeULeRaV8oUXIY4XixgqKCCSDfpceoCdp6G1JPPWIk+cbhNTc8maN4ESQElG+ig8L/​JL/​AFONYAJiQGLBiorcPqSXbClIcyfV+sBhpKNTFNg5SU6j4wB3+cnDa2pJ6R4s9gAILlEtnteBpg+Q1+AaxkF8FNQ9FCkZZz86S//​E9R/​hvovgd4XCPz9p5Q8AYZNV1KaI1F4+X/​pzQqV0F8+/​V+h/​ltdx//​qr43kCXCKAfwIIRKs7X6EWepv/​jbUfyd04sTfQf0PIDO+LQC4lcwUEamGHLMAvIzXVE9HgF3xbWLAKEdL+mNSWbNS6++RAfoZo3/​4h7/​CanDA/​tPQvFPOGpqBAtP0M2cUUwfsN4DpiVAjT3/​+8v66fsrpH/​8RBmwafP0A9pqGZr1y1hAV+hsQqX+XCsd0AXsN4CYyU9A0Zcu3iQA3slOG99SMSUqUM90VS0M+0tBPcOnlBnLKfw8AuzO+TpU77R6w2wCms8vZZpWhaeJtEzRNWZOUKGe2pY6OnM6R6OlQxm45zemNK+VOOw9hJwHMZpfTzSv/​jSgjHOaEs2ZmJLDrit0e0X4BZ2uowpRh1niSyz1gF3wz9sthTjhrOg6UM95c1jdgMsOcTmb5p/​8TSpATzpqOuS6T+uCDf/​qnnM0G4ColtFh0EtIv2ED3Wz1Ib0xdZQCfPp1zzDdJALPTIW9E6UnOz37WMNF6ldb/​itH/​5vR/​KP3zP5854zqTZZ+GJnPMXv3y35oWRaQmOv4uXxZ08aVbvh6Nl2vA9gGcmqlqXOt0uWUB+0XrtAQmsYJ7YwhJh1ICuQVsVw1NumYPfH8KADfELRboMgvYL1/​HgM1r7WhjlZzm/​Xy2GJqo9ElyNimyQcD8YHnm6xawcTW080nR/​ahkrQHi9Sp7F/​WOMgXARgHMZppteAYZ4wcewNnioHo4VZJA/​5fTv0CdSS9UGw6wC9cc1BCnS5QR53czIimRc8Ap4n0IF4lnzvdyw/​LNCDCdbdblCS0TmTV2XkQcw/​KDD0B2F+v/​Qf0z1NlIWRNl5BKwbhra0jffb7n8ypWuQsDpTXDcyCVgnQA2mRYxU54wZtMiWr/​00hMcEKuZuyZDOQSskYY2yjf/​LYrYzG6wV3G8NglKsRwC1ghgI2vlehmWqcILctaMEilNwGq0jpdNWulyOvnhNOUO8H0xgLFzlrjmnzZADgpPd1qIr0PA6iwHtlaRsWJyxoGFSoPjVdo8kY/​Lm8k+6ckZYGUeOnTOkW++P7N4vRo+zWm8Wat7OQMsDWCcc34WKKoxTi1nzGWK/​+Vf3n+/​9SJVJv+AsbVKA6ZIRCLxGghYTk4BK/​hmhfevyUzxNcjXK2DYHfUfkFLkyeeKGzRNnIr8Af7Xf00LKqGr13i88nIJ+A/​+lVRKPPmCmObKFfuWO8C///​tpIGX4Rk93luNVLHeAU8cLbrjLgOOUjaML0AAAAbpJREFUDPD58+fff/​+DDy5fTocngXOZp6YSAb6EAV9Nhe9yvFrIFPClS5e+/​e3zECxAC3TZB9+rVwUGKnrcnvWwNY8MAeOY/​cDzRfnq5eV4dSNtwN+GQn3F64CFWP7t32x5srXFoKYYZ4yX4zWJ4gGHl+N4TgsLloCpeM16SFpLsYDD+60GJ1vA1IKsrEekxSQGDI3U++8Da4PXquoYKYNL9GVcYczVFmc9Ii0mIeDASnk0UsRD96xHoMWFAQfTn9BEuTfK4WJKesqT9QC0ujBg7zmp6DnPcsymqRxppXxOby8vA85EOZ3pjz3V5cxx1sp94DGPvByz2Svn2kqRNcetWGfcbMq55tsKC7ZaSckBU1nkMIOc9XktK1BywMQ6gaxPZlm8EgO+vJyTamjZAA5rj+m646xPZVkiWQBezkk1k3QBU3nk5elP80gT8NXlmG1SaQJevig3q+SAQ3ec9SEuK4mkgMPpz3LQNrVowEEmmXokn/​URLiuRcjRfFLXLQds6AoCvspnkrA9qWe4EAF9eNlOtq1w4Bcr6SJblRTmQTV5OJbeuclkfwLL8ahlwi2sZcItrGXCL6/​8Dhwn1Xc04dfEAAAAASUVORK5CYII=</​logo>​
 +        <logo storage="​base64"​ type="​png"​ name="​qt.png">​iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAANbY1E9YMgAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAfoSURBVFjDxZdrjF1VFcd/​+5xzX3PvzNy58+70RWmBtjwqlgwVy9v64EMlhiZIVNRA/​GBIkPBFEpTExBANX9QQQ+KDD6DEoJFiVBRbXi2FFqbTmdJ5d6a9M7135r7m3nPPOfvsvf3QO23pFKiCcScn573/​v7PWOmuvJYwx/​D+Hs3QghLgP2AEMAcPAFDBkjKn9zwGEEDs710Tu/​96zXVtnx+RNM0MyPzsiS0N76nkhxOgSTAMo/​4kCCCFanaj4ZsdKeyPAuk2Jzt71kU6AnQ+3UsyGpdzxsDQ1IOffe93LCyFy51hpyBgz9XEtsKtnXWSDExVJgPW9HaTiDq4fEGpFrStIlzb46c2fDdd+/​jvNyLqR2ZEgPz0o88f2e3khROlcIGDqP3GbA+xo67U3LV2I2y1EhENrQgOajpRiTYcGofCkpOYFkQ1rghWlz/​grbvlGSKg0S24be8vLT70TlBpuGwL+ZoyZbbi5DbgO6AEGgEFjjHbOJ4pYzWgNYACNEGf3cVuTSBk6Uwo6FQaFJwMWV/​ud5X6vs/​pVSakWUMyGpZlhmX/​20UIEeEoI0ebYkaebEz19OzY8khwv7Dl1aPoPOSHErmUARsdQxiBOnyGEwRIgLIGNwBYCSwAotAmxHEk8KelISUCBUJzsXUx3ra6kn320sEMI8ZwQ4qlkPN2Tab5s1TXrvpiyoqEaPLl73g+rzjKAUDkIAQIQAiwhsCybKA6VQsjMTI2qG4CliccEvb0JunpaCJSHJgQUva3NlGt6acqd3elLNqZTPZu+tP4xettXkKtd0hKNNFl+WI1cAECcEbctG8e2ESrCwNsuxyclthNDWDEQp+NiZkLS2qa45tok0aRCESLQxOwmgO62lu5vdaRWXb553T1s33YDhXIFOxpqgQEw1jKAEEIFSltgLKJWjH0vecwcSxIzXVhBK2E1hnIjhNUmLD9DNZfhjZc0fi2ODmPIMEZuRhNxYpeu7bp6y7rV/​fbO67/​C/​rGXiCYNsQQ0fMwyC0gVIoQgYsCyIwwd8KnMZkgkmqi7VTJ9HlddH6UpFccowfhQwMhhm3islcOvF7nm5ghT4wV+/​5MsG1fd0NqTXp+8+/​YH2HvkOYbH3uCm627ByaOlqmsgXGaBQAWESqKNQkvN2KE4zU2dSA9ae4pceSP4tkvJq1HzPWIJw9X9itBzcHPdLGQNb+3JkljcQntybfLWbXfS3p1h/​+EX6WnvI5m2ae9Ix/​q61ieAVcsBQg+pfIyRTA7VsXUrQkeo+3k236Qo1cu4gYsg5N2XFa//​OYpUAZneIsloO9PDNrlslfHx4wyPHaKvr5fWjhhPPPI03733EUTMY8uVW3vuu+vRK4AdywC8sEqg6ijjUV4ICSUs5Iu0rMxT8cr4oYttSV573iU/​3k3ESnLw1TJtawoU5ssUszaXXJUknnHxVN2vqWyx4E5Ui8UZPLNAU9rBF0V39MRbC8DIMoC6rBCoKqGuceRAhepijXxugebuKr5axLI8Dv51kRNHMqAtStVJ+r9cI72yxuTENBPDFa7oj7H92wEVOTr/​8ON3v/​LEz38wdteDN7D7hb20pCNM544sPPPCz6aBV5YFoa8qIDziKqBUsvD0Ap7nUffLtArF7IjgjT+1sXKlIZfLk1soMpctsOrSGLNZjSZA2gUu325j0G+WKoX7/​3Xwj7+N0tbsWJEVripwqjBVFUIAiGUASkukMgShxerNNkf3LAAwNeTiuopnfmTo68twfHoSSzjE403sfjLPjntcpEyQ7FxE6oBGoaOBYmg8z6J+Ijt/​TL16QHFw8LX5QPoaUMtTMaAxSK1IpA3FYpFUKsWhf4Y89IsWutYucHLqJLsedJgc9ji2L0MsluFXj50i02ZIdVdRWp+dzxgthNgVUNz4u5cf2/​q7l9HAYGMxWg5w+iWNVIqN26K8+FQBy7XwvATPP1nkgZ+2s2d3gcu221x5cxIdFnhvfyvNqQyVSoXbb+R9AEsQSwXN+VrWhQC0MUilCG1F/​x2nrQCw7y/​wmx/​nuPbGZqK2g/​IF7b1QLBYpl8tUKmUW5oL/​riZ8PzGEWuPKgFvuaWLknQJTgx6O4/​DuXsOBf2QRVoj0BY4TwXEcFhcrKKUZG7RZ2R87U2p+FID1QTe00fhhSLle5+s/​TPOp2xSFQgHXdZGBwq9DGCqq1SptfS4P/​zLDui0ht96bRJ2ttJNCiG4hRFIIYV20Bc5aQeFK0A7c+VAL132hib3Pl8mdCMAYkmmLT9/​WzpbPNeGFkq89nsELQ4w+A7AC2A6MAhNCiKo5rw9wPsw8SxB1eTom2jbY3PX9NHbjY6RW+GFIwa2hjcFgOK/​N6AK2na5UyAO1xo92cQBnIIxGGX1mpRRCYBqC2iwTZW5MqqnDgQeMAzmgAsjzxS8K4FwQhYELdFJTA4GcOhz4E4f8WvZoUKlVdBY4BuwB3gNOARVzgTbMAf5enFWbzq2MP2z4VW0mB3x5fEB62VHpjrzplYDjDaFB4CgwB1SBOhAAspELLhiEz81NyDua2601QPL8B+bGpJobl3JyQHrjb/​uVhROyBEw0hEaBg0C5Ieg1BNUHCS4DMMaUhRC/​nj+h+oCts6Nyfm5M1kcP+GpknydrFZ0HZhqNx7sN8UojoPzGdtGC5w+x5JZzmtOjDZ/​lgJNAEVhsCHqNYFLmE2qrxYXmaSQNp5HJ9Mf5wo8a/​wbMdF/​5/​uHI4wAAAABJRU5ErkJggg==</​logo>​
 +        <!-- L'​intégration des logos SVG ne devrait pas poser de gros problème -->
 +        <logo storage="​xml"​ type="​svg"​ name="​test.svg">​
 +            <svg width="​300px"​ xmlns="​http://​www.w3.org/​2000/​svg"​ height="​300px"​ xmlns:​xlink="​http://​www.w3.org/​1999/​xlink">​
 +                <​title>​Small SVG example</​title>​
 +                <circle cx="​120"​ cy="​150"​ style="​fill:​ gold;" r="​60"/>​
 +                <​polyline points="​120 30, 25 150, 290 150" stroke="​brown"​ style="​fill:​ none;" stroke-width="​4"/>​
 +                <polygon points="​210 100, 210 200, 270 150" style="​fill:​ lawngreen;"/>​
 +                <text x="​60"​ y="​250"​ fill="​blue">​Hello,​ World!</​text>​
 +            </​svg>​
 +        </​logo>​
 +        <!-- pas sur que l'​attribut "​type"​ soit indispensable,​ par contre -->
 +    </​logos>​
 +    <!--
 +  Une fois qu'on a notre réserve de logos, on commence par définir notre cartouche comme une grille s'​inscrivant dans un rectangle (= la place allouée au cartouche).
 +  La longueur de ce rectangle est inconnue (elle est héritée du schéma), et sa hauteur doit être fixée de manière absolue.
 +  On définit donc le nombre de colonnes et le nombre de lignes de la grille en entrant leurs dimensions séparées par des points-virgules.
 +  Les dimensions peuvent être exprimées de manière absolue en étant suivies de "​px"​ pour pixels, mais aussi :
 +    - relativement a la longueur totale du rectangle, en étant suivies de "​%"​ et précédées de "​t"​ (pour "​total"​ ; ce type de mesure est transcrit en mesure absolue des que la longueur du rectangle est connue) ​
 +    - relativement a la longueur totale du rectangle, duquel on soustrait la somme des dimensions absolues, en étant suivies de "​%"​ et précédées de "​r"​ (pour "​remaining"​)
 +  Ce dernier type de mesure permet par exemple de réserver la place pour un logo (taille absolue), et de partager l'​espace restant avec des mesures relatives
 +   ​-->​
 +    <grid cols="​50px;​r25%;​r50%;​r25%;​50px;"​ rows="​25px;​25px">​
 +        <!-- On a donc ici défini deux lignes mesurant 30px chacune, soit une hauteur fixe de 60px pour le cartouche, mais aussi un espace fixe de 60px a gauche, tandis que le reste est partage entre trois espaces.
 +             On définit maintenant des champs et logos, en indiquant dans quelle case de la grille ils se logent (attributs row et col), et sur combien de cases supplémentaires ils s'​étendent (attributs rowspan et colspan, valant 0 par défaut).
 +         ​-->​
 +        <logo rowspan="​1"​ row="​0"​ col="​0"​ resource="​dott.png"/>​
 +        <!-- pour les champs de texte, on distingue le nom du champ, son nom affiché (qu'on appelle "​label",​ et qui peut être affiché //ou non// sur le cartouche) de sa valeur, systématiquement affichée, dont on ne mentionne que la valeur par défaut -->
 +        <field rowspan="​0"​ row="​0"​ col="​1"​ name="​author"​ displaylabel="​true" ​ align="​left">​
 +            <​label>​
 +                <!-- le label et la valeur peuvent être traduits -->
 +                <​translation lang="​fr">​Auteur</​translation>​
 +                <​translation lang="​en">​Author</​translation>​
 +            </​label>​
 +            <​value>​
 +                <​translation lang="​en">​%author</​translation>​
 +            </​value>​
 +        </​field>​
 +        <!-- Il est également possible de spécifier la taille de police à utiliser dans la cellule -->
 +        <field rowspan="​0"​ row="​1"​ col="​1"​ name="​date"​ displaylabel="​true"​ fontsize="​12"​ hadjust="​true"​ align="​left">​
 +            <!-- L'​option hadjust="​true"​ peut etre utilisee pour reduire la taille du texte s'il s'​avere que celui-ci est trop lent pour tenir dans la cellule -->
 +            <​label>​
 +                <!-- le label et la valeur peuvent être traduits -->
 +                <​translation lang="​fr">​Date</​translation>​
 +                <​translation lang="​en">​Date</​translation>​
 +            </​label>​
 +            <​value>​
 +                <​translation lang="​en">​%date</​translation>​
 +            </​value>​
 +        </​field>​
 +        <field rowspan="​1"​ row="​0"​ col="​2"​ name="​title" ​ displaylabel="​false"​ align="​center">​
 +            <​label>​
 +                <!-- le label et la valeur peuvent être traduits -->
 +                <​translation lang="​fr">​Titre</​translation>​
 +                <​translation lang="​en">​Title</​translation>​
 +            </​label>​
 +            <​value>​
 +                <​translation lang="​en">​%title</​translation>​
 +            </​value>​
 +        </​field>​
 +        <field rowspan="​0"​ row="​0"​ col="​3"​ name="​file" ​ displaylabel="​true" ​ align="​left">​
 +            <​label>​
 +                <!-- le label et la valeur peuvent être traduits -->
 +                <​translation lang="​fr">​Fichier</​translation>​
 +                <​translation lang="​en">​File</​translation>​
 +            </​label>​
 +            <​value>​
 +                <​translation lang="​en">​%filename</​translation>​
 +            </​value>​
 +        </​field>​
 +        <field rowspan="​0"​ row="​1"​ col="​3"​ name="​folio" ​ displaylabel="​true" ​ align="​left">​
 +            <​label>​
 +                <!-- le label et la valeur peuvent être traduits -->
 +                <​translation lang="​fr">​Folio</​translation>​
 +                <​translation lang="​en">​Folio</​translation>​
 +            </​label>​
 +            <​value>​
 +                <​translation lang="​en">​%{folio-id}/​%{folio-total}</​translation>​
 +            </​value>​
 +        </​field>​
 +        <logo rowspan="​1"​ row="​0"​ col="​4"​ resource="​test.svg"​ />
 +    </​grid>​
 +</​titleblocktemplate>​
 +
 +</​code>​
 +
 +Note sur l'​encodage en base 64 ; d'​après [[wp>​base64|l'​article Wikipedia sur base64]], pour un fichier de n octets, son encodage en base64 prendra %%(n + 2 - ((n + 2) % 3)) * 4 / 3%% octets.
 +
 +==== Format des schémas ====
 +Dans les schémas, on ajouterait un simple attribut XML ''​titleblocktemplate''​ qui ferait référence au nom du template. Exemple :
 +<code xml>
 +<diagram displayrows="​true"​ cols="​15"​ rows="​6"​ order="​1"​ rowsize="​80"​ colsize="​50"​ titleblocktemplate="​ERDF">​
 +[---]
 +</​diagram>​
 +</​code>​
 +==== Liste des fonctionnalités à implémenter ====
 +Il faudrait donc implémenter :
 +  - une classe capable de lire un tel document XML, de le vérifier et de le dessiner
 +  - l'​embarquement de templates dans les projets
 +  - les menus, fonctions et annulations nécessaires pour changer le template d'un schema
 +  - les menus, fonctions et annulations nécessaires pour changer les couples noms/​valeurs associés à un schema
 +  - la mise en place de dossiers pour les templates fournis avec QET et pour les templates persos
 +  - la gestion de la configuration par défaut :
 +    - qui se décompose en :
 +      - définition d'un template à utiliser par défaut
 +      - définition de 0 à n couples noms/​valeurs par défaut
 +    - et qui doit être traitée aux niveaux suivants :
 +      - En dur dans l'​application : template reproduisant le cartouche classique + les noms/​valeurs actuels
 +      - Dans la configuration QElectroTech - le modèle est alors choisi parmi les templates common et custom
 +      - Dans les propriétés de chaque projet - le modèle est alors choisi parmi ceux déjà embarqués
 +  - Conséquence : il pourrait être utile qu'un template expose facilement les noms de variables qu'il utilise pour son rendu
 +  - un éditeur de template :
 +    - dans un premier temps : un simple champ de texte
 +    - à terme un éditeur WYSIWYG
 +=> pour suivre l'​évolution de la %%TODO%% relative à ces fonctionnalités (construction de la %%TODO%% et réalisation des tâches), se reporter à [[notes|la page notes]]
Imprimer/exporter