← Back to team overview

phatch-dev team mailing list archive

Re: icon for mirror action (juho)

 

Hi,

2009/6/28 Stani <spe.stani.be@xxxxxxxxx>:
> Hi Juho,
> Arielle (new graphic designer for Phatch) made some icons for your
> mirror (tile) action. Please choose one of the two, embed in the code
> and send me a seperate patch including info.py and copyright.
> Best regards,
> Stani

Nice designs! Good work. I ended up picking the right one. The patch
is provided as an attachment.

By the way I'm going to be busy next month (July) and after that work
starts again so I probably won't be able to contribute very much.
There is one particular thing I will, time permitting, work on next:
the image manipulation layer.

I have pretty concrete idea of what I want from a image manipulation
layer. The basic high level requirements are as follows:
1. provide abstract interface based on which actions may be generated
on demand (ie. the simplest of operations might not need specific
files even)
2. provide means to manage dependencies (two way system: user can set
order of favored dependencies (ie. use ImageMagick always when
possible), optimize the execution based on this (ie. use piping, avoid
conversions, compile adjacent transformations into one operation))

Compared to the current architecture this is going to be quite
different (top-down vs. bottom-up). In the current solution the user
interface and functionality of each action has been defined
explicitly. This solution on the other hand aims to minimize this
work.

The interface of each operation provides enough metadata based on
which user interface can be generated. This metadata may include type,
limits, description and so on as needed. The part that generates user
interface itself does not belong to the layer. A simple rule matcher
may be implemented on the user interface layer of Phatch. So in this
way the system is generic. Considering this fact it might be
beneficial to treat it as a library of its own.

Note that this system may coexist with the current one. There are most
likely times when you want more control over the user interface and
you want to do things the old way. That's alright. This system is not
meant to replace current one totally. As mentioned in the main
requirements the most important things are abstraction and dependency
handling.

If you didn't get the idea or the reasoning behind the layer, that's
fine. I will let the code do the talking once I have something to
show, as usual. :) In the meantime comments and ideas are welcome of
course.

Sincerely,
Juho Vepsäläinen

>
>
> ---------- Forwarded message ----------
> From: Arielle Cruz <arielle.cruz@xxxxxxxxx>
> Date: Fri, Jun 26, 2009 at 1:35 PM
> Subject: Re: Phatch 0.2 needs you ;-)
> To: Stani <spe.stani.be@xxxxxxxxx>
>
>
> Hi Stani,
>
> Sorry this took a long time, I was busy with a project. Here's a
> couple of icon studies for the new Tile action. I've made it public
> domain (see meta) so it's free-for-all.
>
> Cheers!
> Arielle
>
>
> --
> Arielle B Cruz
> www.abcruz.com
> your graphics, multimedia and web publishing partner.
>
>
> I am a Man of Truth.
> I am a Free Human Person.
> I am a Peacemaker.
>
>
>
> --
> Phatch Photo Batch Processor - http://photobatch.stani.be
> SPE Python IDE - http://pythonide.stani.be
>
> _______________________________________________
> Mailing list: https://launchpad.net/~phatch-dev
> Post to     : phatch-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~phatch-dev
> More help   : https://help.launchpad.net/ListHelp
>
>
=== modified file 'copyright'
--- copyright	2009-06-25 12:39:22 +0000
+++ copyright	2009-06-28 04:14:43 +0000
@@ -250,6 +250,9 @@
    
    http://openclipart.org
 
+The Icon embedded in phatch/pyWx/mirror.py is under Public Domain and was
+   originally designed by 2005 Arielle Cruz.
+
 The Phatch Logo and Icon, and some Icons embedded in the Files in 
    phatch/actions are Copyright (c)2007-2008 Igor Kekeljevic and their
    copyright information is embedded in the svg images or blender files in the 

=== added file 'data/blender/box.blend'
Binary files data/blender/box.blend	1970-01-01 00:00:00 +0000 and data/blender/box.blend	2009-06-24 13:13:19 +0000 differ
=== modified file 'phatch/actions/mirror.py'
--- phatch/actions/mirror.py	2009-06-20 04:46:32 +0000
+++ phatch/actions/mirror.py	2009-06-28 04:11:08 +0000
@@ -17,7 +17,8 @@
 #
 # Phatch recommends SPE (http://pythonide.stani.be) for editing python files.
 
-# Embedded icon is taken from www.openclipart.org (public domain)
+# Embedded icon is designed by Arielle Cruz (www.abcruz.com).
+
 
 from core import models
 from core.translation import _t
@@ -92,117 +93,129 @@
         fields[_t('Direction')] = self.ChoiceField(DIRECTIONS[0], 
                                     DIRECTIONS)
 
-    # TODO
     icon = \
-'x\xda\x01@\x0b\xbf\xf4\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\
+'x\xda\x01\xa0\x0c_\xf3\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x000\x00\
 \x00\x000\x08\x06\x00\x00\x00W\x02\xf9\x87\x00\x00\x00\x04sBIT\x08\x08\x08\
-\x08|\x08d\x88\x00\x00\n\xf7IDATh\x81\xed\x99m\x8c\x1d\xd5y\xc7\x7f\xcf\x99\
-\xb9w\xef\xeezw\xbd\xce\xda\xb0^c\xc7l\x08\xb6\xc161n\x1b\xa3*\xae\xab\x00J\
-\xa2 \xd2\n\')ICA\xaa*\xd4~\xaa\x14\x89\xe4CD\xa3$\x9f"Um\xbfF\n\x04\x81\x15\
-5\xcd\xabDx\x89bp\x9c\xa4\xd4@l\x821-\xb6\xb1\x89\xbd\xb6\xd7/\xec\xdb\xbdwf\
-\xce9O>\xcc\x99\xd9{w\xef\xae\xd7`\x95F\xeaH\x8f\xce\xcc\xdc\x99s\xfe\xff\
-\xe7\xfd\xcc\x15U\xe5\x0f\xf90\xef5\x80w{\xfc?\x81\xf7\xfa\xf8\x83\'\x10_\
-\xcd\xc9\xb6\x7f\xa1\xb9\xd6*;\x113\x82\xea\xb0\x08\xab\x01T9\x8d\xc8\x18\
-\xeaO\xc5\xc2s\x07\x1e\xa9\x9d\xbcZk\xca\xbb\xcdB\x9b\xefKF#\xe4\xb3\xa0\x9f\
-\xea\xae\xb2\xad\xbfW\x18\xe8\x85\xfe^a`Y\xfe\xcc\xc44L\xce(\x133\xf9\xd8Hy\
-\t\xe4\xfb\x0e}\xe2\x95ow\x1d}O\x08l\xff|}\xd8\x9a\xe8+"<\xb0f\xa5\xc4\x9b\
-\xd6\x0b\xbd\xddBd@$\x17#\xf9\xb3\xaa\xe0\x15Pp\x1ef\x9a\xca\xab\xc7\x95\xdf\
-\x9dS\xab\xca\xb7b\xef\x1e>\xf0\x9d\x9e\xb1\xff\x15\x02"\xc8\xd6/\xa4_F\xf5\
-\xa1\xc1>\xe9\xd9<*\x0c\r\x08Q\x04\xc6@$\xf9h\x0c\xd4\xaa\x90\xa4\xf9{>\x90\
-\xf0>\'\xe1\x1c\x9c\x9fP^9\xaa\\\x9c\xd4:"\xdf8\xf8H\xf5k\xaa\\\x11\xa0+"\
-\xb0\xf5\xaf\xe9\x15\x93<V\x89\xb8\xfb\xe6\xeb\rkV\tq\x04q\x04\x91\x81(\x828\
-\x8c\xc6\xc0G\xb7585\x1es\xe4\xad\n\xde\xe7\x04\n\xf0\xd6\x83\xb5\xf9\xf5[g\
-\x95CG=\x99\xe3\x07\xea\xbb>w\xf0Qf\x96\x8ai\xc9Yh\xf3\xfd\x8d\xebD\x92\xfd\
-\x91\xe1\xeem7\x1aV\x0fI\xe9*"9\x81\x02|\x1cA%\x12\xd4\xc3\x8e\x9b\x95\x0foJ\
-\xa8TZ\xc8F\xb9\xa5\xa2`\xa9\x91U\xc2\x1fm4D\x86\xbbE\x92\xfd\x9b\xefo\\wU\t\
-lx\x80\xbe\xc8\x99\'E\xd8\xbae\xd4\xb0<\x04\xa7\x14"\xb3\x17&Hd \xc9\x04c\
-\x0c\x1b\xd7\t\xbb\xb66\x88\xe3\xfc7\x11\x10\x13$\xbc:\xd8\'\xdcr\x83A\x84\
-\xad\x913Onx\x80\xbe\xabB@\x1e\xc6\xd4l\xf2\x04p\xd3\xb5\xef\x13\x06\xfb\xf2\
-\xa0\xd4\xe0\xacJ~]\\x\x85Z\x97\xb0~\xd8\xb2b`v\xfa\x91\x95p\xc7\xadu*\xb1\
-\x96\xcf\xce\xf5\xde\xa1\x01X=$\x007\xd5l\xf2\x84<|y|\x97\xad\x03\xb7\x1ck~U\
-\x91OD\x11\xac\x1f\x966\xd0\xeaAM~\xbez\xc8\xb1s\xabc\xb0?\xa6Z1\xa8\n\xde\
-\x9b\x9ch\x90\x15}\xca\xc7\xffx\x9a\x9f\xfeW\x0f\x17\xa7\xa2\x92\x84/\x14\
-\xa2\xf0\x815\xc2\xd9\x8b\x8au|\xe2\x96c\xcd\xafB\xed\xcb\x8b*x\xb1 \xde\xf2\
-@r\xbd\xc9\xfc\x11\xa0\xb2jP\xb8\xe1:\xd3\xe6\xc7q\x04\x95\x18>\xf6\')\xdb7v\
-c\x8c\x94`\x9ds\xa8*\xde\xfb6q\xceQoz\x9e\xd8\xdbO3\x11\x9cW2\xdb\x12\xdcN9r\
-\xc23vAA\xc9\xb4\x1ao8\xf4\xad\xaec\xef\xc8\x02\x92%_W\x95\n\xc0\xf2>\x83sJH\
-\xed\xa8\xc2P\xbf\xf2\xf9;\x95\x95+jD\x91\t\xf7s\x02\xad\xe7\xad\xe2\x9c\xf2\
-\xabW#\x1a\r\x8f\xf3`]\x9eZ\xbd\x07g\x15\xe7sK\x8d\x8d;\x80\x8a\xa4\xf6\x1b\
-\xd0\xf5\xe9\x850.\xe8c[\xee\x9d\xb8U\xbd\xdf\xad\xeaPo\xe9\x8a=\xd6Z2\xeb\
-\xb0\xd6Q\x89-\x7f{\x97gh\xb0\x8aHN\xcb{_\x02\xb5\xd6Ro\xa4\xe5=\xef=i\xe6x\
-\xf2?\r\xaf\x1c\xef"\xb5\xbe\x9c+\x0bb\x9d\xc3:O\xad\xeaQu\x84\xb5\xef\xd9r\
-\xef\xc4\xadWn\x01\xcd\xee#(\xdc\x08\xa8\x172+xU\xbc\x17>\xbd\xcbR\xeb\xea-\
-\x01\x17\xee\xf1\x9b#\x93\x1c|Cxk<\xe6\xb6\x9b\x1d\xb7m\x16\xbc\xf74\x13\xcb\
-\xf7\x9f7\x9c\x1c\x8fQu\xa1.(\xce\x85\xfa\xe0\xb4\xac\x0f\xea\x15\xc1\xe2}\
-\xee\x08\x82\xfb\x1b\xe0\xc5+"\xa0j\xefj\xb5SfC\xd0za\xdbF\xcf\x8d\xebzKW\
-\xf1\xde\xf3\xf6d\x83=O\xa7\x1c?\x13\xe7-\x84xj\x15\x87\xf7\x86\xa9\xe9\x84=\
-?3\x9c\xb9dr\xf0E\xf0zp^\xcb\xea\xec\xbd\x96n\x05\xae\xccR\x8a~\x12\xf8\xfb%\
-\x13\xd8\xb2{l\x9b\x8a_[\\[\x0fif\xd0\x08\xaa\x15\xe1/w\xc5\xf9\xb4\x9a\x83\
-\xaf\xd7S\xbe\xfeHB\x92\x1a\xc4\xb8\xb26Tc\xc7\xa5\t\xcf\xb7\x9f\x14.N\x99\
-\xe0\x16!\x8b\xf9\xa2\xb5\xd0P\xa1\xb5$d-8k[!\xad\xdd\xb2{l\xdb\xa1\xef\x0e\
-\xbf\xb4$\x02\x9e\xec\x8e\xb9\xd9\xa9\xde\x84ZU\xf8\xf0&GO\xad\x1f\xef=\xc6\
-\x18\x9cs<\xf2\x93I\xde\x9e\x8c\x11\xe3C\xa1\x12\x04\x18;o\xf9\xf7\x9fGL7\r\
-\xaa6Xv6e\xfa0\xba\xe06.\x04s#\xf1\xa8o#\x80\x13w\'\xb04\x02\xa8[\x87\xfa\
-\xb6[SS\x9e\xa8/b\xfd\xb5\xb9\xd6\x8b\xe3\xb5cS\xfc\xfa0D\x85\xe6\r\x80""\
-\xfc\xf0\x17\x02\xf8 t P\xb8\x92\xe6\xf1\xe0s\xcb\\\x9a\xb2\xa8\xba\xb6\xf5E\
-e]\'\xa8\x1d\t\xa8\xcfF\xe66\x85\xd3u\xa1\xa7\xa6\x8c\xac\xaa\x94A\x0bp\xf0\
-\x7fR\xd24\x07n$\xf4G\x00\xa1e@s2\x05\xe8|\x81\xdc\x8d\x8a@.\xda\xec<A\xc0\
-\xd4T\x1a\xfa\xefV\x06fd\xc9\x04\xbc\xfa\xd5\xadZ\x83<\x88\'\xa7=\xab\x06km\
-\xee\xf3\xf2\x91\x8c$\x95\x10\xb8\xc5> \'B\x87\xceX\x83\xd65\xc4P\x19\x0b\
-\xaa\xa8\x87\x99\x86\'\xcd\xec\xbc\xf7\xbc\xea\xea%\x13\x80\xack\x9e\x06\x00\
-<tU\x05\xe7\\\xb0\x80\xf0\xfaI\x8bj\xd8\x03\x84\xe8\re\xa1,z-\xf0\xdbz\'U-\
-\xddHU\xb1\x0e.Mf\xf3z\xa4|2\xe9Z2\x01\xf5\xee\x0c\xeao\x9e{\x7fr\x06&\xa6\
-\x12\x06\xfa\xba\xf2@\x15a\xcdJ\xc7\x1b\xbfS\x0c\x9ak?l\xc3d>\xfa\xd9\xf9\
-\x03\xe0\xdb\xb7[\x86\x06,\xd6z\xb2\xcc\xf2\xd4\x0b\x15\xc6]\xd4\xf9%\x13\
-\x9dY2\x01Q?\xe6\xfd|3\x02\x9c8]g\xd3h\x841y\x11\xff\xe0\x1a\xe5\xf0\xd1\xa4\
-\xd4\xbc\xd0B\xa2\x13\xf80F\x06vlj\x10\x1b\x8bs\x8e$Ix\xfc\xd9\x01\x16\xea\
-\xcd\xc4\xcb\xe9%\x13\xf0\xca)\xd4\xd1iw\xf7\xdf\'\x126\xac\xef-\x83\xf8\xa6\
-\xd1\x98=\xcf\xcc\x84\x0c$\x08\xb3\xfdR\'+\x14\xf8nZ\xaf\xc4\xc6\xe6\xedI\
-\x961vA\x98\x98V\xa0\xc8>\xedk\xab1\x1d\tt\xec\x85D\xec>UW\x94\xdeY\xf1\x8eW\
-\x8f&m\xdd\xe5\xe6\xd1.\xb6\xdf(\xa4IF\xda\xccH\x92\x8cf3\xa5\x994i4\x1a\xb3\
-\xd2l\xd2h&$IJ\xe62v}(%\xcb2\xac\xcd-\xf0\xda\x89\xa2\xd0\xd9 \xaeMD\xdc\xbe\
-NX;Z`\xd9\xa9\xe8\x99\x89Uv\x12\xa5\x7f\xae&\xf6\xfd\xc6r\xdf\xf9:C\x83\xb31\
-\xf5\xe0=\x03\xbc|\xe4\x14\xd3u\x8b\xb6\x12n{wv\xff\xf9W;k\xbc\xff\x1ap\xce\
-\x97\xcd\xde\xe17\x05t\x8e\xdb\x16\xe6\x12\x99\xec;]}z\xc9\x168p\xe0\xd6\x0c\
-\xcc\xdeN\x9aH\x12\xcb7\x1f=\x87\xb5\xael\xe0\xfaz\xe0\x9f\xffq%\x9b\xd6y|6\
-\x83\xcf\xa6qvf\x9eT\xa4\xce\xee]\x11\x7f\xf6!)\xdfu\xceq\xe0\x88\xe1\xf5\
-\x93\x8az\xdb.aM\x90\xbd9\xa6%Z\x00@\x91\xc7\xf1-\r]\xcb\xf1\xf2\xeb\x8e\xa7\
-\xf6\x9f\xe7\x8e\xdbV\x94\xdd\xe8\xd0r\xc3?=8\xc2O\xf7\x8f\xb3\xef\xc5K\xbc~\
-|\x8a4\xf3\x88(+\x06\xaal\xba\xbe\x87O\xfd\xf9 +\xfa\xa5\x04\xee\xbdg\xfc\
-\x92\xb2\xe7\xd9&\xde\xc5\x88Y\x08N\xf5\xf1\x85p.\xba#\x1b\xbd\xe3\xa9Ch\xb6\
-y\x1e9uT\x8c\xe3\xdf\x1e\xba\x8ek\x87jm\x1b\x96"6\xd2\xccs\xfa\xec\x0c\xcbzb\
-z\xbbi\xd3x!\xd6*\xdf|l\x92\x93\xe7<b*\x88\x14$Z\xa2\xdfT~{\xf4\xe9\x8f\xcd\
-\xc3P\xfe\xbc z\x80(\xfe\xd2<\xb3\xba\x14\xb5M\x92\xa4\xce?|\xed5\x9e{\xe1L\
-\xa9\xcdVpF<\xc3+\xab\xf3\xc0\x17\x04\xc7/\xa6\xfc\xeb\x9e3\xbcyj\x12u\t\xde\
-5\x83$-\x81l\xc1\xc4\x0f-\x06\xf1\xb2\x1f\xb6\xae\xbf\xfd\'\xcf\xe1\x92\x8f\
-\x14\xdf r"i\x183T3vl\xe9\xe7\xef>\xf3\x01\xfaz+,\xb4\x0f.\xc0g\xd6\xf1\xf4\
-\xfe\xb3\xfch\xef8\x995\x88\x89\x83\xe6+`*\xe1:\x8c\xa6\xeb\xf9c\xcf\xde\xb5\
-s1|\x97\xfd*ad\xf0\x1e\xc7\xd8K\xa8\x1b\xc9\x03+\xcb\xad\xe03\xd4g\xe0-\xbf|\
-\xf14\x87\x0e\x8fq\xe7\x9f^\xcb\xe8\xba~\xd6\x0e/c\xc5\xf2\xae\x92L\xbd\x91r\
-\xe2\xd4\x04\xc7NN\xf2\x8b\x17\xcfqr\xac\x01\x12\xe5\xa0}\x0c&\x06u\x88:\xd0\
-\n\x18\x0f\x12\x9fB{v_\x0e\xdf\x92>-\x8e\xde\xfe\xd46\x97]x^]\xd2;\xab\xfd\
-\xd61\x0b\xd6\xb0\x10\xb2\xc7\xb2n\xc3\xba\x91~.\xbc]\xe7\xcc\xf84\xaa\x82H\
-\x04&B\xc4\x94Z\xce\xb5\xde\xaa\xf9\n&\xee\x9f\x89k\xd7|\xe4\xe83w\xce\xeb\
-\xff\xdf\x11\x81\x9c\xc4\x8f\xff\xc26\xc6\x1f\xf3\xae\xde]\x02.\xfc\xd5\xa5\
-\xf9\xe8\xb3\x90\xfe,\x14)\xb0\xcc\xe5&\x00\xcf5>\x1b\xb4\x9561\xd5\xfeF\xb5\
-g\xe4sG\x9f\xf9\xe4\x7f,\x05\xd7\x15}\xdc\x1d\xfd\xe8\x0fw\xa43\xa7\x7f\xe0\
-\xed\xd4\xaa\x92D)i\x0b\x81\xe0^\xea\xf2\xc2\x86\xe4\xe0M\x0csAK\x8cDUD*D\
-\xd5\x81\xf3\x95\x9e\xe1\xbb\xdf\xdc\xfb\x99_\xa9\xce\xd9Q\xbd\x1b\x02"b\x80\
-\x08\xa8^\xb3\xf1\xc1uq\xdf\r\xdfs\xe9\xc4\x86\x02\xe8,\x81\xdc\xa5h%\x96\
-\x17"\xc4D\x01pe\x9e\xd6\xc5T1\xd5\xfe7\xb2\x8b\x07?{\xfe\xf8w\xdf\x04\x9a@\
-\nX@u\x11\x90\x8b\x12\x08\xc0\rP\x05\xba\x80\x9e \xbd\xab6\x7f\xf1^\x13u\xdf\
-\xef\xb2\xa9\x15\xcc\xb5\x86\xb6_\xe7\x04:\x01\x8f\x89\xaa\xcb\'\x9c\xad\x7f\
-\xe7\xfc\xe1\x7f\xd9\x03\xcc\x00\xf506Z\x88\xf8\x85,\xb2 \x01\xc9\xbfVE\x01x\
-\r\xe8\r\xb2\xac\x18\xa3\xa8\xbb\x7f\xf0\x83\xf7\xef\x16S\xdd\xe1mc%\x9a\xc9\
-,\xf0\xd9X\xc8\xe7\x0b\xbe\x9f\x07\xaf\x9a\xb8\xf7\x82\xaa}\xe1\xed7\x1e\xfd\
-\x9es\xcd\xc9\x00z\xbaE\n"M \xd3\xb9\x9b\xe4%\x100@\xa5E\xf3\xcbZ\xa4\xaf\
-\xe5\xbc\x17XV\xa9]3\xd2;\xbcs{\\\x1dZ\x0b\xae\xd7\xfb\xac\xa6.\x89\xc1\x8b\
-\x98J&\xa6\x9a\x80\xcc\xb8\xe4\xe2[3g\xf7\xbd\x945\xcf\x9d\x9e\x03\xb8\x90\
-\xa9\x96\xb1^X\xe1\x9d\x10h\xb5@w\x07\xf0}\x1d\xac\xd2\x13\xac\xd5\x1d\xde+\
-\xb6W\x0eH\x82\xd4[\xb4[\xc8\\\xe0\xc5y\x9dY\x17\xea\x08t\x91/s\xaa\x80\x15\
-\x11O\x1eLY\x07)@5\xc2\x82\xb5\x00\xbc\x1a\xc0\x1b\xca\x7f\x03\xb0\xe1\xd94<\
-\xdfJ\xa4\xd0\xfe\xe4\x1c\xe0\xeer\xd9h\xc9i4\xb8\x94\x04\xd2Ur-\x17\xae\xd5\
-Cn\x81Z\xf8\xad\x12\x08H\x00_(!%w\x89\x82@\x01\xb6\x00\x9c\x91[k\xd1\xcc\xf3\
-\x8e\x08\xcc!\xd3\xf2\xa7R\xbe\r\xee0\x16\xe7\x85\x05|\x8b\xb4\xde\xd3+\x01|\
-U\x08\xfc_:~\x0f\xbc\xd1\xbd\'X\xe0\x9fO\x00\x00\x00\x00IEND\xaeB`\x82Ex\xa6\
-X'
+\x08|\x08d\x88\x00\x00\x0cWIDATh\x81\xd5\x9aI\x93\x1c\xc7u\xc7\x7f\xb9To\xb3\
+\x00\xb3`\x80\xc1.\x8a\x00\tZ\x0bH\xd1\xb4\xe9\x10mE\xc8\xd6\xc9\xbe\xe9#\
+\xe8\xae\x83?\x80\xc3\x1f\xc1\x9fBGG\xe8\xe0\x8b\x15!\x87\xc3\x8b\x18\x84)\
+\x88\x14)\x91 \xa9\x11Aa\x06\x00gz\xf6\xee\xea\xca\xcc\xa7CfUgw\xcf\xc2\x83.\
+\xee\x88\x8a\xce\xcezU\xf5\x7f\xf9\xfeo\xc9W\xad~\xfa\xa3\xb7\xfe\x11\xf8g\
+\xd3n\xcd)k\xf8S}\xfc\xa0DB\x00@i\x8d\xe9\xb6\xffd\xf7\x16\xe7\xf1\xe5\xe8\
+\x08\xf8\'\xf5\xd3\x1f\xbdux\xe3n{\xee\xc6\xfc\x06-\xe5@\x1bP\x06\x94\x05\
+\xadA[\x94\xb2qn\xe2\\\xfd\xbb>\x97\xe6\x88\xe3\xfe\xa1\xe1\xd1\xaf\xb7\x01\
+\xb8\xf3\x8d\x15\x96\xe6=\x04\x07x$\xa4\xb1\xf8x\x04\x07!\x8d\xc5A\x08 \x0e\
+\x914?q\xceS\x89\xe5\xf1\xe1m\x1e\x7f\\\x1eY\xdbk\xcf\xdd\x9e\xff\x8c\x1e\
+\xfb\tL:t@i\x0b\n\xd0\xf5\xa1@i\xd0\x12\x7f+\x05Z\xa1\xb4N\xf3\xb5"\x96\xf5\
+\x15K\xff\xc6\x12\x00\xeb+\x05\x88\x82@:\x04DG\x0b\x85t\xef \tx\x00\xe5\x92R\
+\x0e\xb4CHc\x1c(GG\x1c\xb7\xe7?c\xb3\xf7\xc2\x9c\xd5\xd6P\x18@u\xe3\xc3\x95\
+\x8d\xc0\xb5\x01U\x8cWV\xd94.\x9a\xdf*\x81\x1d\x9f\x9b\x1c\x1b\xeb\xa3\xcdm\
+\'\x02P\x11P\rN\xa5\xb1\x84z\xdeC\xa829\x9f\xe4*\x08>\x93s\x14\x02\xda\x1al|\
+@\x1b0c@g\x80\x9a\x00~\x8e\x1c\xaa\x8c\n\x98\xee\x04\xf0\xe9\xb1JcQ.^;#gg\
+\xe5j\xe8\x00\xcatP\xca\x9f\x02\xa4\xa6E\x11}\xa1\xa6I.3\xf5[5\xe3\x18\x14T\
+\xb2\x80\x9c\xa6\x84\xca\x15\xf1I\xaeJr~\xe6\x1a\x15\x1cJL\xad\x80\x02\xd3\
+\x06\x1dN\x05\xa5\xce[i}\x8a\x1c)\xaa\xd9n\xf3`t\xa2\xcc\t\x94\xca\x01\xa2\
+\xedX\xee\x04e\t\x1aP\xb5\x1d\xba\xa0\xc2\x14\xa8\x9aRE\x16u\xeas\'\xf8\xc1\
+\x89\x8a%\x05L\xe7D\xee\x9f\xc8\xff\xe6\x9cOrU\x94Q~JY=\xa6P\xb4\x80d\xe6/\
+\x98\xb0\xc4\x84"\xd34)\x12\xcd\xc6\xd7|p\xf8\x9c\x8f\x8f\x9f\xf3\xde\xd1\
+\xc7\x184\xdf\xdev|k\xe1*\xb7:\x8bc\x00\xa1\x02\xf1\xa8D\x95\x182\xd3!\x19\
+\x85B\xd1p\x9fPe4T\xb9\x02\x1dTQG\x9db\x0cl*\xea`Z\xa8&"\x15S\x16\xb1\x0cE\
+\xf8\xf7\xedG|1\xdc\xc3\x05\xc7Qp\x00l\x8c\x8e\xf9\xa2\xbf\xc1+\x0b\x97y\xeb\
+\xe2\xd7\xd0M\xec\xaf\x12X\x17\x15\x11\x17s\x84\x1f51\x7f\xacH\x95\xc9UPy`\
+\x18}@\xd9N\x8cD\xf9jO\xad\xba\x9a\xb0J\x0e~L\x99\xff\xfa\xf2#6G\xc7\x18\xd3\
+!0\x8a\xb9\x01\xd0\xba\x851->:\xdaa\xa1X\xe0\xb5\xc5k\r\xf0\xf1\x8aG\x90\x91\
+\xff-\xa4\x06>a\x8d\xaa\xb9FI\t\x94XT\xe2h\xd1\x9b\xa2N\xa4F\x04\x9e\xe5\x83\
+\x06p1\xe1\x17\x7f(\xf7\xf9]\xb9\x8f6m\xd0\x1a\xad\xea\x0c\x08\xda\xb6\xd1\
+\xa6\x80\x10xx\xb0\xc9\x9d\xc5k,\xd8n\x06\xdc\xc7U\r\xc5\x98\xff5e\x12\xd5r\
+\xf0q\xac@\xed\x8d)Dk.K\\9\xc7\xcf\x88@\x99\xdc\x1f\x0e\xb60\xa6\x83R\x1a\
+\xb4\xc6\x89j,\xa0t\x0bc\xdb\x10\x02"\x81\xcd\xaad\xb1}a*\xb4\x16\xb3QI\xc6\
+\xfc\x9f\xf4\x91\n\\\xc8|\xc0v\xc0\xce\xc5X\x7f*`3\x11\x81T\x9e\x9d\x95\xa5\
+\xef+\x8ciQ\xd7C\xdaH,5\x00mZh\xddI1\xdd\xb3\xeb\xab\x18\xf9$\x85\xcc\x9a\
+\xfb5\xe7\x1b\xfe\xbb\xccGj\xb9d\x01[e\x89\xcc\xb6Q\xb6w\x02\xc7\'\x93V\x93\
+\xc8r\xa5\x92\\\xaf\xb5\x88v\xc3\x98\xd1\x95FIh(\xa4L\x1bcZ\x88\x04\xd0\x9en\
+{1.ZV\xc8\xa9f\xf5\x8b\xf1j7\xdfc\xa7Wud\xb2\x83\xcc\x02\xba\xb6\xc0l\x06\
+\x9eX\xe9z~B\xb18\xbe4\xb7\xc6\xe3\xe1^\xf2\x1b\x8d\x0e>s\xe2\x02c\xdb\xb1x\
+\x13\xcf\xea\xdc\xa5&\xb9M\xc4\xf7T\x9d6a\xb3\xb1\xccTF\x0e\x0e\xf4QN\xa16\
+\x14\xdd\x8c>9=\xcc\x8cR\xd3%\xb5R\x96;\xcb_\xe7\xa3\xc3g\x0c\xc2\x08\x85A\
+\x1b7E\xa16\xa2=+\xedE\xae.\\GIH\xfcO\xd4\xd1\xd9Jg`\x95\xce\xa9\xe4\xc74\
+\xb2\xed\\\x81n\xa4\xd0L\xc6\xcd\x80\xd6\xfb\x01m\x80\x02\xb4\x1e[G\x19\nmxc\
+\xfd5\xfe{\xf3!(\x85\xf2\xa31\x85t\x811-\xac\xd6\xbc\xb9\xfez\xaa\x8d<J,\xb1\
+\xb4\xf0\xd1\x89\xa9b\xe1\x16|\xe3/9\xf0\x89\x0cm\xbbS\xb5\x90\xed\x8e\x01\
+\xe7\x1b\x94l\xb5\xb7\x86{l\r\xfb\xf4\xabc:\xb6\xcbJ{\x99\x17\x96nR\x98\x0e`\
+\xb8\xb6x\x93\xbf\xed,\xf1\xe0\xe9{\x1c\xf9Qc\x01eZ\\Y\xb8\xca\xebk\xdf\xa0g\
+\xda\x19@\xc7\xe6\xe1.\xfd\xb2\xcf\xb0\x1ap\xa1\xe8\xb1\xd6Yd>)\x18\xadb\xc7\
+\x0e\xad3\x85L{\\\x0b)\xd3\x8dNu\x02x\xa5,\xa5x\xde\xdd~\xc4\xe3\xe3/A\xe9\
+\x18*\xab\x01O\x86\xbb|r\xb4\xc5k\x97\xbf\xc9\xfa\xfcUP\x86\xe5\xde\x1a?\xf8\
+\xda\xf7\xe9\x0f\xfa,\x7f\xb2\x81U\x9a\xb7\xee\xfeC\x0c\x9b\x10i\xa2=\x07\
+\xc3=\xdey\xf6\x90\x9d\xc1Ntn\x89!V\x03\xaf\\\xb8\xc9\xcb\x8b\xd7\xd1\x92\
+\x1c\xba\xb6F\xed\'\xdaE\xcc\x90\x12\x99m\x81\xedLm\x1d\xc7\xe3\xb7\xb7\xde\
+\xe3Y\xb9\x8b6\xad\x08^\x99\xa4\x88\xa2\x94\xc0/\xb6\xde\xe7{7/\xb2\xd4\xb9\
+\x18A\xa2Xj_\xe0ng\x1d\x80\xc5b\x9e\xe6\xa3\x0c\x03?\xe2\xe7O\xde\xc1\x85\nm\
+Z\x88H\xdc\x89\x89G$\xf0\xe1\xfe\x17\x0c\x82\xe7;+wP\xc16\xa0Ic\x11\x171+\
+\xd0\xa0@\xb5\xc1U\x882\xd1\x12\xa6\x93h\xd5\xe6\xf7\xc7;<\x1f\x1d\xa2u\x0b\
+\xad[(]\xa0\x92\xe3B\xb4\x92(\xc5\x83\xa7\x0f\x01\x89\x87\x84\xb8b\xf5\'\xf8\
+8\x87\x00\xf0\x7f[\x0fq\x12\xe2B\x10\xef\xa5t\xcc\xfa\xf5s6\x8e\x9e\xf3\xac<\
+\x8a\xcej\xda\x11\x93\xedD\x8c\xae\x8a\x98Q\xd8\xea\xf0\x98\xfe\xf6\x0eks\
+\xcb\xe0F\x10$j\xa7\x0b@\xf1\x9b\x9dG\xf4\x07}\xb4\xb1\x18]\xa0\x94\x89\xdbW\
+\x02^\x02>x\x82x\x9e\x84\xc0\xab+\xf7X\xed,5\xb8\x07\xfdgc%|,\xecvG\xfb<\xdc\
+\xfa\x15Zk\xb42\x18m0J\xa3\xd1h\x05"\x1e\x1f*\x82w\xfcj\xfb7\xfc\xdd\xd57\
+\xc6\xe5\x83\x1b\xc5o\xa5\xe9o\xefP\x1d\x1ec\xc59>\xfa\xcf\xff`\xe7\xce\x16\
+\xa6h\xc7\xd8]\xd71J\xf1\xf6\xf6\xffd\x0e\xa98\xeb\xf3\x8b\xad}\xeev\xaf\x02\
+p\xf4|\x93\xa7\xbf|\x07\x80_\xea\x7fa\xeeR\xa4\xd3\xa7\xc3->\xdf}\xff\xcc\
+\xfbD+\n[\xb6\xcb\xad\x8d\x1d\x10\x01B\xfc\x96\x80\xafJ\x9e?\xfa-\xe2\\\x8as\
+g|\x8c\xfa\xea\xbd"\xa3\xce\xbd\x1d^\xc2W\xbe\x9f\x17\x7f\xae\x8cU\xd6\xf2\
+\xd2_\x7f\x8f\xb5\x9b/\xa6\x1dV1\xa6\x90*\xf8\x8b\xcde6\x0e6c65\x19\x85$R(\
+\x88\'H \x84\xc0\x9b\xaf\xfc\x90\x8b\xad\xc5\xe6\xe6\xef\xa6\xfd\xc0\xab?\
+\xfcq3\xb7<\xec\xb3\xf1\xdb\x7fM\x14J4R\xf58Q\xc8W\x84Pq}\xee\x12w\xaf\xfdU\
+\xaaT#\x85$\xd5J\xcb\xebWx\xf0\x93\x9f`\x8b\xf9\x1eK+\xcb\xd1\xc9\x8aV\n\xa7\
+u\xe2\xd2|{\xe5\x1e\xfbn\x94\xa2O\xa2\x97R4\xfb\xdd\xb4\xeak\xdd\x15.\xf6V\
+\xa9\xcd\x8fwt\x97\xd6\xc6Ke,(\xc5\xea\xfc\x1a/]z\x99\x83\xd1a\x9co,\xe2\x13\
+E\xa4\t\xa9\xaf,\xdf\x05\xa3c\xf4Q*FG\xa7`4bie\x99b\xbe\x87\x8e\x0f,\xc1\x16\
+(\xf1\xe0\x86\xe0\x87\xe0Kp%k\xed9n\xcf]"\x84\x11!\xc4\x15\x90\x90B\x19\xb1v\
+\xb1J\xf3\x9d+\xf7\x13\x90\xba\xf9\x95QO\x9b\xa4h\xf4\xa3\xd7/\xdfG\x89\xc4\
+\xf0H\xbc\x97\x04\x8f\x84\xaay\xce\xa5\xd6<\xb7z\xcb\xe0\xca\x88\xc5\x0f\xc1\
+\r#F[D\xcc\x08\x16!z\xb7\x1b"\x13\x89\xcc\xc5D\x16,\xaf^\xbcEW\x1b>\xdc\xfb\
+\x1c\x0f\x8d5\x94\xd2,w\x97\xf9\xf3\xb5\xfbt\xb5\x89\x80\x92\xcf\xecW\x87|V>\
+\xc5I\xe0J\xb9\xc7Rw)* \x9e\xa5V\x8f\xbf\xbc\xf2M\xde}\xfa>\x037\x9cHdH\xe0F\
+o\x95\xd7\x96_\x04W\xc6\x85\x92\xa9D&.b\x96T\x0b\x89\x1f\xc4\x95\xaf\x13X\
+\x18gcI\xd9\xf8\xde\xc2:7z+<\x1b\xee\xb3W\r\xe8\x14\x1d\x96\xdaK\xac\xcf_\
+\x8e\xb2n\x04\xdap\xecK\x1e<\xfb5\x9f\xeen\xf0\xc1\xfe\x07\x00\xec|\xf2o\\\
+\x9b\xbf\xc2\xeb\x97\xbf\xc5rk\x01\x82g\xbd\xb3\xc4\x0f\xae\xbf\xc1g\xfd\xcf\
+\xd9.w(\xdd\x90\x8bE\x97+\x9d%\xaet.\x10;q\xa3\x93\xc1\x07\x1f1\x03\x16$\xd1\
+e0Y\xcc\x85\xbc\x98s\x10\x0c\xf3\xda0?\xb7\xccD1\xe7\xcbT\xa7\x18\xf6G\x03~\
+\xf6\xc5\xdb\xb8\x10\x10?J\xe1\x0f\xc4\x8f\xd8\x1d\xec\xf0\xb3\xdf\xfd\x9c\
+\xef\xae\xdf\xe7jo\x05\x82\xa7\x10\xcfK\x8b\x97\x91\xb0\n!\x10\x8b\xb9Dc9\
+\xbd\x98C\\|.\x92\xaaQ7@\xdcq,\xa7\'\x80\xdb)\xa5\xeaJ5\xa6u\xd1&\xd6%\xca"A\
+\xf3\xbfO\x1e0\xac\x8eP\x98\x18-\x08\xc9O+\xbc\x1f!x\xde\xde|\x97\xbf\xbf\
+\xf9&\x05z\xaa\xfb\x9c\x95\xd3\x13\x1d\xeb|s\x93\x95\xd3.\xdf\xd0\xb8\x12\
+\xaa\x01r\xda\x86&d\xf3!\xdb\xd0$eE[\x9e\x0cvx~\xf8\xb4\xd9\xd0\x84\xcc\x02\
+\xc1\x8f\x08\xc6"!p$\x03\x1e\xed|\xca\xbd\x0b7N\x00\x99\xb7\xdb\xa764\xf9|p\
+\x11s\xa3@\x18\x82;\x02S\xcc\x80\x95\xf3\xb6\x94\x12\xe5\xbe<z\x8e\x0f%`PA\
+\x13B\xd5\x84\xc8\x10*\xbc+\xa3\x93\xe2y~\xf4\x8c{s\xab\x93+\x9d\xad\xf2\xe9\
+[\xca4\xe7\xab\x88\xb9V@\\\x89\xb8\xe3\xb8\xd7<cS/\xf9\xa6^2\xcb(\xcb\xa0\
+\xdc\'\xb8\xb2\xd9\xd4\x8b/\xc7\x14\xf2%^\xe9\x18v\x83\xe7x\xb4\x9fx>\xbd\
+\xd2\xa7o\xea\xc7r\xa9\xdd2a\x01\x97,\xa0\x8a\x86F\xe7\xb5U\xa6\xe5.\x9a\x02\
+\xefG\xa8\x10\xdb*3\x14\xd2\x8a\xba\xad\xb2d\x8a\xc8\xe1\xe9v\xc9\t\x80\x9b\
+\x1e\xeaL[%\xb3\x00~\x08#M\xde\x91\x93\xe4\x07\'6\xb6\xc4\xc6-`\xe2?\xc1\xb2\
+^\xb4\xc1\x97x\x14h\x9dR~\xed\xc4#\xbc\x8bo`\x84\xc0\xb5V/Z|\xa6\xb1\x95\xfd\
+\x9eil\xd5\r\xad\xf4\xedk\x05$)P\xc9l[E\x17\x896\xa9F2\xb5\x05\n\xd0\xd5\x84\
+e\x16\x94\xe5\xfe\xc2:\x0fv\x7f\x0f\xc1D\x0b$\n\x05W\x12R\xe6}\xa1\xb7\xc25\
+\xdbm,0\xddZ\x8c\x1cw\xe7\xb6\x16\xf1e\x9d\xc8\x04qCP\x15g5wEY\x08g7w\xef\
+\xcf\xadrP\x1d\xf0\xe1\xc1SBp\x99\x13\x8f\xf0\x04\xaew.\xf0\xdd\x0b\xd7\xc1\
+\x1dO\x02\xce\xc6\xe75wI\xcd]q>\xcb\x03~\x18\xb7uy{\xdd\xe4\xdcO`]\xce\xfd\
+\xac\x8f\x9a\xe4\xb4\xb6\xfc\xcd\xfcen\xdb.\xef\x1fl\xb2\xa7[x\x027\x8a.wz\
+\xab\xfc\xd9\xfc\xa5\x0c\xfc4\xc7\xab\x93-\xd2D\x9eD\xa9\xe6\\\xde^\xf7e\xcc\
+\x84\xb5s\x86\x98y\xc7/8\xaa\xa9vK\x11\x93\xd8)/8n\x15-n\xad|\x9d\x17\xb7b]\
+\xf4\xf2\xea\xed\x08\xa2:\x9c\x05\x9e\'\xa9\t\x8b\xf8\x86>2\x9d/\x82\x03\xd1\
+@{\x9c\x89\xd1a2\x07\x88E\xea\x97kM\xd2\xaa\xf3\x83k\xc6\x92\xcd\xcf\xca\xa5\
+\r\x89\x1f\x9e\x10\n\xcf\x8e:\x13r\'F\xaaF\x81T\x0b\x05\x9fE\x98\x13\x92\x99\
+.b\x87`\xa2V\xb2\x13\xd74\xf4\xaa\xcf\x91\x148)d\x9e\x1a>\xebDV\xd3\xc7\x9f\
+\xa2\xa0\x19\xfb\x80\xf8!\x82\x9b\xa4C\x98\x1e\xbb&d\xaa)\xe0\xd3\xd7\xd4r\
+\xb5\x05$OZg\xc5\xfas,\x92\xcb\xd5\xeek\x9bZHU\x88\xe4\x00M\x8a\xf5\xf5x\xec\
+\xd0\x92\xb2\xb0:U\xd9ZA\x97(tR\xc8\x1c\x8fg\xfc`\xe2wJ\\\xf5\x8b\xee&{\x17Q\
+\x81\xe0<\x95\x87\x82\xc1\x0c\xafU\xddL\x9aX\xf1Y\xfe\xcfp?-\x84wI\x81i\x0b\
+\x9c\xc5\xf1\xaf(WQ\x10\x9c\xc7\xba\xe3\xf2h\xe3\xf0\x85\xf8g\x0f\xa9\xb9\
+\x95V\x1c=\xe6\xb4\x98\xe8\xf9J\xc5\x10\xa6\x01-\x10\x84\xf8\x8a6\xf6\xfe!^\
+\xd6?\x14\xbe|\xdc\x07`\xf3\xc2\xf4\x9f=B\x8cz"\x90:&\x04\x15\xef/i\x0f\x9c\
+\xb6\xc7\x04\x15\x1dVL:,\x15\xf1\xcf\x1e\xee\xb8<R\xff\xdf\xffn\xf3G\x97\xe2\
+?\x16\xb9\x9b\xfa\xa6\x00\x00\x00\x00IEND\xaeB`\x82\xdb\xde1\x17'


References