Home » Eclipse Projects » Buckminster dev » Dependency Visualization
Dependency Visualization [message #35530] |
Mon, 22 June 2009 17:25  |
Eclipse User |
|
|
|
This is a multi-part message in MIME format.
--------------090708030908080509080703
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
Hi,
as discussed in
http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
I started working on a zest based component dependency viewer for
buckminster.
I just finished an early prototype and thought it's enough to get at
least an idea and ask you guys what kinds of features you'd like to see
in it.
Currently this is (for sake of simplicity) registered as an editor for
previously saved .bom files.
It consists of 3 areas
-navigation tree that shows a tree of the component dependencies and
is used to drill down on the graph. The selection is linked to the graph
viewer so if you select a component in the tree, only this specific
subtree is revealed in the graph.
-graph viewer. This is very basic at the moment. It shows the
dependency graph with some icons depending on the component type and
highlights the direct dependencies of the selected component. Unresolved
nodes are shown in red, a double-click on a node reveals the node's
cspec and that's about it :)
-settings section. This section lets you choose between some layout
algorithms and filters (only platform component filter so far). Filters
are applied to both the navigation tree and the graph viewer.
I came up with the following things that should be added:
-better highlighting
-tooltips and properties view that reveal more details of each component
-smart highlighting of paths through the graph (shortest path to root
request for example)
-regex based filter (black and white list filter)
-dependency reports generated from a bom with some nice pictures
-zooming
-image export
Now I'd be very interested to hear what's on your wish-list for
dependency visualization, so that I can plan on the real implementation.
Attached is a screenshot and a bundle.jar including source code. Just
throw it in your dropins folder to try, but make sure that zest is
installed.
Keep in mind, this is just an early prototype for demonstration and my
first steps with zest, so the code is super ugly at the moment...
Best regards,
Johannes
--------------090708030908080509080703
Content-Type: image/png;
name="Bildschirmfoto-1.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="Bildschirmfoto-1.png"
iVBORw0KGgoAAAANSUhEUgAABkwAAAHACAIAAABvRdMoAAAAA3NCSVQICAjb 4U/gAAAgAElE
QVR4nOzdd1hT1xsH8PdmQBgJW0ZYCjIEcS9ExL2rVq17tY5qXdVW22rraN2t 1fZnq1ato2pb
V91740bciAgKsvceGTf390dAAiQMRUH9fh4en3Bzz3nPPfcm3Lyec8LcuX7B qZ4bEV08eSAh
pw8RTZhgRwAAAAAAAAAAALXPhg1xRGRjfMi/a18iinoa1qilf0ZKAq+mGwYA AAAAAAAAAPCq
kOQCAAAAAAAAAIC3HpJcAAAAAAAAAADw1kOSCwAAAAAAAAAA3nqCyu2meLJh 1azDWcUbGKHY
ysLZ3bVdd99O3iZC5vW0rlpwOefnLF0VSkR1xq6f0t+WX9MNKsKmH/nyx/Xh RKTfdv7s2c1E
xb1YEPW/8RtOZhKR5fC1E+puWPrDXY7IYtja6UMcXnf7C258+4NGOEXJX18l Opf/NGj/pTQF
Cazbtu3m+uJ4C6ovBAAAAAAAAAC8p152JBenyE5KuH8p8Le5K2esC0lVVmuj 3hN8k1Y9HBki
ItmtE5E5XPEzBeG3rmUSEZFTi3a1Jyv3yvKfBv299+LevWdPPJFxFe8OAAAA AAAAAFBZlRzJ
VcykbZ/JHcTy9JTQqzePBqdzxEUf27HAdMpPQ231XkcD32U8i+atvPnP77NU EHzzYY57a7F6
bJMs7FSIetSca3cva4Ge4ciR3/RiiSdytHrz00v13F579DcQAgAAAAAAAADe cVVOchnY123e
0lpI1L5rm677/5y55TlLFLXnxPUeo9uZMkSqnPDb/+y6Gng/PrWASF/i0rTJ hyMC/Bz0GCLN
iWkDvunAHjt/8nZKHokcWvuNn9S+sZk6wVHZGgZ+15V//MzRm0nZnJ5N07af Tu/YVF0DVxB+
/Oi6v++EpbMi2/o9R3W0Kz1q6JVDEJcTfnv3v9cC78QmFxCR0MypbpcJHzQ8 +9u3Z/KIJH1+
nDneTUhEpEjYPvnX3YlEhg0XbBrc1KjExE7GtH7PxoL7t5QkDz9+L69VWyOG iHKjT1zPJyJi
HHu0MuGTPGz79iXFs/l4BdF3d/556cK9hHQ5EfEMzS0c67v3n9itjSWP2Iwj s1auf0pE0il/
TupqwWhscZixdWJHM1XCuUNr/wt/FpueJSci4ost3Js1HTjCr3kdrRdDiegf iYJmfnLwaZmd
THt8+scku/Ryalam7pu+akt04f4Rv6/o9zsRCdss+vrrxlzJA+QTqbIeBe36 99qV+4npciKh
sVNDrx6DO3XzNOJX9gQBAAAAAAAAwPvlFTICjF7dnt07mxIRkeLZ+XAZkSr9 2v5pM/cduBmf
WkBCkYBkWRFXL6ycuvGfcHnJRFPq3iV7/nuYx9cjooLoa6e/++bU43yuSjXs WbTrnxtJ2RwR
yROCzy1edSdFRURs/NG/5vx+KyydJaKC+Cf7lm/a+kSz4KuHUKVf2zd95t79 19QZLiJSpEeF
3Ywi936t7YiIss4ejMzliIjk0XcvJBIRmfq3aWBUZukyxtCnh5uIiEh593hE JkdEXO7jm0F5
RER871bNLcqcoPzIDd/s/i8oIV1OPAMDQz1VXlpy6PX7IRlsqap1rJOmygx9 dPdZepZcYCg2
0Cdis1NDzp9a9MWB4OxXnEFYXTWr0i7vmTrnwJFbielyIiJS5EQFX18355ef A7NKHqSuEwQA
AAAAAAAA750qj+QqQd/Kx5ZOZBCRMjkuj82P3742OIWIxN4zVgzsIBUUPA38 dtbxMDZ217rb
HZe3qqOxupRhiwFrvm5qTennlv368w0ZxV7aHNh6qV9a5Wvgu3VZvtC/XkHI T1N3Xc4hxb1b
D7ObtBdG7trxTEFEZOQ3dcz41kYJZ/bN3xxeXCw/6tVDbP01OJmISOA2YPC0 /m52ennP74WE
GOjpOTQf6HX+l4eq3KuXgzNd25my0efvJhERmXXuIRVp6UFG7NWyhWHIpTxi 79+4ndGwg2lB
yPGwfCIiQaOe9U3LZKoUSU8fZhIRuU76cmUPUz5xyqyUR3eiWfPSS3fpyHLx LNv2WdDTuaGj
sZAhYvPub/197n9plHF7962uTQLE5X+FAM+q1eqDrYiIiMt/cm7e7DNPWCJR /cF9bPWJKbdm
iw/X/hBwet2YX2KIyGXS7J96mBQl8ApKxMiL3Pbb3XQiIknHmWPH+0rSrhz+ btXtVMq5+Pup
rk0H+BhWdIJMavP3IAAAAAAAAADAa/FqSS7iNIboMPLoB7fUy6XL4w+v3nSM iDh5IktExIU/
iMhrVUf8YmdD3w+9rQVEZNamn+cfN+7kEBd+NSHTKazSNei3GdHGzYhHhs6t 7OlyKBGXm5St
kheE3s8hIiLngFEd7cz4ZNazW8/D4fuSCotVpZHaQ8hy7gdnExGRY+eZwxvY CYhIUq9l63pE
RFybQd6bHt7LVTzZfznDt0vu2UuZREROrTo76OhqI8cebQwvnckjVeTxW1n+ rWKPB8uJiET1
e/oYls3WCMRmZgzFcxS+ddv3D52cHKycXJwat25irldqX4anPdXDt/Byybp5 55/jcXFpeQVy
lSIjj4iIuMSn2YoAcSUXVpPH3lg+78wTlogvHfrD0J72AiKqlppl0Q9uq7vX teMI/zpGPDLy
7zLk4O214UTZYVdiFD5uL/bVfoLI5N1Zqh8AAAAAAAAAKunVklyylHtx6kfC OnYGXE5mbuH2
1PDHqSX2VBVkFKioOH8ksjAuHMfDM5QYEuUQKbJy87IrX4OxvRmfiIjh6xfm NFQsR6q8bHVm
RWBpIVFvF4odTImKklzKKjRSewg2N1OdRtOzsTYt3X+Mkbd/D+t7exIp/GBw hHNeYCoRMR59
fGx09rS+a1dv0zM3Moh7dPzxM/2Qu3IiIsMWrby0DatizLwnfPzw+02hqXmJ wRcTg9VbDZxH
LB49yFUz0fUi/8hpZiJJkXJk0dr16hglKWVsJWcVsqkP/vfNweB8IjLv+e3o wW76TDXVTERs
buEJ0rMwNVJfIzyRlbmASElUkJKjOR1R+wkCAAAAAAAAgPfQKyS5OPmzo8fO qEdFCZ3bu+oL
kiRGRHIiYfMRW771LHfmW87zVCU5CYhIkZZcWIfEyFBc+RqIVzhUiSGN3dQp s3wiZXaujCND
hoiVpecV7yAwftUQfCMTI6JMInl8QrrSzbBUF+pZd//QYe/v0Vz85d//oHQi 0qvft5WknMXP
RC7N21vcOJBKFHZh845MdY6rdXdHI617M3r1+o7c3C3zWVhsZHTy89AHRy7E yfIjd2170mOh
l5hh+IWR2AIFR8SQMicmo7i07OmVf9V5KKf2i74L8LHSyw/aNmrRY0V53VAC lx3x57xd59OJ
yMhv1ifjmhZmol69ZjW+sYn6BMlT03NVZMAjUhUkpSnVXWVpzCMqXphL6wkC AAAAAAAAgPdQ
lReez495FnQj5OKJC+sX/TJjS7Q63+A8qFsrU0bPoWFTCRGRIuj430EZCo6I OHl63LX9++av
DsstUY386qYz12JyMmMf7frzkYyIiFff18akCjVop2fn3tCYiIjCrp5+JueI ywm9cSJGY4dX
DqHv2LCZerRX9OlVfz2MypTL87Ke3rh26J56lBHPyi+gjSERySKeyojIqJVv Y0m5ORg9644d
zIiIKONBHEdEZOrdrb6+9p0L4k4euf84S+Tk06Bjr/YjR/t6CImI2Jw8GUfE 07c0V2fdUm4+
yFJyiuizZ86mF5dW5efkExGRcT1Xdys9HpsVfCqqChmu/Ng9i7YejCUivUbj x81oXzyUrTI1
C/QLd8+ISs3VsUK8vr13U3X3hp/bdj4hqyAv6vyJXepF1cRube2FlW4sAAAA AAAAALxHqjyS
K/PyoaWXNTcwDj2GzR9oq0dEBk6jJje+s+xOKqUc+n7lIaG+iJMVqIfgeHuU rIYxTr6yZPKV
4g1Sv7FtJTwDcaVr0MHQeejwupfXP1Nwcdtn/HDQXC8rLb/EDLYqNFJniNFT mt5bGpxC7JN9
O6fuK9xcd4J7Tx8iIkbsMrCLyZUD6gFq4vZ9nMp+rWJJAocOzaR7TscW/W7h 39xF2zL1RMTJ
kk+v/zd0PREJDAx5BXmF3whZr62zKY+I9N27ehjeeJBHiuDVKwf8QlzJXJLI qWFD0cObBZRz
buvnSc6m6VEhcVUYa1Xw+MK/j9WJTfndP9YM/KNwu2mPTzcMqbBmxsDJxY4i 44hSj24afpSI
HGZsndjRrORehs4jJ/sEL7+XTlnnV/96fvWLJ4z9J3VpYEgAAAAAAAAAAGVV eSRXIUYoqWPT
sF27yUtmr57UwKIwV8Yz8x3wy0/9+7WUWoqIFLICJc/Q0qZRgP+nQxxKJm3M e307epSvtZgh
IpFDq04Ll3RxN2CqUoMufNueI5Z/2tTNjEfE5jFWnSaOnOimucOrh+CZten/ y6oP+7Wysygs
wDdxqN/MSVTUm0LnXn4u6oc2zbq7VLzkusDWp6vTi9/MOnSy1lWGEVkHdPfw sBcb8JT5eXKO
+BJpvS7jxi3sZyUgImLELfrNH+OlnusosnbtO2P06Loaxc28Zyzs7udsQKSM C00oqNdh7kwP
HWPGtNK55FVlahY6+M782NtJrL2GIjzztoN+Wf5Br6bWpuphWwIjxyatPl0+ 7XM/CZaUBwAA
AAAAAACtmDvXLzjVcyOiiycPJOT0IaIJE+xeW7iCG9/+8MNdjshi2NrpQxze 1ZQFVxB2atoX
FxKIXMfPWtHH/BW/wxIAAAAAAAAAANQ2bIgjIhvjQ/5d+xJR1NOwRi39M1IS kH6pXlzmlb/n
rI9ITM9nici02eiOZuhiAAAAAAAAAIDXDRmYasbmZcSl5xORuG6jEZ/39qlo OS4AAAAAAAAA
AHh1bzjJJWr5/Q8H32zIN4sx7zzpYOeabgUAAAAAAAAAwHvmZReeBwAAAAAA AAAAqDWQ5AIA
AAAAAAAAgLceklwAAAAAAAAAAPDWQ5ILAAAAAAAAAADeekhyAQAAAAAAAADA Ww9JLgAAAAAA
AAAAeOshyQUAAAAAAAAAAG89JLkAAAAAAAAAAOCthyQXAAAAAAAAAAC89ZDk AgAAAAAAAACA
tx6SXAAAAAAAAAAA8NYTVGan1FRFeHh+UpL8dbcGAN4rlpZCNzdDCwth2afw tgMAAAAA8Obh
Fh1qlXIuSK0qTnKlpiqCgrK7dTN/tYYBAGhx4kRa8+biUu9ZeNsBAAAAAKgp uEWHWkXrBalL
xUmuq1cze/e2JKK4ONmrNg0AQIOdnX63buaHD6eo32RewNsOAAAAAECNwC06 1Cq6LshSnOq5
3b1xsVFL/4qTXHw+Q0Tx8TKGqbZWAgAQUXy8zNZWX/0mowlvOwAAAAAANQK3 6FCr6Logdak4
ySUQMESE6xgAXhP1m0zZLXjbAQAAAACoEbhFh1ql7AVZlnowV2VGchG9dZey PHbHN5vOZ5Lt
gM/md7fgv7GyAFB1/DIvs5p/28H7AAAAAAC8x2rjLXr5cAP/Tit7QWrlVM+t 8iO5XvZaZtOO
L/x1TxwRiVpNnzauoQFDbPLJDV//m0T6DWb9NMhT9JIVl6e4uQxTQdMLglcs /y2MGM+hv8xy
M6haWQCoBrr/m6j0dlVu3NVjgeeDnkalyFREArGFs1v91l3a+bsa8qq3TXgf AAAAAID3WOVv
0auEy405t/vUyZvPU2RExDeytHLybDp0WAvbCpYUL/OxHR/k3zOVGclVuGeF e6inPr78NVJc
sOD67qDeDdrZCYo3MszryQTr2w1bMXcwRwyfX2FXMJqNqWJZAHh1uib8l3pz UCQE/b70yN2c
4i3K7NTwW6mxfHff+s76pWtVKeQk1HvZ3BdT/KDwnQEAAAAA4L1RyVv0qlFl XV63Zecjtuh3
NjclIeRyaPLgFnZ6FRQt/bEdH+TfM9W5Jpe6Lt5LD5PgND4fxgXuv990SjMR 78XlyCMeZd/a
vvvfoPikHCUR8YwsG7T1Hz7A20ZYcO+31T8HyXnu/X+a42PKEJf18MeZe0JY gc+Uz2c0M1Rl
hO//4/CJkEyVqWOnAU3Sdx4IyieH4dPndzbly+N2zN54NpPsBk1Z1NOCr9IR gpe095t1h5OJ
iLhHu6Z8QkR2Y5d1j1q6ubgsESdLuf7fiUOBEXE5HOlJXJq1GjiktYeER/LY 7bM3ns0km+59
fFOuHwtKytczb9p/wLhudgZ4UQFUmq6/oCXedpSpZ9arM1yGjQZ9OKxj3Toi HpufFfMkIixf
IuQR78XrsccHrRMCj95OM+o8ftlQ8X2tr3095sXr17prjxaJ10/dTZOJrFp+ 2G9MZzsDhohX
9MYlS7r05959gfG5eHUDAAAAwHujUrfoRJdP/KmrhrbdxpbawuXFXA1liZi6 gyd82c3GgJTZ
ibEPH2Za6xVWy8nTbh08ceBSeEyWigzMG/i1H/ZhQ6mg7Md2vkTAZik1t5T5 IF/up3W2nGQC
J3t+4cT2Qw/C0xREpG9q5dKi0/jB7qaYAFmjqj/J9fLD/V7kWc0t9dJSgndf j2kUUDRDkWEY
huHk8U/ic4ysPeoaCvLTnoSnPDi5byVnvnS4vVsHD8Oge3nht0OzfdqYUPbj 22EskX79jp6G
PDb1xC87jjwjIjLikk5vOsBpVKnR2HJDDDYws7eSJCdnERFjbG0tYvStxMVZ X4ZhGIbNuLR2
w+b7CiISW0jkqVkRV08tf5o7b2EX16KXd8LxQwcsbOxMKTojLfiffScaTupv X3HHAoCa7v8m
Kt6uTLx3/jkRkaT9R5/2dFZnmgSGJs6Nmjqr9yjaN+HYwf9IKDbW1+NROW8v +kX7J548dsHZ
tb5T/oOo5Bs7t6kspn7WzPhF5PjD/25XZ+rleHUDAAAAwPuiMrfoan7dPy5b PPD45rJ7MnyB
kE+k5HISEuNSTetaGkhsndvYFj3NZl79fcOGOzJiJHU9TPKeRoec2v99gmrJ VMfSH9v5IgtR
QXRESnkf5F98Oij7ad0m45TuZAIbc2Xt1ttJxLNydbERypKjY0LuJeQN9jDD f3XXqNf+7Yqj
Ry/QuvPWrWW2FxUUufj1r3NwZ+i13beaDS/MexHDECMw6zz3qz6GlJeRnSNX JJzYsepMZlrQ
g/iP7Ou6Nmsuvncx+/ml0Nw2rZiwS1FKIoMmzd2NGcWzmyefERHfY+yU2QEm 2Tf2fLM2JJeI
KZoCyVBlQnTvPOMTs6XLfgklxrPPgjnuhkQkj3moUVYZc/2/+woiQYNPpnzh byJ7fGLukmtp
idf23W07u2lRFLuOixb5S/PuL5uxN1SVeu9p3ocOkgo7FgDUKvPVLYrU2DQi IoFLc1tDHlFB
xJqp24PlRESk5/Hlr0O8X4y9Mvb+7Pv+Lc15rJLj8zmdby8v8u8uvRbMbWFJ 6ae/X7P9mSzo
cGh60+YWL95DTJrO+r53g7zrC+eceE54dQMAAADAe6Hy366oazyMlu2GTr0D zO+fTku+8N8P
F4j4xvYNPPx7+HfykgiIFDHX996REZn1nD9pcF09Zfylb786E3f//OmEqUPK fmynglvlfpAv
zgmU+bTeS1leMkGRkZhOROYtxs/s7m7EELHZKXn6glq84v774bWvybVt24JR oxaU2nPbttJb
iAqvMCIivkmbwS1PLLx2f/eVyACNZyn/6fH9m49EpLIapXIz8zhiDOwCWhpf PJPz+GJkthf/
YqiSyKB5R3sjhstMiEsnIrLxa2wqYBgzn6ZuwpDbiuILujg+QwynO0SpdBhp LiJGDMPlxUSn
ERHZtGtsImAYQT2vRpJr57JUcU/Slc0Kd7Nq5m6rRzzOpI4hheaQPEeBFwBA 5VVmwn/RY6bw
Bc7Xt3aytIxLSclVby7e2bRNmyYWfIZIIGRIlaPztV80ErNOQyczATEkdvc2 o2fplBSdqmxu
WVSbeZsWDUx4QpGdoxE9z8WrGwAAAADeC5Vfk6sKSS5G5Dly4lKvoDOXHz8M fR6fkxNzP2jn
/dDoLz8b11CUF/M8lYgo/eiCJUeLy2SGx8vImV/6YzuV/0G+OHqZT+vyvHKT CfpSt3r8x4/T
ri+ZfF0gtnCu79Kmm39HK6zSW8PexHTF7dsXjhw5X/NX7eU1vuNAVM/vo4ZB v9+/8c810Ysn
ZY9P/XYwIpcEdTt26uxuVPDg9PZLWUQcMQzD6Dm1b2h+5mra4+CgW7xHCiIT 7w71RAzDlR6J
WGp+IqPxibiCECVr0mxw2YoYpuRXNhSGFRoKeQzD8HjqbufwZQ4AVVGZsdD6 llILikgiRURw
oqyRk0jfYdh3n3U9uf7z7QlU8sVqaCYSFD0uKPe1r96HZTn1q5lTqohI/cft xbMiiT6fYRge
X6heJgCvbgAAAAB4D1R+uiLDMA0aOGluCQmJ0ronEREjsm/uN7q5H5EqLyro 10VHHshzbgUm
jfJxKtrduHFHb+viL1sU2NgKGYbTiKbescIP8ozOT+slSpZOJvCtms1cqHf8 1P2HT5NiY1LD
g1PDg2Ppp0+61sGiXDWpeqcrEulYeH7HjoXDh89XP9BZnivOsPIE4pZD2uy7 fykxtkC9jcdT
5Scm5RKRnutHw3x9RAX37x8reop4PBI5Nvazunow+enOHaQgMvdtWteAeMQY SaVmFJ1OiVce
ZLZrL8l6EPxYURSFRzxeUeKWqTiEQMAjUnEKuYohnnrB6eKyjLGjgznFpFF8 4L0s3/YSedSD
u1lExJd6mOnz0jX2JB6PSONXAKgkQZn3obJvO3rSRh0cL/7znDLP/rvOduDI js5WIpVcVjhA
q8SrnsfweMQjIqrgta/ePyXoYWw/67qUeDM4k4jI2r6OPvGUhFc3AAAAALy3 KnOLrsbjUWho
VNkatNw2y2J2b74vbtGwWQM7K0NGqM/n84iIeEKGz2PEjo4WFJNKnLh5+5GN DBkiYvMig5/y
pHp8nqz0x3Yq/4N8qZyA5v18BckEysvIsfAaOMFnIBGX82jlZ3/fVSaHJiu7 2yDJVZPKXpA6
96xwj/K/KHTnTt3pLbWSgwb1ndsMaXZ9zS150Sae2FFqQvGZ8sfbN55oph99 JjD/RUGGIdKz
8vO3OLg3VSEnIrN2/nXUy0XrO7XoUe/azqfKhxt+/vRv/fwsGVcUQjMVyxAx FYQQWNSV0IMM
CtszZ9YFM2mzKZMcNMqSvlPrgT63NtyTP9jw85T9EnlyZgER2bT6qKkhj9I1 92SKPwVjvi5A
FVRqLLTQssfUnqELjt7Nzbm1Y8utHSULlH7Vq38t97X/omz8xW8n3ZJQbpac iPRb9PG04BOj
LF0bXt0AAAAA8P54LdMVSRZz41pQ4LXtJTYaNfWz1meIcWo9sHHQ+ju5l1as eephb8HLjQuP
T5Hbf/qbl5NBmY/t01uU/0G+7KeDF/fz5ScT2ISrP3x7UyWVOliJVKnRIUoi MnO1EuBTQM16
HQvPv+wpLT1o0LjZED/prbOx6m3EiNy6fD4k+7e9j+OuXZd5tR7cX/7n/sTC C4whIoFd26b2
e0/FEJFtEz97YdGgQ6ueX47IXXvo8IPMAsa664TGiVsP3pGRQCTga84nYhiG KT+E0LFnz26P
DpwMz81KTM5SZMrJUbMsIzALmDlRb/fx/RciYpMzSU/i2rL10JG+bgY8kpWI UnbiIwBUhu5V
LUts17dv/eUq23P7Lp2+8SwqvegLfb08/Tq3bCBiGHnJ1yMREZX72i/c367v oE4pF/deziWR
ZauBH45vJeZrprLw6gYAAACA908lb9G1btG5Xc+m5whfwdUnoU+TM2RExBdL 67Xr1/0jbwMe
QyQwbT9jkmj/if/OP4kKDY8lgcTOqXXzFvWNeAzDK/OxXehU/gf5cu7nhZbl JRNMnVr6RN0K
j30QqyIiIzvX9gN797Cr9LLn8HpUfuF55s71C0713Ijo4skDCTl9iGjCBDvN PaKjCxwcRHl5
rPYKagyXn5KpMjM14hMRl333wBdLgzPJuMv3n39SX1hhYQCoJQwN+eo3Gc2N b+JtRxazefqG
kxkkHTZ9xQcWGHwMAAAAAKBW+Vv00/9t1FVJ537jXlf7XhWSCW8ZrRfkhg1x RGRjfMi/a1/N
7a86XbHmsInHN399hufiYmEoTwsLSy0gEnoF9HER1r6mAkB5Kj8WujqVnEmN tw0AAAAAgBcq
eYvepX+tzWSVA8mEt09tmq74uvAkLi6u1x+EP0jjiPTMbFv4txs20NsGowgB 3jaVHwtdnYpn
UhOmIAIAAAAAaKqZW/Q3BMmEt0/lpytWdiRX7ftCMX6ddv2WtutX080AgFel 67+JXu/bjoH9
+I3fj3+dEQAAAAAA3lI1c4v+hiCZ8PapzpFctXW6IgC8I2pmuiIAAAAAAOiA W3SoVap3uiLR
OzIoEQBqI0GZ9yG87QAAAAAA1CDcokOtUvaC1LlnhXsgXwsArxX+mwgAAAAA oFbBLTrUKpiu
CABvDfwFBQAAAACoVXCLDrVK9X+7Io+HaxkAXgtdX92Ctx0AAAAAgBqBW3So VSr/7YoVfzUC
LmIAeK3KvsngbQcAAAAAoAbhFh1qlcpffpVevEvDnDkPX6IUAIDa8uVeNd0E AAAAAAAAeNe8
TJLLzk5S7e0AAAAAAAAAAAB4aS+T5OKqvRUAAAAAAAAAAACv4GWSXMhyAQAA AAAAAABArSJw
qudW9VLVluXKUyoMBcLCSjl8HSkAAAAAAAAAALyMGp6uaCAQFtfG1NYhYqqE 29s/uuPx1+hW
jjzNxzXdrreA/Pp/v3+n9+F/PR0MaropAAAAAAAA8LqkpCjy81XPnuVnZipr ui1Qu5iZCT09
DTmOLC2FrzsWpitWAqf5QGTh0t3V0oh53zrh5XBF/+rqLlXsrW1D73vvGtVc iqQhAAAAAADA
WyosLC8zk3V3N2jQwLCm2wK1S1YWe/NmtkTCt7Q0ed2xamwkV1JmmiT9Z2tL cantiSnZWWaf
1zExf9mKVSxLfH71J0zUiRqOMXVo+41D0RaojHJyXFSJPBgAAAAAAMVmOQYA ACAASURBVADU
ciYmAgcHfVPTlxpJA+80KyueUMjk5aneQKyXu/64qMigbdvGlb/TqFEbnZyb a30qKTNNkr56
wnerTE1Kp/EyMjM3LJqZRDO05rk4Wcjt08uvPXqST/omTgMDuk1wlQiJjbq2 dVSoyyTH+L8f
xCSLff8a2Tjt5rGlN57FKQ08fNr2zrq4waD//tIz5pQxjy+tuHQvKFNBIssO LTvPbm5vwqi3
B/54+d6NdDnxjRp4dVrayVUjD6NKuPPX4Nse20e3dOSxUde2jnpUb4JD/N6w pFS50L1hp4UB
7rZ8yk+9//PxwGMJuSzxJOYu4/r2HmjO1x2xmLaCpCuKPDV46clbgXGZucSY WXt+0rVz/zp6
DGk9BDcrnvboOpr6guLhmY2T07ocGeRqTEQkv3Fg3QLRgL3dbJJ0tIq4/DvX j/1w/Wmc0sDD
x6+3kkhIHJFMW2vznu0fcj5FSecH/nyeSNRz8MR59kyFvQQAAAAAAAC1i6tr 6TVq9PVr3XQd
mexN5FmgrDp19N5MoJcaycWRo1PzkaM2Hjww+6+/tvr5+Wk+GxgYOGLE6A/6 rnB0as5pG5yT
nJkmyVj9ydyVYiMjVll6sq7YyOiTuSs3Lf4yiZthVSrPxaWEHpl2Lrld58GL HPWiHpyef2CP
cOTICVYMESlSg4/V7bdh8kcWKnli6KEvr+X07jFiiC3z+PappZFyxpOoRGO4 rKjTn51IbNfx
w5kOYkXyw9XH9s43GLvKyzj72alPD0e4+vbY7FHHWJ52L4E4jiOOiDji1D8a j4kUacEnXAdt
/tTeKOfJil1HvhCZ/dla7/DRU1fNO//es64NryA6ISGXzxGn0hFRXPyyV2Vq K0jao/haqZRM
Pe/Og7uZm3JZN4NO/rj/guvYzj5CLlPLIaiyIrVF91Rpi1iio4qGsL1I9FF5 x+5rmfXo6KzL
6V26jxglpYdBx5dGyoWeRBynvbXO/f4O2D70gffOEc2kPCLisiJPVtBLAAAA AAAAUNvUwpRW
WW9FI+FVvPwJdnJq/kHfFSNGjA4MDHyx8UWGy8lJ+xguIiq4O2XMnGViIyNW B7GR0Zg5ywru
TilVUJV9IeiZwLPbLB97J9M6/r49J1im/Xc7MV/9rH79Ka2d6/AZPl925Xa0 caNuk92t7SR1
OrTt3FtcZiYcl3vp6mP9Zj2ne9k7S0zqu7Se01J8915UmirnwrVHcrcei1q7 ephK7Os49/Rx
rlN+HwldJrewN2VIKHad0NY65v7dMHlBfD5P6ujcwNTYUmLZxM3bT8LXGVGz ZSptBXVFUZCo
TuOR3s4eZhIbc/s+7Tu0Vjw9m6okTtshMDqis7ojVoaWY8++cCtS1LDbtAbW dibWXfw79zAq
7Hztra3kecFMRgAAAAAAgHeHLHrd6LkffDD3s70pyrK/AryslxnJxSoLB/jZ S5v27r1s+PDR
O3Zs9fPzCwwMHD58dJ8+y+ylTV/sU5akTp1jmxYPmra4nBDrFkyW1KlTqhJF ekgWOTYxMyjc
LvK2NcxKSs5SWqpUnMDYyoZRqlgiRfqjLMaxpURPvRtj3MSMf4RjVZq1KdLu pCli4ra2v6ZR
v2lGRr74Xjrn7GNpVCK0SqXiiFQcq1Rxmo9ZlYoTSKzteEoVS0RkbGopzk98 rmjb3dty78mN
H96v19bJyd/dvbmpkNEVUaEsnh3ImGgpSDqiFCg8CmL+Ondx99OU9MK2Cvzz 5SpZmpZD0BWd
c9UWURPLcRzRi95TqjgijuVYpfZW5aSHZDFOzU1F6v15pi3M+ac5VsUqlXnR WlrLClQqIvXZ
4XS3U7OXAAAAAAAA4C2gTN03fdWW6JIbea7f7hjbooJURMHVb75f+oCYRiN3 fu9h9PpaCO+c
V10TztGxeZ8+y4YPHz1p0vjff/+jT59ljo46x3C94Nmk9e5f5n44eaHWZ3/+ elzrgK7Xzp/U
9qSu1ZkYpkqLzXMqYhp0/WSdp1GJUorYKtRRWJGKLRpnxHEqFRGRwLXloIMu 0RefRl5/du3z
azc+6D/sC1sdEUvQVtBRqD0Kl3/xzKEteU0Wj/iwiamBSBn7/eaDeVU9XiLS ElFUYh+mRJdr
zmXUduwcEcPnFxcR8BhSt/Z0ZVpbmV4CAAAAAACAt5q+/fiNCz/miCfgV/dK 9Sq5nPT08Iny
PfWSa3JpcnBo3rv3suXLJwwbtsHBQfs6XKW4NOtERPt+m1/2qajo2NYBXa3d W9D5k6Wq4okb
SOhKVEqeu4MREamy78flia3NxMTlERWtk0XEM3YXq25GpxXUsxERkTLjdhrL GZZcaoovbmhK
5x7HZLi7mWvmcPhib1PmwtPEbHdnicYBFx84V/oxmxX9pKCZkyFDpEqJi88S 2dkLiThGbO7Y
y9yxV7MW/vs3r3yQNNXeVHvE0soUdLDTHoWXfS5Z5e7XqLWpiCGOzUuOKFDZ cpz2Q9B1vNoj
llihX6QvJHl+gYozZohU+dHZck6k+9hF4lwx3U3IUtS1FBIRmx2aqeQMOGKz 7mttLccxDBFx
hQuflddOAAAAAAAAeBvV67N+WXMLdd6JYYRCIlnMHxPWHU0nh9GfrxlgWSIx oUjYPvnX3YlE
RNzd7UM/ICLplD8/7SJOv/L30b9PPYnKZMnQolGnDuNHNnYUMSSLXjdh3dF0 svuwf0DMxb03
Uo17T1o/3irmxJF1/94LTVEQMSJzK/e2XT//2BNThN551ZPddHRsPmvW5cqM 4SIikYEkKzvb
pVmnqOjYxj3HlPohImv3Ftl5eSIDSamCPON2TZ0VoWd+fhgfnZly6fqpP1LN +jWqIyqzm39j
+5z7Z9aFJcdnp1y4du5QDjFEDJE8+eYXu48fz1YRYxzQytMo6sy8K2EPM7Lj 0xOv3r+y5l6a
gjFu39JN78nJhTeehmVmxyY/P/YgMqn8b19g434/f+9uRnZkVNCy66n2Xt5u lPzv5VunY1Pj
c3NjEiIupaosLYwEuiJqtkqpraCuKPqGLhJ6HhGTrCJOkXbs0o1w9Z5aD4HT EV1HxOImEd/W
QSpOuX8iVcGR4vnjK38ll3vsemL/JvYZ9y4fTVNypHweenV3hvqk6Ggt8Ywl xvzs6ODUnPT8
gnxd7azMdQUAAAAAAAC1HcOrYEADI7RwqmNa+NjYVmoprWclYbLOr1i7fE9o VJaRa0NHO2Xq
3UN7vlgWnMwWl4vbt3/njSx9sUiPR4qoi8t+uxWaorLxqN/Ux95CkXz3VlwO vlnxPfByI7m0
DNYSCERat5eVZjx199rFgz6bq2uH7Ly8K3s2pdVZYFm6QgvXLj/7n195effQ AtKTOAzo2Xe0
JZ/jWI5TN0vdAsbKvduyzJPLTu3aw+q7ebUeZ5+2jcdwHMfK0h/GJzdUqDiO L3YM+L2X4eqr
5ybekhEJrOo49Wqlx3AkceqwttuVH68e//iakvhGnp7+zTw5jfpLPxZaNB0l iZi//UIKJ/Js
2G1lC0shpQtyItYfuhwvJ+Ib+3h2WtzETMCRjoic8kWrDPjaCrI6olCnTh1u Hzs7eN1ZI5G4
qXez9rE3VBzHaT8EHdFJri0iV1DcUYzIts28JseW/LNuI9/QxbXZMIfIbeUc O0eWbl2WZp5a
9s/6tXwDG3uvIfbR/3AcR0Y6WssZSVuNtT36867NK0jUY8CYb3T0EpaeBwAA AAAAeDs9PTTx
o0OFj137bf6xhWU5Owsses6baKZek8un/6rvPYyI5BHHJt2QEZl9+OO0MfX1 lDEXpk8+GR18
9nBUo7HSooLihnPWDGpryVMqOPn9c2lEZNly+ne9vIwZIjYrKU+/uidGQi3E pCfHqx9dPHkg
IacPEU2YYFd+maVLn75i1JTsNIvcXwvys/pOLJ3qOrB+schAkmq1wJJfPXkN Nu3PXX9faDhi
U6MqfXFgpaqOCto1Ntxnx0c+tq9xvu+biVJVtbNV8Jb4+ut6Nd0EAAAAAAB4 zbQuPK9OcikK
5xgWTleUlfy19MLzXPqZ9aPXRJeN4PnFN8tapa2fsO5oOpn1mvTHRHs9IiJi k27Om/jfQ5aI
SCCxcPGs3/6DgO4NxUhzvTM2bIgjIhvjQ/5d+2pur5lTbCk2T6GpipBhd45u KfVUxrOHwvYn
Xi3DxcmTjoXn13ewsqTcO/fO/ZVdZ3JdY0y9BQAAAAAAAHjj1ImtahgfYdy8 h49tcRpDYGdX
/IuxRfF3qPHrNJ/3k/Dg4ft3niRGP099fD318fUY2jChtw0yA++4alh4/uVY GJtTh+OJZbbb
dJipY0JkFahk4Q/P/HQ2T05kYOo0uHuHvmKmeppdAkccFS94/7q8mShVVTtb BQAAAAAAAG8/
Pp9HpOLkciVHxDBGTo6WFJ1CnKRlh3HNDBkiUuZF3IzgSfWKV/jSWOtLlZue adFw6LTGQ4m4
7JCFY3YEK5LuJyiR5HrnvdxIrtqe1tC3nzpw7NSS215Dm/mOzYefaf6aKn/D UaqqdrYKAAAA
AAAA3noCSxcJ3c2gR/9O+fSchUOLWV/4Dm9+c01Q7tmFPz3xcrDi5cY8jkuS O8zY6l3XUEt5
Zezlb764oXKwd6ojUqU8v68gIjN3K8xWfPfV2EguAAAAAAAAAIAyBE59e/d+ sP9IWG5mfFKm
PF3GM+045zPRP8f/PR327OGTaBKY2Dv7tWrhbsRoHXfBM3P2bRJ5/XHM3WgV EWMsrd9pWJ/e
Ugzjeve9zMLzP/wQ8drbBQDvrnnzXGq6CQAAAAAAAPC2qs6F57OzC6qnUQAA AAAAAAAAANXh
ZZJcy5d7VXs7AAAAAAAAAAAAXlo1fIcnAAAAAAAAAABAzUKSCwAAAAAAAAAA 3npIcgEAAAAA
AAAAwFuvxpJcgYGBL102Jat45XtO29eFAgAAAAAAAADAe6XGklx9+vR56TyX pUT04jHDVFOD
qp0yZkvXugFrnypKPYaXVk435lz4xN1r2tXc1xVaV/04swAAAAAAAAC1Q01O VxwzZsyrjOd6
m/AMXbsM6O5pjNmhr6QWdmN1NUkZ9Uenuh03RL1MsuxVygIAAAAAAAC8KwQ1 GHvLli1jxozZ
smWLn59fJYs8DE848cfXJsZGpbZn5uR2G7/Uy9XmZduiUihIKHxtyROeud+X P1b2IN8XVe/z
auvG6jrdKgVrijMLAAAAAAAAUBvU5JgYPz8/dZ6rkuO51BmuUbN/HP316lI/ o2b/eOKPrx+G
J2gtqMq6s3FKV297qVTq0mboD8djFUREivA1/s4dftjw7YAWrlLHTr8+KUi9 vGpkm3pSqdS7
5+xtW0donZ5WEHlowWDf+lKpVNqg44TfrqezRETEFUQeWjTMz10qlUqdm/Sa cyRBqVlKc1Kb
InyNv3PAwt+/6t/K2825buMP5h6KVhARl/d416xeTZykUqnUyStg3J8R8vIi FtNaUFcUkj3e
PO0DXw+pVCp1bNRj+tYHOYWrmmk/BK3RdTX1BV3Ry/S5TMupUTxb19Gp1eKH sqLjyzo7wdN9
9PF0ruTcQFX6tTWjfNXna87+KNmL6FrbXCa0uhJF9I7Bbm6Dd6g7Rx72W8+6 XuMPJ7E66y9V
z8/nNxQ2SXezKz6J2WfH+i8IlT9e6OsslUq9ZlzPq3zPaysLAAAAAAAA8P6p 4Ylflc9zqTNc
w2ctFxsZKeTKpUs4Fxe+SMR3ceEvX8YZGxoNn7Vce56LTTw4dfD8G+5z9l64 fHJt35w/Pxn2
88PClesVYRv36E89GBIdeXycwcEpo9fEdvr5+NVr/3xm9M/Sczll1rRXZVyY O2DmZZcZf52/
duXk6l5pv4ycvC+eJVX6ua/6ffoPDVhz7PL1y4d/HuNtWP6C+Ionm/eZzj52 N+zJ5aWuJ6aO
WvNIpny+a9pXZ+vO3nf5VvC1Exu/6GKvx+iOqEF7QR1RiFQKntuwJf8GXr9+ /t+vvILnj14c
lEuk/RB0RNcdsYJjLNPnRke1nBqhfY8hbgkH9z9R789l3dx1UeU7vLVpiSBs 4n/TRq2M8Ftx
9MrVXRP4W74vPF/l9ZhG6In11IMYhQ6DVy1qfmf+539HKWSh66eueN5t5ZIe dfg66y9Vz6f1
hIUbdTe74pMo7vjnxQUeeu7zr0TGxsY+XN1KVPmeL1PWsLwrDwAAAAAAAOCd lZ4cr/45sGPd
+vWx69fHcm+Eqanpi8dLly41NTXNy8srZ/85g/1iY+Nyc3Jyc3Lmz5cRcZ99 Jk9Oypk8WU7E
LVoky83JiY2NmzPYr1RBxfM/u9k3mHoxU8VxHMfJn63rKPWeeT2Xkz9Z3c7O ffLFrMLdNnd1
bDIvuLAN+XcWNLfzmHolR7MqZfzfH7j4rngkK/xdHv5L+3q9diXIY//q5eg+ 4XS6qkTg6D+7
OLf/X4S81GP5k9Xt7OqPO5v5otI+To3n3Eq/O79Fvb674pSVichq7FOgraCu KKW6OPPMWI/m
393O55TaDkFX9DytESsTvXSf6zg1isiNXR1bLLpXwHGcKv3Ux+7uH5/KUJXo RsXzP7s5+Hxx
NVsdIffGnMZ2HlOv5OjssZKhS1DE7h7hXq/nnBntHb0nH09mi9qmrf5Sl03J s6y92ZU5iZwi
ckNH5w7rI+Uv0fMlywIAAAAAAAC829T5qwM71r1Iaql/an4J78DAwI0bNx46 dMjAwKCc3fQk
lsc2LVYqlUqlctMmARFNnZKvp6ecNjWfiP74Q6BUKtctmKwnsSxVUB53J5px CfAUq8cBCa1b
tLDMfBSexRIRCewaOaq/qVEeezeGcfGtV9gGUV3f+vqlhyfJnl+PyI9c3amu VM3Zf9mTgvSY
9NzooEjOrauPSaW/6VFg39S5MBLf1M3bLO3hU4XLR8M9785q3fqD8V+v2nkx MpcrJ6LmXEj9
+loK6oqSo2JTLv8yvksjJ6lUKpV6jjyRlR6bpSSZtkPQFZ2vM2IFx5ijKtnn uk6NQNp1SIOk
Q/vDZMRl3thxmdoNbykp2bnyuDsxTP0AD2P1r4ZuAW56TEU9Vhy6ZEvt+q/4 vlXo9n9TPli1
qIslr7z6qbx6tDe7MiexlFfreQAAAAAAAID3UQ0nuQIDAyu/9rxnk9a7f5nL KpXx8QwRWVoo
WKXSwlxBRHFxzI9fjmkd0FVHUS3ZJ4aIiOELeJXOTBFxKo7fZPXt6FgNl7/w 0Kt8DUVYxYvZ
ahyrZImIDBpM/+/O2a2zutiln185tG3AnAsZqkpF1FpQRxQu9fjMsavjuvx8 5l7485jYsD0D
TPm6Z1bqiq47YgXHSFSmz7WeGoFtlyENkg7tfZyfcX3nFab9sOaS0vtxRDx+ 8drxTNE68uX1
mK7TrcoOu/6ogCg78llGUepJV/3l1aOj2S9x2bxazwMAAAAAAAC8h2oyyVWl DBcRuTTr5Nmk
9b7f5kuMMohoy4pV+36bv3XlKiIyNkhuHdDV2r1F2VJ60iYOXMSF0Bz1r4rE mzdTTDxdJaWO
XM/OR6qKuPI0X/1rQeSVJ7LSyR99hxZ1KfTgtVRV6e3NnZmwk/cyKz2uRhl1 5WFhdkKREBSU
buZV15hHJDBxDxgydeG6/0795ptycNeDfF0RSytTUFcUvfibIXKfCeM6uFoY 8BllasgjdVZH
6yGUF117xEoco4ZyTo3AtvNQr+TDe66d33GFHzCsmaR07XrSRlIu+nZs4Yr3 8vg7zwq4Ctqs
gyr9wqIZu00+27KqS8TSaZufyMurv3xam125JvH4PCJV4S5V7PkSZQEAAAAA AADeTzWZ5KpS
hsvUzDQrO9ulWaeo6Nh+AwqI6FbsNI+OY2/FTiOipp4nrd1bZOflmZqZlioo sO3+aUfFni/m
7bz5NCrkxKppK0JdRn7sU3p1boFd93G+WdtmLTn4IDom5OjKr3fFEUPEEMke rhnZ97M9MUri
2/T6YpD47KwJyw4EP42JjrhzdvvS77aGyfk2PWf20z887bNfTt6Pio16cGH3 9rPxinIPR3Ft
8dyt1yNjn5z73xc/Pa47bKQ38/CPxWv/uxoanZgYGXz8eJjS2qOOnq6Imq0q 0FZQVxRxnQaO
vPBjVxIUxOU92b1odYh6KJXWQ1DpiK4jYnGTdEUvNR+1vFPDt+k0rGHK3/MW XRB2HNa0TI6L
BHY9xrdN3bLknyf5HFcQsXfZpkhSl9PVY5o0mqpKO7/w871mU//3eZeBS1Z2 iVw2bWOYTHf9
FdDW7MqcRBJIHGwFsYFXwhJS0jJyuSr1fMmy5cyCBAAAAAAAAHiH1WSSq/IZ LiLqNn7poU1L
s7KziWjixLjRo+NPnzZr377puXOmkyfHtG20LzsvL/jwn92mbyhdkm/9wa9/ L2wWsrhfO98u
k/YbjNm443OvsisqCewGrN0yzfbU9G6tWw38JWvQl20NhXoChojNfnor6H5s AUfEMw1YenDT
OMnJr/q0a9Xaf+CXOyPEDqY84pl1WL5/7UD5rkndfVv69pmx5WE+U+4sSKH7 5GlORyf5twwY
sblg4NrtM7z0efp6iceXj+3cumnTth+tSeixauPE+kKdETVapb2gjih8m74/ LuscMbuNh2cj
/8kXGk7taab+lkGth6Ajuo6IGh2lI3pVTg3fuuPwRnmRSUadhzYRa+lCvk3/ X/+cQL/18vJo
2HbCuYYTfQ15RLrPUQkvmqpKPbvg8/0W03/9zNuA+HW6L/6xR/SKqRtCZTrr r4C2ZlfiJBJJ
fL/4vOWTeV2bNWrYdu6tgir1fMmyeZVoJgAAAAAAAMA7h0lPjlc/unjyQEJO HyKaMMHuDQQO
DAysfIZL7WF4wok/vs5Iz+g7cW6ppw6sX2xqZtpt+gYvO2G1NE/xeFWHrkfH XDw+zklQLRVq
VB2+plPnw2MuHfvYobqrfuNRamd0AAB4zZ6n13QL4O3naFbTLQAAgFosJyfH 2Ni4plsBtdeG
DXFEZGN8yL9rX83tNZaCqGqGi4i8XG1o/NKtnwfcObql1FMF8Y+6Lbj/ahku LuvOv0fSvNs1
tKaEa39+9b8Yn2+72CFFAwAAUAzpLagu6msJqS4AgPeQQsHm58tVKo4r8y1o DMPweMyNG1c9
PNwqm+RSxmzp2W5L3zOnPqsn1Hxc/Q2vTV7qSFUZV38a/9mvVxJZUfeddze1 fxeziG9ZEsfL
1WbFodDXVDmXG7Jj1tdfJMmIjOp2nLhp5Qind/xlAQAAUAXIcEG1e56OPBcA wPtFqWSfP09b
tuzc3btxSiVb6lmBgG9nl+nurgoIaK+lMJd+6EPvT29obLEYfuDqV65dBnT3 NC69vowy6o9u
AbsGnz8x4WU+2XOp+/v5TAnS8ozt+GOBC3zKLoH0CsppaslD1rdp2n/G0gUj vLWt6VNhtcqY
vfP/F9ljy9VZzUwNjN7FDBe9dUmu14kxabvw8O2Frz2O0HX6xcjp70aU2hkd AAAAAAAAaqW8
PPnPP19KTrbv0KE3j1c6I5GYeOv8+cm2tl/m5cklEgNtFTCClov+Wdhc/V1y jJ6li4G54Zc/
VnmmmHYqhYKEQh4RMSadVp88ls0SUf7dpcO+ih2//Zeeljwinsjatcx60zoq qSaMoM3SA0ta
iWTJd3Z+N/urYeRy+aeWL1GPMjUimV+vfXNH87Lf7aZDtR/La/c2tRUAAABq SoXDuNKzC148
LjP5AAAAAICISKXibtx47uraODaWjYqSaf6EhUWfPz+lUaPpt24lqVQ6byb4 pvW8fAo19LAz
VMVs6Vo3YO1TRYm9ss+O9V8QKn+80NdZKpV6zbieR1QQeWjBYN/6UqlU2qDj hN+up7NEpAhf
4+/c4YcN3w5o4Sp17PTrk8J6BJK6hWG8XcyEjJG9Z0MfHx93/Rv/G9/RUyqV Sh0b9Zi+9UEO
R9oqKUi9vGpkm3pSqdS75+xtW0e4e027mkuktQ3amlrqkMUOLm5uHg3bDvlu +VCr1PPHIwpK
PC97vHnaB74eJVtVstoGo+d1c+m9NUkWONZTKq039nw2kSrrzsYpXb3tpVKp S5uhPxyPVWg5
llXHfvR37vTzvjVjfF2kUudWo9bezsy6t2lSRw+pVNrow2WBaaWH49UsjOQC AACAirFKZfk7
SAwEFe5Tw5RR27t6be9/++jU+gLNxzXdrrdAzqlPfUYY/hWxyvd1zG3AGQAA eI9wHKdUsjwe
n2VL3zZERCzV07NwdR0cFfVb2eW6qkjc8c+LCzQn66kyLnw5YOa9bov/+qGN jfzRnvnTRk62
uvDXIEsiUoRt3NNpy8GQ3VbKfK7cP0sqBc9t2JJxa1zNlTGX1n/59ejFDS4u bWFEJSvJiTs4
cfSaxCG/HJ/QlHd/8+xZ53J4A9RtmKutDaWaWg6evpGQWBlbsne0t6p0D1D+ h1/5Dny24s4/
XSRExCb+N3Xw/Eddl+39rZ1x+N9fffbJML2TJ2Z78UseS1b4H0cUoevXNJiz 4tBXwqCfxn09
esxZB5tu3+2ZIQ75bcLn01Z1u/xDE62D7moE7ioAAACgYixbu/6b7mWwKhVH nIplWZbhDJy7
DO3sbqR6Fw7s9WNVHHHqrtO+g/LZlq6Ndw++fWBivarfXOJ2FADgvVM2hZWe fjk5+VijRtsq
mnDGyU4O95AW/lLvy/Nnp1QqwcImnVh1QDTh8IKPPPSIyGHa8s8Odd16IWXA ACIica9vpwfY
6hHpGZVfjYH3mCne6of2Q79beOrInMNP5rdozC9RCS/zzKYrklH/ze3b0IDI cc6SoMM9/y6v
DQMrcwREivR7f/+0K07Uwt9Zn/IrblW5f2CVccfWnRUM2Ll4RCsJQ66zfp19 yu9/m+9N+alJ
qQ4REJG446LFY/0kRK4zR6zr/Id45ebxAWYMuX8+Yd2Bv6/GK5rUnnX+cVcB AAAAFSv7360v
hEclhexfaC4pPcYnLSunQf/5rk51Xirga1gDglWqiIhjWVbJkEmrWf9rRURs mTVvoSyW5Yg4
lVLnZcAqVVzhDkyVay9/ZRMAAHgHqVTEcRQf/6+VVQ+BQEzErFxw9AAAIABJ REFUPXv2k7l5
O4mkhUpVflHNNbl4hrZOAkqqTETZ8+sR+ZFBnequ1tjoHJOuJAGRwK6RY+VW kmdTLq/9esGm
kyEphX8RDXpkKYn4pFmJPPZuDOMyo15h9k1U17e+/j/ltqH8PJ1mXs+o4Zhf l3e14FFMxa0q
N98jj7sTzbhM8BSr/3ALrVu0sMy8F57FNqEyHSKQNnFWL4LGF9uIhbaN6xkz REQCsY2EyUvL
q+CUvVFYkwsAAAAqxuoQ9iwhZP/CsV/9NPrr1aV+xn71U8j+hWHPEsqWUqTf 2PJZm9YOxh72
lp2Hzj35PJ9lWbbg0W/+5r2+/+X7Ae6N7U0++CUkN+ncryO8GtkbezRsN2/L +nHuDl9ezipd
V+6TIwt6dXYz9rA3btlp+IaryXKWZVlWmfvkyMIPurkbe9gbN2za/rtD0XJW xRWN5GJlkX91
tej5v8eyorg9F66a39+ztbu5T+OOCw88K2BZVpn9eOekQU1MPeyNPZwcen7y e3h+eRGLaS2o
Kwqb+3jTJ0N8bT3sjT2c6g6Ytv5BppLVeQg6outq6gs51xc2sRh9PL3w18xT n3k4f30tW3er
WEXKxd9Geas7/9u9EQUccaxKR2szzo1pujRU9mSRj7e9sYf3hBvZleilIjV9 aQMAQA2Qy9mn
z34ND5//4MHE/IKchITjOTmPbGwnyeRKubyCPw0aa3J5u1rpVfY/VzgVx2+y +nZ0rIbLX3jo
ERExfAGvMvWoUo/PHLs6rsvPZ+6FP4+JDdszwJT/YlBaJSoprw3lYAStlxw4 ffr02cu3wx4d
X9zTtuSwqXJbVUHNOjaVOhaGxy/KHTFMid+o1i3FiiQXAAAAVExXhiv0wPej vlwhNjJilcpS
P2Ijo1Ffrgg98H3pPJc89uj0D5bd9Jj69/XDh//onrN+2sjlD3NZllVxJI/Y vEs46URgeOLf
Y/SPTvtoXWzX7w/ePr59uuG/CwNzC2fMFVOkXJrXc95l14l/Xjt+/sIP3VM2 jB57MFbOKpIv
ftN11m6u109nD18K2rHiY3cRq2RZFXGkKqxC47GKI/nTzf+KZ549d//54e/r n50xcN3DXHnk
ljnfnHCYdeTwlZDjR7ZN7iQVqHRH1Dw+rQV1RGFZpYzc+y86cOjS3f92fOt2 ++vJS65ms6z2
Q9ARXUdETSoVafSeSsWROt+no1Xy2MMzBv0a4f/dgeBjWyfzts0r6nytrTVs u+H6bHc917m3
gp+m3Qv+X2Nhxb2EJBcAwPtMxZFAYMkwwuzs2+FPvoyJWWtk5G1k5M1xnO4V 56uKx+cRFQ0M
03doUZdCD15LfZVRR4rYmyFynwnjOrhaGPAZZWrIowxtQ5z17HykqogrTwtn FBZEXnki48pt
Q4mmlsWXOLl7enq6O9cx4lelVeVVqydt4sBFXAjNKawk8ebNFBNPV8nbniR6 29sPAAAAb0LZ
HBarVF5e+/Hwz5eKjYx0jNFhxUZGwz9fenntx5ql5DEHt5wX9FqytH+TulK3 bhNXfOX6dPPO
u1msUqniyLjb/HG+dfgq4qcd33HVZNCSeV08pNZuPScvGG5DHMeWaIAi/vDv h0UjVi7s3aSe
tZ1nu4krx9pe++d8vCz2wO//ybqsWDeuo7fU2rG+76AP29ZhWLZwSp1SyWo+ VipVHBl2njeq
mQkpeVYBsyd5P929/W5mWlSGwLmFr4/U0tK6XqtO/TpbMzojKjRaJdNWUFeU XKWw/tApH/h6
21vbOjUdMnNux/yz+8NzlApth8DpiF6gI6LmD8cRFfceyxV1ptZWZcUc3HbJ oN+SBT097W08
+k5fOMiicH/trVX3J6nY8s+LQttVVNOXNgAA1ABWxVlaDnBz3yQUWmVknM/P jzAybqJScSoV
x1ZXlksgcbAVxAZeCUtIScvI5Wx6fTFIfHbWhGUHgp/GREfcObt96Xdbw+RV q7JOA0de+LEr
CQri8p7sXrQ6RNtYKBLYdR/nm7Vt1pKDD6JjQo6u/HpXHDFEDF9XG0o2tap/ GnW2qtxqBbbd
P+2o2PPFvJ03n0aFnFg1bUWoy8iPfQyrGLzWqbE1uQIDA/38/F6ubEpWgaWk cH4oxxFT9bUf
AAAAoEq0jrgxMLU6tmnxoGmLyym4bsFkA1MrzeL5scGx5DrM1VDFskTEWDZv ZJ75KDxd4aXi
SGDtJRWwLEuUH3M7jufyiaOeuqxA2tpZf2eptc/zo65G5j+729v+D42IDjGp 2dE3nnNugxqI
VZrNVidiOBXLskyJxyqOBDYNHQojkcTZwywjJFzuNPBDt80LOzTb37FL6/+z d95xTV1fAD8v
ixXCkqFhKSggiKKigIAgiuLCrXXboraiYEUQV5VWFPcEW0XFto6qdeG2bn6I e2/EBQguVhhJ
3vj9EcQQ3oNEWYH7/fjxkzzevWfcc19eTu49zzsgoLe3hTbGJFFMGJftNeA0 p2kIDFIKpG0K
rm6IWRp/8fHnOhqaAXkSoojOBCbpVACdRHm+LN0iAGSF5IEqXcVGo9XHNzcz sZbjbbRkh3nN
fWx4BymSIAjJpxQabQkWQX7uH2PWU95LCAQCgWicYBjG4bAJnAAM09Fpa++w Ky0trFB0h89v
R1GAsTCCIDgcNlYN3/MFHjN/7jRxnn+HCNAfuv/aGp8lh7eYzIuJ7BebD6Bl 5uwzIlxftXU/
bLPAFTHJkyPc7cMFBuYeY6b1TllFt06K02xwbMKbkJmhPbdK9NqMjAjv8nQd j4MBS59BB0VV
O6uSa2LWSqHbJeW2ObJN+6/f/WF2RPQAr1zQsPCcEB/3s6MmgFQll9Q76izJ 1a9fv8TExK/L
c5VluADqcYYLT0/o7ZUQeOZ0cAuu/Ou61qt2IPOurpn045qkbEKz118n/Fb4 x/U4ee7nFtmN
wg+iCz90mKKTcHWde/knczS+MEAgEA0JporjDi5ue9fNHTQlivavq2cHufn4 p5w/Jd+cICgA
IEmcILCy97Ka5SSFsVgUSeBE2WECL03ykARV2kq+K4Jiufxy5mAf43I3qcU3 yM9t5W4UCLxM
EFb+NUkBKZXgpUXTpVIpAUAQXLtxf930Sjlx6dKFS+tGbIodue7fJc4MEssV sKdr2FmbXor0
w9HFwatzx2zascnd0kCr5EZoYHAhIdtbWcEEJnsBgEaintw5JEFhsiQUDgCA 4wRV6kx62wkK
WGw2VeZ8jI0BSeLS90ej6LUlKNlKLgLHKtETlflHIBCIRg+LhXXubPXo0Q0N TQcMY3M4TVq2
jE9/s1Rb24miKBLH057fdXe3ZtGWt8IM+h1I76dwkGM+/tSL8RVfA6bjPOWv K1PkTrXoNWt7
r1kK7W1DL74MrUxlHY+4x5/LvGu0GLbm9LAvheNDJ9F3wjbyDNuREgYAANIn q3wlxv4mXAAA
Hq0OUEHVz9CaDAqWMmlVwQMxt9Lk+mAJXIJiTwfFlu+ZW96W8m/ZwrEnX4wt U84w8OCLQBqt
65C63K44fvz4pKSkOlSg9mBp2/YY3MuB32h2h+Lp++evfRGQcPnew1sbvIyt fQf42wtqKx+J
v9rs17zbplf1LgFdXWHwLQbWW+cgEIh6D1M1JZsOfg4ubvvjFlT8J8twmdq5 KjRnmzo3hecp
j0tLyIvfXr3zSc/GSociSBK+FI5imziaEs+vp4lkb4teJr8QU1R5BThm7S3g 8elr76UVjptj
Ty/e/YSXO0ySFJTV4Sr3GvCMK/dzZb2IM+7cztFrZalBEQTwrdyGjA5fv3HP +vafDh96IGKS
WME1ig2ZpLAzrz6Tthk+0ttCj0eR4o+PHuXjFMlgQmXSaSTKm64h0ISiTwWy hpKc1KwiUlaT
i1YrXTMnU+r1vfTS8vUlb2+/EVMUQYgz6LUlCAowIAlp1XpWVByBQCAQjQlt bd706V4tWnx4
/253ZsafmRl/vs3cxWZbvn93MjPjz/fvdtvafAgN9dTWVuu1v1T+7X92nX2Q /v5D+r0jMTM2
pDuP6tGsztYYNSrq0ssJCQnjx49PSEhQfj3Xg9Ssk5tn6/F1FI7niQp7Tlzi aGv2tbrUwHPK
5WEZeoav+MrNmWoJ/vHZO3bzrh0tDQUAAB7hqz0AABp12Q1SSug3sjBAIBAN CtpkBF8gyC8o
sOngd+Lwv4GT5yr89dUf0aZ2rgVFRXyBoFzzJn4jusRELZzfZlFwB+3nRxav fG71w1w7DaJ0
idfnxIdx96GuS5cuWOL42w+OrAf7o/95ByyKJAmi6NmWn1Y977fgt4FmRv7f 91sdtuDHjURk
H2dj6lPqzbMXqT6RA639xwWsiJgX0mLhzO52ukUvrj8kPfq4ESSALE+GEeVe UwDSG0tW7Dae
3NUg4/D8+FTr4b/Zkw/jN1xu4u7pYq5HZF068QI3dTFkU0wSW1BlWhmkbtta oSHBIEXLILUp
9u/5lEyvHqb4i73r/ngEmDlBEJQRnQnu9NJ7S3fQSZRzFLtZ+w6Cv/fsf9Z9 og28OLkm7hkF
LUuzUzRaaRqbDeu4bM2aPT2Wj7DEXhxbuy0doDVJYgZ2tNoSoG1qyslOSU71 1zHR0OIzekmt
v7EgEAgEohrgcNiWlgYrVvQlSYqq8GA+DMNYLExLi8fh0FRYVyOowoc7wmbP fCcG0GnebfKW
5aOt0HaeWqEulxZ5enrK8lxKrueSZbjGRqyo+JDysRErTm6e/SA1i7YhmX87 fqq/k7lQKLRx
/27RiQwpAIA0da23te+iTfMHu9oKLf3WPyv5+L9VY9xbCIVCp94Rf24fbecY crlQsa+Sl4kL
h3u0FAqFwtbdJsVdyZHds1MlLxN/HelpJxQKhdYufWYdzSqXz8HTE/yb+8Sm ST/L9YnaGDmw
s1Mr6+bt+s9NfCMFAKroya6wPi5WQqFQaOXoE7TtuaQyiV+gbcgkBcRPtob0 97AXCoVCy7YB
odvvi0ovK/Qm0EpnUrW0o5zEgTZ9t78TJ01wEJbhufpphcVDynaOv4rvaeUa dbfks4Tc/4Ls
7X84nUvRnFxwdoL3wseSJ1Ee1kKh0HH6lSIGQdLUtd7Wfqv3rx3vYSMUWnce G3srL//ulp+6
2QuFwraDYpI+KXpa+mbH8Fathu+QeVLyNK53c8eJR94RAEDmpKwd6yELnlkH XolLG5SPsdXn
N5WGgfTF792sOkc/EH+2KP/sJAe7cSdyqKpHXGkDlXQOAoFAKAdt4XkzrykH /liUX1DA1Kqg
qOjqwXiznvPLNSSNui7cNtXp0e/fdx8+IuS0xqjf1v7Ugo0TuKwYfGnxcoIy 7v7rxjHGZ6JH
dh06MTY/IKS9FocLBIFLCl7cuv8ovViCEyS/Q/juRSN0kxYPGdmn66iJcxJf 6JhoUwTJd521
c36A+Ehk/xG9fScv+OtpIUHi8sXRFV5zm4/5sel/IaN695y5u6Tnb5tG27Ap Nvv92RWRw7sO
7NktdHOW1/z1Qy0wRolyWtE3ZJJi2GtmpO+rRT69unYaGXmx5Xh/AZsiCZze BAbpDBLlHIXz
Wv+0bKjmtolerQMG/HzLcWJHbYzCCSatCNKoW9TGodTvE33a9u0fnNJqgosW RhE4o7a4dtuJ
wW1eRH3fq1PfwF/uFjJ5iSaKnitNbQY8AoFAIGoOLpctEGjp62sbGOgo/NPX 1xYItLhc9c5w
AWB6XaKO3ErLyMjIyHia9NcsPzOU4qolsJz3b2WvLp46lCXqBwCTJjWrBcEG BgY5OTkAkJSU
pMx6LlmGa1TYUn2BgCRhxQp2/BZORgYIhTBpIh4WRuQV5O9YOYtmPReRffB7 7+BH/jHrQ734
qbsjg9fnTz51MsKRnbrWr+uy144/JWyP8DbGRZlHJncLzx6xbu2k9qx7WyPC Nt1mDd53rVxZ
JTL3Qrhf0N2e0YsmuJtJHu1bEPIH97cLfw81zT87w3fM6dYzV0YOdBKIUq/d ojxHeBE7aGty
SVPX+nVd9qr1tN3/hLvrZh+f1f+nWyOOn5iu/Xcf7w0tY+Jn+pqzc9Pu3BG1 HdTDgs0gsemX
OY+/2kLTEOilzHQg7ydsuW/t3dnWEE+/9Ef47HOeey8ucdUhc2hM6KqVTCd9 oCSBRmK5OVt8
M9JjyItlt//pIQAgsnb2c69Qk4vBmbSdN/uwa3CXZQ57/7ekgzYA+fHIWPdZ +vGXN3jk0NmO
vdrc02fX8PMnJ1lxKxm1Ji/W+nVd9s520Kzon9y511cGzb5i62Zh1jM8uKvu w7hJP18KOPK/
RS5a5YIJz9g9tts8ybwzu4YV/96/1x/N487F9jZmE9n7x3uFpA1YExfciXXr 9+nh2x9zB++7
tq7j2/Ixlv7PEN/tgWdOB7eAV5t6e2/pevTiPCcNACrvzKTOU/B1V7b6C/Kq HHHAlTKQfpgU
nINAIBBKczblEe3xV29z3ydtFBUUVFzJdeiPaL6urrH/PCu9atiShqfFfj/u vwG79w0SVveN
rzRtx+iBF4Yc2zi02ruudSmqUg+0sqqqGL2NjY3sRfXmucq6RSAQCAQCoXZs 2pQJAGb8RG//
clXB6n5TqKenZ1BQUL9+/TIzM7W0tJhO+2ve0JBVe2QPKV+2nBsVxQ0Oli5c IFmwkDdvPpek
qLAZOiNCF6+bMTRm9yX5hnjm8d/PcgbvjB7dWYCBbdj6iNOeG7benbrSBQBA t8/8UJ+mPABW
3pktyYKxB+cGttECsJy1+PqR3rsVdCDenVx1SHPSkYXD7HkAYBGyNDjRf/uF DwO8/1t1oKTv
1rjpfvoYAJhbOwEAng7M6PjPmeJuyAZo5h8R7uwWs/1B0Mg3ORwrT5921mZs MDO1sAcAILLo
JQ4eYVq2Bo/Io2koeyBCRSnBMe2dxk91krU0/+6XqNNHZx15tsC1zadjFU0g sv6hld63NZ1E
FWFyJn3npt2/d/tl3t+353bw4JMfziVc1u69s4MAiJd0J+NKCRo8GABAt9uv 0RM8BQC2M0b/
3n2z7vKtE30MMLD7edLvh3Zffit1KV8iniMcsiL6aLdZU+bfLNyV2WfTjl7G bAA88/imC1rf
7fllSFs+gNW8mJTjAw6VtSmLMZ42p6wsGVfYc4R99B8HnoY7tdGg8q7tvASe GzrrYUR21SP+
TZ5s1DtGEQjEN8FUeN7chE+6T8za8v3tYwkKfxK9uW817ZA5X/y1ZZeowkeH LuXau9iZwIfr
h5fHZ9vN6NSEYtLk6yHKngxYk1fJ2pGiKvVAKxsbh8pP+JbcViWZLJQyQyAQ CASi4VH3Sa6k
pKT4+PjExMRKMlwAwBM0KXtI+ZYtWgAwbWoxj0eFTCPi4ribN3NCQ4p/XziF J2ii0FCSefsN
ZjPJQVeWX+Cauro2ybubmk+4AACnWVtL2ZMaJRl30jGb6S1KddBs7tFS4x+F rsSvrzwvfnnd
r/kauYPW6TmFb66/pFpNcNZTurI6x7y9dakktn4rJ4NP99KkNsNGOWwPc3Pb 6d/dxzdgUKCX
tQ7GJBEH07IfPTVa0jRkkiIi2xZejp29cMuph5+f/K0VkI+DmM4EJunsQCaJ KqBa56wm3t93
lYb+dT3fw6vg1PYbBoHz2uoAAKPtVQvCgQPAEbpYy57NytY10+U2bdeCjwEA cHTNBFjRp6KK
T4PlNBu47Lf9ntP3aA1K+LVHExYAgCTzdjrWcpo9X3aKdiufVrzDXxp8jrHy /Qj9R7T+beOB
pxFtnIqv7vgfeMV1EmBQrMSIf5MnEQgE4muppEC40ERXOHsvzfGuQQCSbygs TuGix0djFq36
KAHQFnYePT9ikAlWA5XKCbJcLbAaonakqEo90Io22SSfM/qW/NE3ZrKUF41S ZggEAoFA1Afq
OMml5F5FGWUPKX/7FgOAJkZSAgcjQwCAzExsRfh42UPK6ZrSfLfHAAAwNof2 waQMUCTFdllz
/fBQk3KraoquKN9FKYS07FaSKn2atlbr0IO3eyUdP3Xu/Onl361cPWrn6RhX BonloGvYVYde
CvXxRNiENR+D4s/sdm9uqFWSEtJpfKFirb+q7AUAGon6KtZ3U7Fz/c4T/Nk/ /Jny3vr1n/ea
Dl3WWpPRdr5ygqSpABiL/fkghpV7BwAViiACAABZ8PTKoxIA/OWLXByMeAAA FACL/eW5BZj8
MwyYYozTtMeI1lEb/n0Sbv52ZzLW9feOAqxStzCikif5tF0gEAhE1dRJEkSr 7YyVe2fUuBos
i6EJl4fWVO+1K0VV6oFWtAkd5XNGleeDvjFbVGs5suqVW42aIBAIBAKhXtRl kkulDBcA2HTw
A4D9cQsEOr/l5BskLFulL8jLzdcDiOZrvS99SHmFJBdP6GJB/XfhsWiQpy4A SLOvXfug185W
wAJRudOaOQvJi8lpxQEuWgBQ8jL5mZhSWBWmYeHaHI4cTvk4uL8xq9zxjtbY 8VN38wbJ9vpV
Df4q+UHuVFtjFoA06/r1HINOzfksAJaenc8IO58RwdMChrvO2nV/gWcLeomK cBQbdu1ML4X3
NvGhxHl+kK+tIQaAf3z4KBe3ZDKByV56iZ6Kj7ysHJU7120/rq/Od5t3JGQ/ tR4RZ8tjPtmN
xWYBkGTVglSHzLnw6/S9esEJkWmhkSFbfQ/82JIHPGFbIXX1VobEX8ADAMnb 2y9KKMOquuI0
7f6d44K1+1Lavkxm+2zuIFBeW6UNrMo5CAQCQUvFL9g2NjZ9fDscPXejTvRB NEKqfQnV12V5
6jBHVr1pKbTQDIFAIBCNhLpMcqmU4dI30C97SPmAwSXbtsGNjJDgAemxseYA 0N7hlOwh5foG
+goNOU17/dhtcfDMeZ3Xh3bRebY7ctljm8nrnLUVT2vWK8hjcXjYYtd1k9qz 7m2bvSsTWAAY
gPjB2qA5TwNj1w4xN+szc+iKUWGTYqj5IzoYUx+eJR8/Tw6eN86294wBy8aE BK9bHTnAUVCQ
evUW4TnCuzJzpCnRc7ebzfE3fLEncuWT5hPXO2EPNkefN+7m16GFAfHm9Imn uOkEEx6bSWIr
qkyrJk82r6zQkEmKrtFzS9a+48lZvfuaSZ/t/XXNQ8AsAYBtRmeCD7304dLt dBLlHKVEWDGZ
xtA5AGg5jhps6L98MzguDLSWVcoqeUBnO0dg0ZSTkZT8dIBuU00tAZMPm1et JACUs4v16XzU
z/8aTDv6cw+HguVnfIND4rsdnNJKo1nAxC4x8xf/M2jTaFss7d+YLS8BOijh Ar+RbeZHzftV
zO32d3tBpW6RH3Fz5Qyk96RCW32dut+xjEAgapdvyQigPBei2unjW/UHZuUo mXCprqVhKlF/
NlqilBkCgUAgGgl1+Q1X+QwXAPScuCRx8+x+P8wGgMmTM0kSjh0z2rPHxNhY MmVKuqFkf0HR
9JtHtvUM3aTYkm3af/3uD7Mjogd45YKGheeE+LifHTVLS7N/gdNscGzCm5CZ oT23SvTajIwI
7/J0HY+DARAFaTeu3+tYQgGw9H2WHN5iMi8msl9sPoCWmbPPiHB9FrAMfJce iF0yK+anXstK
gGfSbvgir0qXdHHtpoRYHfvJe142YdhubOxf0x01IJWXfWLphCWvCyjQaNZp 2Kr4yS25gDFI
BEmZViwNuoY4vRQ2BK6ISZ4c4W4fLjAw9xgzrXfKKhIA6E1gsJeVTycRir44 ShlU6xwAQKPV
0BE2scv1xvX5nEWjtx0EHjN/7jRxnn+HCNAfuv/aGgYfKklZAJAfzy78+YBR 6LFgJy0ArV7R
KwJ8f5q2qdvhafZmA9dvexMa1sdxEc/A3GPUZI+kCnFIA9u026i2s8KuC4Z8 56JbuVvkR1xJ
Axk8qdi2s2K+F4FAqDE1uqQFgVBraqK6Vo1Opfq8iAylzBAIBAJRb8Fy3r+V vbp46lCWqB8A
TJrUrBYEJyUlKZ/hkvEgNevk5tm5Obm0DynXN9DvGbrJsRmXtq2qSJ+s8vU/ Nv7iiSCr6s4D
SlPX+nU/Mv7S8e8tajDFWDtSapmiqxFdRr6Yl/zPYOULViEQCEQDoREmsGQm NySLVKXheUA+
jBuAXQ11VtZVJbJqAZUzQyAQiEbCpk2ZAGDGT/T2D5Q/XmcJEFUzXADgaGsG E5ds/9mn4kPK
S94+6rnw3rdluKj823uOfnLyamMKWSnbIjekO8/v0azhJIjUG0oqynn/bN/S AyW+cd2qobQW
AoFA1Csa6ldlVVHwQ4O3t0pkHmhIqS55K5jCXo0src87Jb8FNa3WXy3NK4IW miEQCIR6oWZJ
HEdbs2WJj2uoc6rw4Y6w2TPfiQF0mnebvGX5aKvqWRaG+GYKk0NdR57ArQeu XONjoMLzMBEI
BKLOQQmsSkBZLWVoeKkuGUy2NIDklwL1pIh+rVGfN1rWeZ8oZYZAIBA1TZ1t V0QgEAgEQt1p
GN9IaxOU1foWGl6eSyUaXvLrq1G7pWG1hlpvtPwKUMoMgUA0ZurddkUEAoFA IOozKIFVLaCs
VjXSUJd0KYlKK78atn/Uroh+rdHAFpHVslBUzgyBQDQMUJILgUAgEI0OlMCq OVBWq6axsbF5
/vz58+fPkW9l0PoBLfuS0dh2Sn4j32JdA1hEhsqZIRCIhgFKciEQCASiQYG+ qtUyKKtV+zTy
JV3K0HgKflUXDbWIfq2h1tX6a4j6vNCsfnqsAfDhg7S4mHzxojgvD69rXRBq g4EB18FBm6Kg
SZPqqYmOklwIBAKBUBtQAqs+gLJa9QSU6voKUPLrG0FLw2qIb1xEpnYbLb+C +pwyA/VxY03z
9GlRXh5hZ6fVurV2XeuCUBvy84lr1woEAnaTJnrV0iFKciEQCASiXoC+EdVb UFarPkO7exFt
ZlQVpj2PjbDgV3WBlobVGmgR2VdQ7SkztNBMhp4ex8JCQ18fJRkQKmBszOJy saIisro6RPGH
QCAQiBoHJbDUC5TVUi8UlnTJXqA817eDln3VAmhpWJ3T2Kr11wSonFkZtrZa Ckc0NFi1Jl0l
xOJqS6kgvh0TE1419qYeSa6+nmtVOv9IUmgNaYJAIBBHCXnbAAAgAElEQVQI BdAXj/qJSjkO
lNVqAJQt6So7gvJcNQRKftUJaGlY/aSRV+uvIepqb+a3y623Ka2KqJGqCFVR jyQXAKR+eiwu
ZGG4Fo+jyeFwqSJcm8vWYBNiSTEOJTgplhLFBIj5Aq7QrHNdK4tAIBANBJTA UkeUGTWU1WqQ
lC3jKgPluWoTlZJfXzcuqARblVT70jCV+kSoBFpEVjs0KmMRCFCjJFehiOJQ GsXvNYql3DYm
AlMLAQtK3ucXiMQ4DmSRuFgikZIYKWbVm+c44OkJvb0SAs+cDm7BlX9d13rV DmTu5ZUTg9cn
ZxOavXbe2dKVX9cKIRCICqAEVsOjkjFFWa1GC8pz1TlMBb+UP5m2LRrWbwTt lFR30CIy9QD/
uD90VcIbANsBW1e4Nqmz5VMll+f8tuQ+YG3H7PzNXqeutEDUCmqT5JKwNCRv uAG9Wowa6EJl
CQgj/tVnKQV3X1HFFFFSxM3FeflkkaSQxaqXyw5Z2rY9Bvdy4NdL5WoCPP3f BRteBiRcDuug
r6WjaoYLf7W5p8+u4edPTrJqJDlBBKLaQXfkjZCKgy5/BI11Y6DanxeGqDm+ fc8jSnXVGmin
ZMMDVetHIBowapPk0hXqp73KHdbNvkdQ++IsCIrckVMg0tXT5uhoSCVcrg5g GhSeVYIR1Fd1
T0qlwOXWWA6KZegZvsKzpnqvh+Afn79nt+ja0dJQUEsSa3gEEQjlqJ2vHCiB hVCgkpBAYdCo
KBtutGlRfVE1+YVSXfUHtDSs8YA2WlYPZP7l33dtS87MyscBgKVr3Lab76TR zkJe8eXoZUuu
Stlth2/91dkAAyrn1pwJ+x6Qml4Lw8Pba1Il7y/uPLbnTOqbAhI09Ozc3cf+ 0KWNHguKny0e
k5AigZYhs1Z0F2Cf39pNndBm77Z92QAA1J2/vusPAMLDh6fUrfWImqNWk1xJ SUn9+vWr/JzE
xERPT5p0kDlXx8vXoihVmyiEuav2EOySZgJdsoQgMCkXtHlAYZSUEBcQxZKK bcn821vnRKw5
+CCH0rT0nrBgxaxeQi5IU9f6dT/oP8fz1uZdKW+bhZ05Ne5D3PSZG86+Fhu0 HRUxPDN6mWHC
1XXu5RczlrxMjJm1ZEfSqyLQs+szdcnSyZ0N2ABUycsjy+Ys3XHhhQi4Ju2G L9oS3VOulfx2
RWnqWr/uB/xmud1OOPIgu1DbeeRvsQv7WXCpoie7589Ytu/2Oxw4+i17zNwS N8GGxyjxC7QN
MQYpIH6yNTw8/tSNVwXAbuI8cMby6LFOfAxoTehjxqGVzqRqqT45iYOcfrwK ABMchKDhv+PO
Nh9deitolRGdneC98DEOUR7WUQD6Q/dfHHeo+6DUpXf2+AsAAEQXfug4Te/P lFUumQojeGaK
xonKfYVA1BjVtYAC3fgiVAUt3kFURP4SgR622DCQf4ZmRVCqS71oAEvDUMh9 C2ijZSmk+M3D
zAIdsza22pyij48ev791aM980jBuokXbQCfdq7cK7qbc+OjUvQmWf//WYxJA 16GXgyYQuWdi
4tbdlABgAhOB5F3ek/Mn5j4VLVvdy/5zx5iCIIxrZGWin/0uFwAwftNmmiwN 49o1FVGr1GqS
y9PTMzExcfz48QkJCQqZrKSkJNrjZdy4ccmS7ew8ZkLY/DMXr99za+1MinEc o0igWCwWh8PR
1NSS6PMkihENQGQfnjZ8wSP/mH/jvPipuyODfxjJO3UywpENANKn8fv8Eg4/ 3GuMizIPTx63
NnvEuhOT2rPubY0IOydiDVboisy9MHfwjLs9o/9e5G4mebRvQciYKcYX/h5q mn8ucsCPp1vP
XHt8oJNAlHrtFkVVuqJM+mzr/l67j99x180+Pqv/T2MNbE9M194VEnm2Zcz+ WF9zdm7anTsi
HsYssemX1A3+mq4hg5SZDqSU1Wrk4qC1toZ4+qU/wmePi259cYmrDplDYwKD 9IESJokAAIAZ
9DuQKoz0GPJi2e1/eggq8VtTemW6bbu4UH67YvGtQ8ye/DKChTn/m9urcl8h 1JfXOXWtAQAA
WBrQHKz8bkNVzbmGSt181BOHIOoDlcdMIwkV2rlZOY3EMyAXIY3H5HrFVwSn SshfAdAQNzCU
vCWAahr6r4hVZVJdKCyrF+WjgpbKh6Omr1eKsA37xMwfqgOiTwUisSQjcfuv R/M+JN9NH2dh
a+fercmtQx9eHbuS59tb4+HZVwSAnrtrSy2QpCbvuCkB4LQN+XlBdz3xg2PT Zid/yLy847rX
rx0/98wqnxTgGPWeN9lQVpPLeeAqVJOroVPb2xU9PT0TEhIU8llVZrgAYHrU foyiDkgxbVM3
/4COHDaXokigSJIkKYoEIICSSqXF0mJpWvJJ+YZ45vHfz3IG74we3VmAgW3Y +ojTnhu23p26
0gUAQLfP/FCfpjwAVt6ZLcmCsQfnBrbRArCctfj6kd67FXQg3p1cdUhz0pGF w+x5AGARsjQ4
0X/7hQ8DvP9bdaCk79a46X76GACYWzsBAJ5eiR90/OdMcTdkAzTzjwh3dovZ /iBo5JscjpWn
TztrMzaYmVrYAwAQWfQSB48wLduYR+TRNAQpvZTgmPZO46c6yVqaf/dL1Omj s448W+Da5tOx
iiYQWf/QSu/bmk4iM0x+GzzClFaZdqpEZdkIsgvPrq7KVwjENyK7Myi7A6j8 F/VvvAtBIBDK
ozA3lTkZgagdVApO5bGxsUGRjKheZBEl/aTyEi2mVBcKUUQVUMVPD+7d8G/q e0LuoChXRABo
mfUMMD701/vUE/ezuhifvY8DCDz9m2kClfPq9UcAgKbdOupxAOPYtumol3wi j3j9MEf6OcmF
YRVXviAaEXVQk0shz6VMhgsAPh3e6tbTncVveS5xv76uri6XAxROUSRFSUlK QuBFuCRXVJhX
UkTyoKl8Q0nm7TeYzSQHXVmkc01dXZvk3U3NJ1wAgNOsraWm7LSMO+mYzfQW WrJWms09Wmr8
o6CD+PWV58Uvr/s1XyN30Do9p/DN9ZdUqwnOekpPJo55e+tSSWz9Vk4Gn+6l SW2GjXLYHubm
ttO/u49vwKBAL2sdjEkiDqZluwM1WtI0ZJIiItsWXo6dvXDLqYcfSp9DqRWQ j4OYzgQm6exA
Jon0MFvRJP9/NMqoEpVfRlAZXyEQ1cLrnNJbQCbQdw8Eok54nVN1KgHNTUSd oExwKkNZHgFF
MqKG4BraWBp8zZ44hVQXClFElRQ/OL58T6oIOLYBPXq35hffOrX5bB5QQAEA sJt29bD7+9CT
V9dOnDe5KwYwdu5uzQUo2y7FkMfCAAAoWZ1uQlqM14IdiHpH3RSeL8tzBQUF xcfHV5nhAgBW
l163i7mtMI12nXqXFOXwNHQBSIoiKIoECiehhMA/Coql4iLu+4c3K7SmmQIY AADG5rBUSPNS
JMV2WXP98FCTcmuDiq4o30UphLQsX00ROAEAoNU69ODtXknHT507f3r5dytX j9p5OsaVQWI5
6Bp21aGXQn08ETZhzceg+DO73ZsbapWkhHQaX8i4s5JZOo1EfWYNGfohPx6d oYwyWPnxoyjy
y0lyI6iMrxCIaoKpujMCgUAgELXPlH5rVTo/LjG0hjRBNAyqXMmFysMhVIYk pBJcUvpFDeNw
MVH6OxEA8FqOHufZXqvk9s0j8qezjVsHuhxddvPjoa0fAcDM18WSBwCYjpWl Ebz5CJlnrud5
ddcTP793Iw8A2JatDbjYR10NADHkphdIgV/84E4qKdchmwVAUhIJTtGmBxAN hzp7uqIsz9Wv
Xz+mSvMKnP93cWsryxFO32e9v7l7a5y7ty+HzcVAQrKkBFUolmaLitJyP2kV 5xpZWXWQb8gT
ulhQ/114LBrkqQsA0uxr1z7otbMVsEBU7rRmzkLyYnJacYCLFgCUvEx+Jqaa lNdBw8K1ORw5
nPJxcH9jVrnjHa2x46fu5g2S7fWrGvxV8oPcqbbGLABp1vXrOQadmvNZACw9 O58Rdj4jgqcF
DHedtev+As8W9BIV4Sg27NqZXgrvbeJDifP8IF9bQwwA//jwUS5uyWQCk730 Ej0ZtzYz9SPN
uEarDACLzQIgP1+TWFoG2lCYU0yCgAWA56ZlFJIVfw2tTFsEosaoWN0ZlPj1 MqegxEBXtgYR
KIrppygEAlHNoLmJaBjQRnLqp8fiQhaGa/E4mhwOlyrCtblsDTYhlhTjUIKT YilRTICYL+AK
zTrXusqIRoHyy7jQxbYxkpY4eVji5zfGYzdO62ttrg+ZuZLH8RuOd9Z8feJc cbnzMR2XwNY6
N+8WAgA08etqzAUAAF5zj1Htr627KbmzbsX4fwTi7LwSAGjmPqqjDqbB6mjH PX1N+m7/lp/v
6+U9zS780h2niY0A7uTCoz1TfzxnZOG6Zp5HLRiNqBPqLMkFAJ6enhkZGdra 2sqcbOHU6vKt
5O+nPN68Zfur9Ofpb+42MbLG2CRJlkiInGLxpwKRSUEBl8tTrDLOadrrx26L g2fO67w+tIvO
s92Ryx7bTF7nrCiU06xXkMfi8LDFrusmtWfd2zZ7VyawADAA8YO1QXOeBsau HWJu1mfm0BWj
wibFUPNHdDCmPjxLPn6eHDxvnG3vGQOWjQkJXrc6coCjoCD16i3Cc4R3ZeZI U6Lnbjeb42/4
Yk/kyifNJ653wh5sjj5v3M2vQwsD4s3pE09x0wkmPDaTxFZUmVZNnmxeWaEh kxRdo+eWrH3H
k7N69zWTPtv765qHgFkCANuMzgQfeunDpdvpJMo5qnxYMVkx2qQ1rTLAEVg0 5WQkJT8doNtU
U0ugb+Hprhf357+P+/3kAGkHl2x4QGFOFVzK7Cu0W7EhQOAMq43xV3/5O/41 8NaxaS1r93JG
I63s3u7F+yrWRgu0OIwW1RPkHVtnTq4zyNz/rf9h5IZLmYRm4Nb/eq/uttzv zJ0Qm7eNwg+i
0z86j9b++/kqD36542oTBpVpV+W8Q3MTUZNU2yjRRmmhiOJQGsXvNYql3DYm AlMLAQtK3ucX
iMQ4DmSRuFgikZIYKWbhTD3UKo07ksmci2t/GBOXlEloBm5/uM+LX3WT2kWF caBdtIUutmpL
rdqnae8/e2z+6t2P05Mulzi7jx4m/mNPttzfMZ3WHj6Gd49+ArDq6FX2MDG2 vl/kFO7OY3vO
pL7JzgOeXisP93E/dLHXwgC0XX8c0jvv0LGnRZkfTHtO7pO57ehtSalpVoF9 +94/cPRpYd7b
d3kStJ+2IVPH81TJDBcAXDq5VyTKsPcc/zrrnrdTl6fauo/TH1NQTLKLROKi /HxezgeqRCTS
M6zQIdu0//rdH2ZHRA/wygUNC88J8XE/O2qWlmb/AqfZ4NiENyEzQ3tulei1 GRkR3uXpOh4H
AyAK0m5cv9exhAJg6fssObzFZF5MZL/YfAAtM2efEeH6LGAZ+C49ELtkVsxP vZaVAM+k3fBF
XpX+IMG1mxJidewn73nZhGG7sbF/TXfUgFRe9omlE5a8LqBAo1mnYaviJ7fk AsYgESRlWrE0
6Bri9FLYELgiJnlyhLt9uMDA3GPMtN4pq0gAoDeBwV5WPp1EKPriKAUY+mGb MCgDAo+ZP3ea
OM+/QwToD91/bY1r5LpJP07vbbdc09ihz5Qp3mfW0TiVaXQQDQKCIOj/QGlZ 9/iuu50OqXAG
/iLBv93e4bcOTW6h8mVOqbaVfpFm0laNIEiSAookCILAmJzcYMHT906PTev/ +5X5Lvpa2uR1
74F9W/IpQt4nNSj8G0K3WiBICiiZmeWOV1cYoLn5jTTquVnD1GlwqgTtgEtY GpI33IBeLUYN
dKGyBIQR/+qzlIK7r6hiiigp4ubivHyySFLIYrGYeqhVGnUk4+l7Zmz8/CnD 11LR7Nr4mKi6
48o3JDaEkWykIVoDMcUxGhQbPYj+b1oOQ8ZsGlL2NqDP6PJ/5+rZmAB8Atue TqZyqmGaxl2/
H9f1ezppxk4/rnD6sex9ny/LtdgGDpNWOEz6GhsQaobaJKNJsqSj60iXTlbD f5zk28bXt70n
FKdn5ecU4eISMVUkwkUiEReTSiQ0Vx6WwCUo9nRQbPmjXNvQiy/lCxKwjTzD dqSEAQCA9Mkq
X4mxvwkXgOO29mFG2Uk8i16ztveapSgC02wxIGrvgKhyB8efejFe9opj/uW1 TFaTrrP2jp4r
f7btuHWJ42gsp5copxVTQ1opoNFi2JrTw74UZw/9PNFpTaCXbkIrUVvOUVrt Y26lKWEFgzKY
jvOUv65MkevbO3Lfzciyt0FBAACgOIJMo4NoABAE0899ep3DNnQGgNLidmUN cJICisQJAlc5
H6FUW42v0hZSX717eCDKUKD4o+2nfFHrgQtsrUxU1FUGKZUCl1utKV0CJwGA IggCx5ic3GAp
fvc0i93ct51Qjw8A4DFtpQcAELi8T2qMbwnd6lGAoKBUAbmjpFSqWz1hgObm N9Ko5+ZXo9xA
1GlwqiaNLpJ1hfppr3KHdbPvEdS+OAuCInfkFIh09bQ5OhpSCZerA5gGhWeV YATF1AMzKJKr
l+J3qdnsFp8/ZVS1+msCVdUR/NZYRRdbtaXaLlPfjDR1z4GdN1/deAyg6TDE S19xuxYCwYza
rHNp296Tb6Ift2kjn6+Tlv1q85FdKU8fvMkSvf8gKRBJKEyso0tq6oKmJmMV 9aqg8m//s+vs
g/T3H9LvHYmZsSHdeVSPZmqTBEQgGjaE6EqUi9G4EzmEjLzTwfbWs1MKCPHL v/2Nem94Iibk
yT03vv2Sx+Jnvzo7mfPtnSZdLSCIwmdHF/bp3opvb87v5Ddq0+X3EoIg8IIn O38a6qJvb863
t7Lo/cPG1GK6thWoQlsGnr7IenggakLkynGz1yj8mxC58uGBqKcvsiq2kuZc TQh2d7Pg25s3
6f7d3FOviwmCIEoexXkb9vlt3W+D7dqZ6/Vf97Dw3bn1ox3bmvPt23jNS/gj yM4i/H/5in3R
OoEg8MJnR6P697Tj25vz27Tv+kviGwlBUp9/wCzn5JJHcd6GvaNWLRjo4GZn 6NyuW9ShFyX0
nqxM4hdoGzJJIQqfbPlhhEdTe3O+vVXzwSF/3M/DCUYTlB90eX3eHx1oPHx7 ljhpuKs53770
X9sNj4sJeZ+o0Ln41WYPp06Rdws/S/h4dKpD0+CTH3Alw49WUMmjOG/D/qt2 xY1v09ac36bz
4E3XP+bejv25W1N7c77HoF/+V8HT4ldbxtuZjv/7hZggCKLoaayXs9PIY28l BEFIP1yMG+sk
C575/z4voYAiSMUYW3VyW2kYlKRt7OTYed6Dos8W5ZwIaW02+dh7vOoRR3MT zc2vnZvMvSk5
ECX1OzhVgrZzc67OON82RanaRCHMXbWHYJc0E+jq8DS1uDxtnjZfR8A30tEx 0NBgsxR6QJFc
h58ybSecymO0glaZCsH2juEGSeUpUJ2xytAxutjW9xD99qGvPoj3t+9cf5hL CSwDIwLd9FDZ
NoQKqE0Sx5BqCbnQte3YmhNBFT7cETZ75jsxgE7zbpO3LB9txa05aQgEQgUI giTlt1CRJAWl
dx4kUECSRLkdZNpdNl2J6Oe2f8jlPT805wAA+eHS7N7z7vees22pq6n46YE5 c8ZNMPxvbx9J
wqw5J1ssOrrE24KT//z+3QIOWaGt6ovuaRs8f/3+2ZHFY8OX6eroSCX4ihXs +C2cjAwQCmHS
RDwsTGds+LI/l0cQfefYWBrL9ZV1PLR/zOOA+bvjO+s8PTh/YsgY7p7EOfZs kgLJ8627vDaf
TNphQhRmHAse9nv26CWHpziz7uycE5JUyOqrsOOMzEmeR+OE/iZ5SXP8w844 TVl5trejoOj5
lXsUgcs7ttxrkgJJ2tY93f4+e66z7vuTYWNChug1PzdZe3sFTxKElEGi2Zdf 44jXFYeAIIBe
yhR7Sgx2A3+d/JuNEZFxYfvsmVMWtz78W2dt8hONCdIPtNLpBl3eT3o9/sn4 e77LDy/WnPu7
Fx+AyPprtM9a2V3uFz8wOJOuc8ykZ1CbmOh99yLt22sDkDmXNiWze67uKJC+ /KPq8GMI3f5G
JAWSp5uXtQxb9fdM3p01Yxd9P/yCeVPfOYmT+Pe3Bk+NXB1wdGEHTbkIxJp+ F/XLwUELf9rr
ti+wJDZixSvfdbt9jYCQZBydPnT9i8GLDu1vj91ICA9NKuT1JQmCKB9jotcH z8jMZ5l1H2m7
9I/EJxEtHTUBqPyr25MJr8UdBSSDz+VGHM1NNDe/em4C0PYmyTitzEAU5Vye 51Ofg1MlaHu/
ceOSJdvZecyEsPlnLl6/59bamRTjOEaRQLFYLA6Ho6mpJdHnSbDyPaBIrutP GZB+uERvBU6r
jGKwFd84Sn+DpOoUqE7QxVadQ7SeoOm+OPpwXSuBUFPUI8l1JKkWnnOM6XWJ OnIrquoTv5EK
2yTVWAoCUVsQOE5RAAReWqYUJyigKAKX3cRRJE7g5RftEwRJAZCE7DiZfWTj Ec3Re6P6tuIB
gOnk5ROOdPvn/Fs/+1e5HGtXD2dhEzY0aWLaAgBK+yxr+3XaVjz4v9jvf16z V1dHhyCIZcu5
UVHc4GDpwgWSBQt58+ZzSYoKm6Ez6uclq6cPtY4+8KWrjMMJ5zl9ti4Z6CLA oPnkZZHn/dft
vDN1gTNOUsDvuSDIw4RNAnw6seOy3tDd83rYawEIpyy8cmrQTqrMXQDA7ISe XU5vPCjusfH3
IB8DDABMLVsCAJH+xbHyTsZxkgLt7vPGdtADHIx9In5y6rj+rzsjhtJ4UvqW XmLAELOyVcTi
T3RDIKWXMi6qQ8vvpraUtTQdMWPusf/mH0id1cEh51BFE8i3u1QY9HIjhhMk UBRB4DgBQMq2
75UPNkqViAJDv+GukUt3Xgtx7qJDZl/8639aPfY4aeHi51WHH9OoBQTiJAV8 7+jIkV34AJbB
YxJO/MFftH2khwEGLSdO2HBi36XMkrZW5T/kTfqvijzmvWjarLtFO7N6xsf6 GgCOSzIO/3lJ
a8CfC3s78AHMQ6OS/htxUBY88jHG1mBRn83nmPUMbBX158GHP9o5a1A5N3ad p9w3ttUhlBlx
NDfR3PzquUm+pemNSN+qzEBgeSd+r9/BqRK0kTw9aj9GUQekmLapm39ARw6b S1EkUCRJkhRF
AhBASaXSYmmxNC35ZFkPKJLr/lOG6To/xIxWGUdu+WBjukHCVZ8C1Qe62Kp5 iCIQ6o16JLkQ
CEQjh5BbuiV7T8nqJMi+V1AKK7kACIL8fD4GUPzq8sviF3f6mm+WO8Ui/SMV MGRQq61Rvh0O
dOvh5h0Q0NvbQhtTaPs12tL9HKalb3x8S/TQkGgA2LJFCwCmTS3m8aiQaURc HHfzZk5oSPHv
C6do6RvLNy/OuJkBtiNttUmCAACsSce2hnmPUnOkjiQFHFNHIYcgCIDi9FuZ LJsfLHmythyh
m7XGToXa4UxOKHhz9TXVamhrXVJebXnHlntNUsAxa2NRKgkE1vYGuQ9TJVY0 nmSSKCaMyx56
ymlOOwT0UgqkbQqubohZGn/x8YfSmzHNgDwJUURngmqDXn4A5aONlIUDScoH W4lqnRt0GtUV
j0y4levWWXRizy0D/7A2GgQB9LYrFbpigkMBx8y5dMgxbVMdblMHSy2SIAAw LWNdrOhDoaRi
BJv1XLjoaEDoYc1Bq2Z316MIgoDijJuZWMvxNqWlj3nNfWx4Bz+vAvgSY+VC Asw8Bzms3rIv
dZqjXcnlf1Owzis7apNEkRIjjuYmmptfPTeLaXtTciDqfXCqBG0kfzq81a2n O4vf8lzifn1d
XV0uByicokiKkpKUhMCLcEmuqDCvpIjkQdOyHlAk1/mnDLMVhqIUGmUIVvlg Y7xBUn0KVB/o
YqvmIYpAqDcoyYVAINQAgiQoTHZ3IfuhEicoIEmcIPCyItkKSS5K9jsngWMA BEFQLJdfzhzs
Y6z4g+W4v256pZy4dOnCpXUjNsWOXPfvks78cm2/RluGn8McXNz2rps7aErU 27cYADQxkhI4
GBkCAGRmYivCx7v5+KecPyXfnCAoAJmlWNl7mb0khbFYFEngRNlhAi+9tyEJ qrSVfFf0Tii+
QX5uK2euvGPLvyYpIKUSvNQ5UqmUACAIrl1FTzozuV2+bitdw87a9FKkH44u Dl6dO2bTjk3u
lgZaJTdCA4MLCdmWggomqDboevLn4CRJARAEgRMApOz7A1Eu2FTtXMdlnCdr 4t4rWc0yEh6b
DIm05RAETm87X7nQlaaSFIYBKRtikiQBY7FA5gGKJCmKIoiyePgCmf/scmoJ gPTl65wSQo9X
OtQsNpsqCx6MjZUGj3yMQfm51sR7uO3S2KNPZ5hk7biOeS921iErcYv8iKO5 iebm185Nht6U
HIj6HpwqQRvJrC69bhdzW2Ea7Tr1LinK4WnoApAURVAUCRROQgmBfxQUS8VF 3PcPb5b1gCK5
zj9lmPoh3x+NolemfLAx3yCpPAWqD3SxVfMQRSDUGxTNCARCDSBIDYEmFH0q kBIEQRCSnNSs
IlK22ISkQFYloTwUYEASstMJjll7C3h8+tp7aYXzCOBbuQ0ZHb5+45717T8d PvRApNCWliq0
ZWhi08HPwcVtf9wCgU4uACQsW7U/bsH25asAgK/13s3H39TOVaE529S5KTxP eVxaOVX89uqd
T3o2VjoUQZLwuQgHQbBNHE2J59fTRLK3RS+TX4gpqrwCTE7gmLU3x55evPsJ L3dY3rHlXwOe
ceV+rqwXccad2zl6rSw1KBpPVub2cq6pOAT0UtiZV59J2wwf6W2hx6NI8cdH j/JximQwQcVB
L0/Zz+IEUbpHoXywqdy5VtuB/jrX//xrz+6nwoEDzNmVnKxk6JYLAIIoVxOf IEHegDKkH8+v
mbOXPyF+btfnsZFbnhcTBEGwTZ1Mqdf30kurzpa8vf2mNHgURJSba2Ds28/u /ZmDl5P3JrM9
hrXWrsrn8s5Fc7O8AmhuViqxCocoORD1PzhVgq0hyDcAACAASURBVLbz8/8u Tr+yrT07W+t9
ysH1oW+u/vX2xp7sm7uy7vydcWfLy+urHiUvuHlm5fXjm+V7QJEsL6VOPmWY +hFn0CujGGyV
3CCpPAU+q18DIUqgi21lHq8vIfrtQ49A1AdQkguBQKgBBLtZ+w6C1D37n4lw XPTsxJq4Z5+/
05MAn+9iih5vGjdp1r4MCUGAtqkpJzslOfXtu0+fCnAj/+/76V5e8OPGY9df pr96cffMv2sW
7HtWXPQwfsOWgzeevMrOSrt35sQL3NTakK3QlvbZQ1VoSwdfIMgvKLDp4Pfq TcaAwSUAcCMj
xL7bhBsZIQDQ3uGUqZ1rQVERXyAoJ6iJ34gukuML5x+8kfrm0cnNc1c+t/pu kJ0GUfrL5ufT
jLsPdc3fv2DJqQevMh4d2xT9zzvAKJKU9wnF4ATKyH9cAO/svJBtZ+++znjx OGnv/osZ4nKO
LfeaApDeWLJid8qrjCfJm2fFp1r3G2RP0nmSSaK8VvRDwCBFy8CuKZZ6PiVT TOCFqXvX/fEI
MIogCFoTpCoNunzwyO1K+Gz9572xn/3AZBqTOQTBsxkQqHdt1T8vW/brYcGS xasS4ccUugoB
UHr7Lf+udIelnF3SD8krwk7qTflloq//7Ogub5ZH/f2kmCDAuMewjh//XbMn rRDHi54dW7st
HUqzeuVElA8DgmrSeYBjzsFf1idz3Qa01SIqcwuam2huVsvcpO0NV24g6n9w qgRt5xZOrS6n
3vx+SkRPv4Bu/j0/vn9MSAsIspjARRLJp+KSTwUik4ICQ4zHlu8BRXKdf8ow WYExKKMYbMw3
SMpNgRqJVdpu0cW2/ofotw89AlEfQNsVEQiEGkDgvNY/LRs6J3Ki12oNo1Zd x0zseGkjhRME
Ll9+VVLw4tb9Ry7FEpzgaredGNxmVtT3veaCYOC6xJgO4bsXGf62efGQHQUA mqat3AZ/r01R
Ivb7sysi16cXUsAz7dBr/vqhFhiBK7Z11lLU5/nz55VqS3ODaOY15cAfiwZO ngcAkydnkiQc
O2a0Z4+JsbFkypR0Q8n+gqLpVw/Gm/X6pXy5VqOuC7dNXfrL7993zwcNM9fR v639qQUbJ6Sy
9UXE55ONu/+6MXPB3OiRf0p1Hfv8GNL++e9cIAickPMJn9YJBMl3nbVzPv+X zZH948XAbeIc
MLNzgLxj5Qsq4wRJcZuP+bHpfyGjlr4j9Z0Df9s02oZNvaTzJMkgEf8yUvps 2iFgkAK9ZkZe
XrjIp9ciXYFZ5/7j/W9vJkkCpzeBQTrDoMsHD06SFFAEWVp4XuZpvHywqdQ5 DgBsy8DeVn9s
1f3Oy4SSHaHobVcqdGXKlAUAictuv2XbGqjPtfJxglVml+TjlV+XHDccnfBD Cw5O6XULndtj
3Nyfd7vtHmVj1C1qY8bCORN9lnD1hC4DJrhc3UZ9tvdLjFWoq23gNsyueM59 fmCAg+bnOKx6
xGt6blZ1JaHZQYPmpvrMTdreTJUbiPoenN8eyZdO7hWJMuw9x7/Ouuft1OWp tu7j9McUFJPs
IpG4KD+fl/OBKhGJ9Ay1y/eAIrmOP2WYgpMyZFCmQrA5Md8gKTEFaqTeOLrY qmmI1kQwIBC1
D5bz/q3s1cVTh7JE/QBg0qRmdaoSAoFAKHI25VFdq1CObm4OlfyVSdtXb3Pf J20UFRQETp6r
8KdDf0TzdXWN/edZ6VXDL6h4Wuz34/4bsHvfIGF1PxpcmrZj9MALQ45tHFrt Xde6lFqm+Oaq
oUEZU0+u6GWM6rvWHGhuorlZb6k8OFWiYiSvmnnq3K1trR17dvNquWzVZt82 vr7tPW89uvU2
/00RXlwixotEUpFIxMWkekY6di38Zqzw/xYFUCQ3bL49VtHFVj2kVKAaL1MI RC2waVMmAJjx
E739A+WPo5VcCARCDWCqYFo/YdLW3IRPuk/M2vL97WMJCn8SvblvNe2QOV/8 tbsEqMJHhy7l
2rvYmcCH64eXx2fbzejUhKp+v315glhNjkjtSKk1KLwo/8Pr46vPiD3ndNIn G4ZR6gmam+oh
BVEVtP5v295TQ08/btNGPl8vLftV6pE3OEGwgEUCARjOwiQ6uiQLA01NiqmH SkGRjFABdLFV
DykIRANFzZJcSUlJnp6eX9f2Q35JE4Gm7DVFAYZ+SUcg1IdqqRBRa1SirdBE Vzh7L83xrkEA
km+wksJFj4/GLFr1UQKgLew8en7EIBOsBtxGkGUlMKq761qXUmsUpSwdNOUy YeE761cXPtkw
bFJT0NxUDymIqqD1vyHVEnKha9uxX91DpaBIRqgAutiqhxQEooGiZtsVDQwM EhMTvzrPpQbg
6Qm9vRICz5wObsGVf13XeqkNyGkNlKPnbtS1CuXo49uhkr/WN20RiMYDmpuI ekvlwclExRKQ
NjY2KJIRNcrXxao8KETVlG8fegSiNmk42xXHjx+fkJDQkPNcZbC0bXsM7uXA R4/AVAHkNEQ9
oI9vB3R7h0DUQ9DcRNQfKn+ASRk2NjYVD6JIRtRzUIgiEIg6RP2SXAkJCarm uR6kZp3cPFuP
r6NwPE9U2HPiEkdbs6/VhZRKgcutsXQKy9AzfEUjSOZVK8hpiJpHmZ+50O0d AlH7oLmJqLfY
W+orZLVos1fKgyIZUUNU11oeFKIIBKKuUL/1Lp6enrI8V1JSkjLnyzJcYyNW jJu9RuHf2IgV
JzfPfpCaRduQzL8dP9XfyVwoFNq4f7foRIYUAECautbb2nfRpvmDXW2Fln7r n5V8/N+qMe4t
hEKhU++IP7ePtnMMuVyo2FfJy8SFwz1aCoVCYetuk+Ku5Mh2V1MlLxN/Help JxQKhdYufWYd
zSpXWhBPT/Bv7hObJv0s1ydqY+TAzk6trJu36z838Y0UAKiiJ7vC+rhYCYVC oZWjT9C255LK
JH6BtiGTFBA/2RrS38NeKBQKLdsGhG6/L6KgEhNopTOpWqXPGRoStJ6XdxoC gUAgEAhEPcCm
AnWtEQKBQCAQDRP1W8kFcnmuKtdzyTJco8KW6uroSCX4ihXs+C2cjAwQCmHS RDwsTGdU2NId
K2dBxfVcRPbhacMXPPKP+TfOi5+6OzL4h5G8UycjHNkAIH0av88v4fDDvca4 KPPw5HFrs0es
OzGpPeve1oiwcyLWYAUlyNwLcwfPuNsz+u9F7maSR/sWhIyZYnzh76Gm+eci B/x4uvXMtccH
OglEqdduURRVmd3SZ1v399p9/I67bvbxWf1/Gmtge2K69q6QyLMtY/bH+pqz c9Pu3BHxMGaJ
Tb88ghZ/TdeQQcpMB1LKajVycdBaW0M8/dIf4bPHRbe+uMRVh8yhMYFB+kAJ k8QqfG6XTdeQ
eLt/alWeRzQg1LFGgDrqjKhllNyvpCToa7OSoLmJUOBbdg7WIcpHcpmBtCZU /tdq5Pnz5zY2
NrL/a1RQY0M+gOuVb9HFtqZBswmBoEUtk1wA4OnpGRQU1K9fv8zMTC0tLabT /po3NGTVHl0d
HYIgli3nRkVxg4OlCxdIFizkzZvPJSkqbIbOiNDF62YMjdl9Sb4hnnn897Oc wTujR3cWYGAb
tj7itOeGrXenrnQBANDtMz/UpykPgJV3ZkuyYOzBuYFttAAsZy2+fqT3bgUd iHcnVx3SnHRk
4TB7HgBYhCwNTvTffuHDAO//Vh0o6bs1brqfPgYA5tZOAICnV2K1jv+cKe6G bIBm/hHhzm4x
2x8EjXyTw7Hy9GlnbcYGM1MLewAAIote4uARpmUr94g8moYgpZcSHNPeafxU J1lL8+9+iTp9
dNaRZwtc23w6VtEEIusfWul9W9NJVMLnizVpGuJvTsRX5XkEAoGo51TvvSlK mSEQCqhp9upb
oDVZ3sAqT6hRlb76O7msk69o2xiyAJWPb4M3H4FAIBRQ1yRXUlJSfHx8YmJi JRkuAOAJmhzf
Ej00JBoAtmzRAoBpU4t5PCpkGhEXx928mRMaUvz7wik8QROFhpLM228wm0kO urLFRlxTV9cm
eXdT8wkXAOA0a2upKTst4046ZjO9RakOms09Wmr8o9CV+PWV58Uvr/s1XyN3 0Do9p/DN9ZdU
qwnOegrrmZjhmLe3LpXE1m/lZPDpXprUZtgoh+1hbm47/bv7+AYMCvSy1sGY JOJgyvv8VqMl
TUMmKSKybeHl2NkLt5x6+KF0Q6VWQD4OYjoTmKSzA5kklsLkc85AmobKeB6B QCAaFShlhmg8
NMLsVUWUSVfJzqn9lT7Vm2r56gxXI6Sil1DaC1GfIQgCx3GSJMuOsFgsLpfL YtVFVSU8PaG3
V0LgmdPBLbh1IB5RbahlkispKUn52vMOLm57180dNCXq7VsMAJoYSQkcjAwB ADIzsRXh4918
/FPOn6JrSpN9wgAAMDaHpXRmCoAiKbbLmuuHh5qUm6tFV5TvohRCWlZZiyJw AgBAq3Xowdu9
ko6fOnf+9PLvVq4etfN0jCuDxHLQNeyqQy+F+ngibMKaj0HxZ3a7NzfUKkkJ 6TS+kHFnJbN0
Gon6CufQ+ZzWxkrchEAgEIhvBqXMEHUCyl4xoWRKq3rL26tKTeRTGsNSrBoF pb0aKg1gakil
0tzc3GfPnr19+7aoqAgAtLW1mzZt2qpVK4FAwOPxmJtSxS+Or1+yYc/ZO2+L AXSt3AJGTw37
wcdcQ4Uv6QCAv9rc02fX8PMnJ1lxAYClbdtjcC8Hfr0oW07lJA5qE6r/951t Prq1JlTBIWqL
+iW5VMpwAYBNBz8A2B+3QKDzW06+QcKyVfqCvNx8PYBovtZ7Nx9/UztXqJDk 4gldLKj/LjwW
DfLUBQBp9rVrH/Ta2QpYICp3WjNnIXkxOa04wEULAEpeJj8TUwqrwjQsXJvD kcMpHwf3N2aV
O97RGjt+6m7eINlev6rBXyU/yJ1qa8wCkGZdv55j0Kk5nwXA0rPzGWHnMyJ4 WsBw11m77i/w
bEEvURGOYsOuneml8N4mPpQ4zw/ytTXEAPCPDx/l4pZMJjDZSy/R88sjL5l9 TtOwi2XVnkcg
EAhEPQGlzBAoe6U8Su4orPOUlrwmCkeqRRO0gKuGUCbtRXsaAlGNSCSSrKys lJQUe3v7nj17
6ujoAEBhYWFaWtrZs2e7dOkiFAqZ2hY/ihvRe/FjpzER639xtdIRv71//p/4 X1a3P7nSTftb
dGIZeoavUCrFgKjfqF+SS6UMl76Bfn5BgU0HvxOH/x0wuGTbNriRERI8ID02 1hwA2jucMrVz
LSgq0jfQV2jIadrrx26Lg2fO67w+tIvOs92Ryx7bTF7nrDhrOM16BXksDg9b 7LpuUnvWvW2z
d2UCCwADED9YGzTnaWDs2iHmZn1mDl0xKmxSDDV/RAdj6sOz5OPnycHzxtn2 njFg2ZiQ4HWr
Iwc4CgpSr94iPEd4V2aONCV67nazOf6GL/ZErnzSfOJ6J+zB5ujzxt38OrQw IN6cPvEUN51g
wmMzSWxFlWnV5MnmlRUaMknRNXpuydp3PDmrd18z6bO9v655CJglALDN6Ezw oZc+XLqdTqKc
oxh8XvKARlVmzyMQCASigYNSZvUKlL36FpRPLtTD1Tc1qlIDWKWiRqhLyCGq nbpKlJMkWVxc
fO3aNT8/PyMjo7LjfD7f2dlZKBSeP3++T58+mpqaNI2lr3aGxdxoGfnf3mn2 sr+3buPqN2TS
e4kmAJl/e+uciDUHH+RQmpbeExasmNVLyAVp6lq/7of6LPK///v2iy9EOm2+ W7wpeoDBpQne
Cx/jEOVhHQWgP3T/5ZmPhnzerkjfxJJbfGuOx6DUpXf2+AsAAEQXfug4Te/P lFWdtOlFM53v
Ck92z5+xbN/tdzhw9Fv2mLklboJNJWvXShE/2RoeHn/qxqsCYDdxHjhjefRY Jz7xKr6P9x8e
iZcWOGsCAFC5/010m0qtT4nvoU+poNV/fdeXc0jGgzWVa1NvUb8kl/IZLgDo OXFJ4ubZ/X6Y
DQCTJ2eSJBw7ZrRnj4mxsWTKlHRDyf6Couk3j2zrGbpJsSXbtP/63R9mR0QP 8MoFDQvPCfFx
PztqlpZm/wKn2eDYhDchM0N7bpXotRkZEd7l6ToeBwMgCtJuXL/XsYQCYOn7 LDm8xWReTGS/
2HwALTNnnxHh+ixgGfguPRC7ZFbMT72WlQDPpN3wRV6VJmm4dlNCrI795D0v mzBsNzb2r+mO
GpDKyz6xdMKS1wUUaDTrNGxV/OSWXMAYJIKkTCuWBl1DnF4KGwJXxCRPjnC3 DxcYmHuMmdY7
ZRUJAPQmMNjLyqeTCEVfHMWh97mEVlWMyfMIBAKBQKgASpkxgbJX1YtKi2Xq bX6hFhRDC7jq
CWifo1pTzy/gOI4/fvy4devW8hmuMoyMjBwcHO7fv9+xY0eatlln/7nD8to0 yq5cBoyrZ8wF
IvvgtOELHvnH/BvnxU/dHRn8w0jeqZMRjmwAkD7ZurdvwoG7f+qm75ncOzyy S5e/A7ddXPh/
9s4zLoqrC+PP7lKkF0WQVSwgVbGFoIiKokjEbuwau0aNYlQUo0ZN7L3HLsYY fS2xxoJGo6LB
qBEL2ACVoqhIr7tT3g8LuCwzyy594f5/82F25p77nHvu7MCcvfeO/Ow8Ku5p ISkuE0OeJtHv
z3BK80Ug5vD0wKtNV/6xrXN9UUr0w4cZOio9yDJSof2w5eM32ZlTcTd3Bswb tcz5xgq3+n6j
Wy1ffTg8wLWNPsAkhQTdEHXd424qoN+fVsMrwy4KAdFYBMkf38n2bgSfTsjo BWDiROtKdUkZ
ISEhqme4ZIRHJlzaPS8lOaXPpPkKp07vXGZqZtrdf5eLddl0ovT5+s4+50ff uDi+YVlnD6WR
m7y7nht988LYBuWYmKwYlXKgHCNPIBAIBEIlUYYps2Lfr6fchKAW6k7+qvq5 gwrzsGwzXGQ4
WHlD5jlWPNXjBp6dnX3+/HlfX1/ZLMWiZGRkBAcH9+/fn8P2boB735tDL9+Y 56w48ImKDerp
scb+9382dTAWANLXO309t7b84866Vm83eXfa1/bUP6vd9AFk3JzkNlln750t XybuLpzk+rzw
vDSS26TVC86RWavrHeWWbv6cs/yKWqs79AubGXJiSD0Rd4xUWJMr7epY97kN Dt9c0lLn45kR
HgssD9ze4GHIfDg+qN3Sxr/fWuOuyxcQHq/Wt/6oWWty7dr1FoCV4dmOPn3k j2tYRkDdDBcA
FzsrTFhx4HuvsPNBCqdy3j3tvvhx6TJcbFrY0T+TmnVobomE0P2BW+NcF3az 1rCoaiYk8gQC
gUCo5qj7lKLk4acE+TIlJlX88amCqX4prQIq2FWSk9I4VFkqjrMYQQHVb9EF wdT070tWVpa+
Pu8KWgYGBpmZmerWKXkbFiuwnehkJBsUpW3p5lYn9VFkGt0KgLaFvWVeVkxk WLtWbkw2w1+T
DDVMeKWbc5fXbTpouNOBWW3b/u7T1avzV/37dGhkoMpQLjrx1rZ5i/cGRyRS sgN6X6VRQK06
Hcd2kvofvJfm0SE9+MB9sz4LWhgAWWp6VW2oEUkBFzur1WeflVPlbGbEoVnz Zn/IBQwad5m0
d80IzUh7aj4k8gQCgUCoIVS1n+6r06xMtSjBuBWNe+CvlLE5ZIpitYEs76VA Vbt7VwO0rZyt
cOzxqwzW2ZwrLcRxTHZIIJQ/xbJgi9XiMBEUFmBZ5nM1XNJ85fWc/U+F+YZc CL729+U1Q9dt
GP775ZWdTIt5ryPz6eLMMRs/jd/z15F2jc31ckKnfzk6kwUAgan7GB/RuF9D PzaK+fVxvYGr
nQsmc6rjVXWhRiS5yhOBSfsl5x4sKXcdbTv/G6/9q4dK2VBRkScQCAQCodzQ 0OefmrCQWcly
PZr7MF+J885IhqvaUy2X96qsu7e8bsG+xkUPgL6+flZWFt90xczMTL5TWlZd BrkuXLLl8Iuu
Ux10Cw5LUz9K9MWtGrBXrj/L6O9pBED6/u7dRJOWdsZCZPB4IRQJAabYIV3y Fnpm+shMzmZg
LASolOj4TMYM0OGTFqZwlgcALRMHryEOXkOmTvtqsNvcw08WdfLkbvLnRsbf jZC4Lhzf2c5c
AFCfIp6mUDZ554xaj+ppMHT3oaD3LxoN2W6nA5TEK/UDUiUhSS4CgUAgEAiE MkZDs1eVguam
zKrTg7qtrW3FPzCT9FaNRZW0F2cxTsrwQirBtEFCCRCJRA0aNHjz5o2zszNn gZiYGBsbG85T
0LYZtibgVM/lfQa9nTulj5uNfva7J3//b/cZw2WXVvt+22X51NkL3Lf4tzd4 eSRw9TPbSZtd
eSdFQsu4QT2t+JDbL/oa1aulZ8y3qLw8Og0825ls//XEs16TnRB9asXWcFbQ DNCqxyPNUz4n
fPe6vy26eLdpYkbHXr74grIcU5fj3Yp0SnT4I/P8BogMdB1shMcv3E7o0dNK +vLYTxsjICiI
kp7L8AHmPmt2w2Vxn0ayCU7qeqUQEHPTYpJuVRaS5CIQCAQCgUBQFZK9qrLI d43qby1UUpiv
vIo+qCVUwRTNbVX8+j4kw0WQp/TzHJVfUdX41q2JPotEIgcHh8uXL1taWhZ9 wWJiYmJERETP
nj15rAX6zaYfvdJk88qtm78N+iABjBq27fHNslmt9UU6vbccSZw3Z1nfDinQ beA5Zs/2711q
AVI+R4w9Zn//5YQFPm3mwHTgH//MVsF3A7fAzRO/ndHDYU0tCye/KVM6/rUZ AESW3NI85YW6
Ou8vrhqzIiadha71l4PW75nUtOjKOyz178IBX33+7Lb93rqVd76d084xwNis vsfIaT1C138e
daVrP3CI7bY1JqP86ucnedT0SiEg8eEbVQhIVUTD3q5IIBAIBAKhJlDxD8DV +BGo2sP3JFz6
sSElMFSrztJQVu8lqJRLumJyapq+MrdmUTE37RJ/iarTlaAQBA1tmkQiSUxM DAkJcXR0bNKk
iWxyYkZGxqtXr549e9axY0crK6vK9lHTyPp3Tvthrxbc/t+AusUs7lVdqCZv VyQQCAQCgVC9
KdtEgOoVauhzQg2Hr3PVfd6umImHVXNiZgUnlMkArupHmd+0Va9Tfpot59my 86iKorlt1NHR
sba29vPze/LkyaVLl7KysgAYGBiIxWI/Pz++BbkI3LDSjOSPL4+vOpnTeXsX ixqS4VICSXIR
CAQCgUCoEpTt1LACNPcZgKCcEs8NrAZraUHl9cJUXGyrYkaZkQxXNaMEl01F 3rfJUL6qj4GB
gbu7u7u7e2U7ouFk3vZ3G3aRatRv3UYvM653TtYwSJKLQCAQqiDk7xOh2lPo bdXKx+PI0DZX
fFYpeoSTmGQ1XSNoCMovAIV+lyYVv2KXIgINvhXb8uyrUr78qOB8A0lvlCVs Gdy0+Q4WRfX7
tlr3geqBfJPLtoE2ZmVZG6HiMOy0Nyq+sp2oQpAkF4FAIFQpNPiZikBQB9ml zqoyGKdaPqUQ
KhjZY6Gqj3CanN4iEMoF2ZeCJTdtAoFQ1dGwJFdISIinp2fJbBPTcuoY15Lt syz574VAIFRB
yI2JUNMQ2NrmjQ7ge3AiD0uEMiQmWYU8F/kfkUDgQyCwZclNm0AgVGk0bFWy Xr16hYSElMy2
IMOFqvzfCxUX5NPYa1u0VGGfoCLqBo0EmUAgEKoGtnJUti8EAoFA4CYqKqpg bTVy0yYQCFUQ
DRvJBWD06NFBQUElHs+lSQj17boN8HUy1LBMZOWibtBIkAlViGKy74lpxnWM 02T7LCsQCFjl
5QkEzaXgkanYEQHJ6TlmRmSYNqHsINcQgaACCm8zIDdtAoFQddC8JFdQUJC6 ea7wyIRLu+eZ
GCq+iDQ1I7P7hBUudlYl9YWRSqGtXW7pEaG5Z8DaGpDMK1PUDRoJMqHKQFHF FDDVT5MrUyUz
XBR+aYvtg/FfALTl9yvbLw1GSRjT8XVDGJ5CUMfykearv6x7VkvpfyJ0cV8M Yz2tYstUMtSb
gz4uB/s9OD+tqZb8fmX7pTGoG7Tiyyurprwvpl+A7cB/KMnXpzS2Gg1fw1cA x4E7Zf088zVg
CARpZsDL0OeCOChHIdtFbtoaTs1oJaG6o3njVzw9PWV5LhXnLcoyXN/MWTtq 3kaF7Zs5ay/t
nhcemcBpyKSF7fnOp1l9sVhs227o0ovxUgCQRm7q2Kjz0l0LB7jZiW28t7zM +XRr/ch2TcRi
cbMec349MMLBZfo/mYp15bw+u3iwR1OxWCx27jJx+51kGgDA5rw++9MwTwex WCxu1Mpv7p8J
hW758jPppJGbOjbyWvJLYD/3ZvaNGrfsPf9srBQAm/X88Cy/Vg3FYrG4oYvX +P1REmWKn+E0
5FNB7vN903t7OIrFYrFNi6/8DzzJyHvA5m4Cpzqfq8XGnMeQ5ow83/TD7Ac/ tGo8KDhvFAwy
ro9zdJ35bxaZrkioOtB0ddgYAAxoGjSLpn7o7Qy2sl3S7E1pGFmAYcpRnbv+ su7Z4r4X1QCG
YcEyNE3TNKvXqNvQrg4GTCW7pFGoG7TiyhdzyZXz1hToDbCltt0ItARyyt/h qrDxBY0pny5j
AaY86y/XrQx9LoiDwsaHbBpjGX3tK5eae9NW8V9WAqGKo5HJ2oI8V7HjuWQZ ruGzVhkZGEgl
1Nq1oj17teLjIRZj4gRq1iyD4bNWHVo3F0XHc9Hvz0wbvOipz8oT2zsYRh4J nDpumE7wpTku
IgDSF3uOewediThmQWW8PTNp1Kb3QzZfnNha+HjfnFnXMoQDFJxgUq7PHzDz Ufdlvy1tZyV5
enzR9JFTLK7/NtAy7Vpg328vO8/edKFfM+OMyLsPWFbp2Azpy31/+B658LCd 0fsLc3tP/sbM
7uIM/cPTA682XfnHts71RSnRDx9m6Aj4FeuJCuqiYrgMeVRmOzFSof2w5eM3 2ZlTcTd3Bswb
tcz5xgo3AyaZowk86v0kfIrFxNzhPZch/e6P74qLPIGgUSj5XfNptNX1g+6m RvUVjqekx3Ua
ecepCXemvlgkEujolMyUBwoMC5YBRUEAErEO/gAAIABJREFUdPgBHQCWKveR ERpECWLOG0Ya
LAuWLn4MYAmleeqXSMq4Z3V1lXpB84pEvvkQcXKJubGhwvGktAznfovsGtYt kTvlMEabphgA
LE3TlAAm7rO2ugOgKfIwoTLqBq3Y8squuRJf1RJAlW9YB6ADwJZISN6Wyd+p
|
|
|
Re: Dependency Visualization [message #35564 is a reply to message #35530] |
Tue, 23 June 2009 02:27   |
Eclipse User |
|
|
|
Hi Johannes,
This looks awesome. I'll install and have a closer look today.
Regards,
Thomas Hallgren
Johannes Utzig wrote:
> Hi,
>
> as discussed in
> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
> I started working on a zest based component dependency viewer for
> buckminster.
> I just finished an early prototype and thought it's enough to get at
> least an idea and ask you guys what kinds of features you'd like to see
> in it.
>
> Currently this is (for sake of simplicity) registered as an editor for
> previously saved .bom files.
> It consists of 3 areas
>
> -navigation tree that shows a tree of the component dependencies and is
> used to drill down on the graph. The selection is linked to the graph
> viewer so if you select a component in the tree, only this specific
> subtree is revealed in the graph.
>
> -graph viewer. This is very basic at the moment. It shows the
> dependency graph with some icons depending on the component type and
> highlights the direct dependencies of the selected component. Unresolved
> nodes are shown in red, a double-click on a node reveals the node's
> cspec and that's about it :)
>
> -settings section. This section lets you choose between some layout
> algorithms and filters (only platform component filter so far). Filters
> are applied to both the navigation tree and the graph viewer.
>
> I came up with the following things that should be added:
> -better highlighting
> -tooltips and properties view that reveal more details of each component
> -smart highlighting of paths through the graph (shortest path to root
> request for example)
> -regex based filter (black and white list filter)
> -dependency reports generated from a bom with some nice pictures
> -zooming
> -image export
>
> Now I'd be very interested to hear what's on your wish-list for
> dependency visualization, so that I can plan on the real implementation.
> Attached is a screenshot and a bundle.jar including source code. Just
> throw it in your dropins folder to try, but make sure that zest is
> installed.
> Keep in mind, this is just an early prototype for demonstration and my
> first steps with zest, so the code is super ugly at the moment...
>
> Best regards,
> Johannes
>
> ------------------------------------------------------------ ------------
>
|
|
|
Re: [buckminster-dev] Dependency Visualization [message #35631 is a reply to message #35530] |
Tue, 23 June 2009 03:46   |
Eclipse User |
|
|
|
--0016367d69d84648d1046cff3096
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Wow Johannes ! This looks great : )
UI is actually an issue in Buckminster and EMF + Zest will do a good job
here. Very cool : )
Best regards,
Guillaume
On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de> wrote:
> Hi,
>
> as discussed in
> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.htmlI started working on a zest based component dependency viewer for
> buckminster.
> I just finished an early prototype and thought it's enough to get at least
> an idea and ask you guys what kinds of features you'd like to see in it.
>
> Currently this is (for sake of simplicity) registered as an editor for
> previously saved .bom files.
> It consists of 3 areas
>
> -navigation tree that shows a tree of the component dependencies and is
> used to drill down on the graph. The selection is linked to the graph viewer
> so if you select a component in the tree, only this specific subtree is
> revealed in the graph.
>
> -graph viewer. This is very basic at the moment. It shows the dependency
> graph with some icons depending on the component type and highlights the
> direct dependencies of the selected component. Unresolved nodes are shown in
> red, a double-click on a node reveals the node's cspec and that's about it
> :)
>
> -settings section. This section lets you choose between some layout
> algorithms and filters (only platform component filter so far). Filters are
> applied to both the navigation tree and the graph viewer.
>
> I came up with the following things that should be added:
> -better highlighting
> -tooltips and properties view that reveal more details of each component
> -smart highlighting of paths through the graph (shortest path to root
> request for example)
> -regex based filter (black and white list filter)
> -dependency reports generated from a bom with some nice pictures
> -zooming
> -image export
>
> Now I'd be very interested to hear what's on your wish-list for dependency
> visualization, so that I can plan on the real implementation.
> Attached is a screenshot and a bundle.jar including source code. Just throw
> it in your dropins folder to try, but make sure that zest is installed.
> Keep in mind, this is just an early prototype for demonstration and my
> first steps with zest, so the code is super ugly at the moment...
>
> Best regards,
> Johannes
>
> _______________________________________________
> buckminster-dev mailing list
> buckminster-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>
>
--0016367d69d84648d1046cff3096
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Wow=C2=A0Johannes=C2=A0! This looks great : )<div><br></div><div>UI is actu=
ally an issue in Buckminster and EMF + Zest will do a good job here. Very c=
ool : )</div><div><br></div><div>Best regards,</div><div>Guillaume<br><br><=
div class=3D"gmail_quote">
On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <span dir=3D"ltr"><<a h=
ref=3D"mailto:mail@jutzig.de">mail@jutzig.de</a>></span> wrote:<br><bloc=
kquote class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #cc=
c solid;padding-left:1ex;">
Hi,<br>
<br>
as discussed in <a href=3D"http://dev.eclipse.org/newslists/news.eclipse.to=
ols.buckminster/msg01102.html" target=3D"_blank">http://dev.eclipse.org/new=
slists/news.eclipse.tools.buckminster/msg01102.html</a> I started working o=
n a zest based component dependency viewer for buckminster.<br>
I just finished an early prototype and thought it's enough to =C2=A0get=
at least an idea and ask you guys what kinds of features you'd like to=
see in it.<br>
<br>
Currently this is (for sake of simplicity) registered as an editor for prev=
iously saved .bom files.<br>
It consists of 3 areas<br>
<br>
=C2=A0-navigation tree that shows a tree of the component dependencies and =
is used to drill down on the graph. The selection is linked to the graph vi=
ewer so if you select a component in the tree, only this specific subtree i=
s revealed in the graph.<br>
<br>
=C2=A0-graph viewer. This is very basic at the moment. It shows the depende=
ncy graph with some icons depending on the component type and highlights th=
e direct dependencies of the selected component. Unresolved nodes are shown=
in red, a double-click on a node reveals the node's cspec and that'=
;s about it :)<br>
<br>
=C2=A0-settings section. This section lets you choose between some layout a=
lgorithms and filters (only platform component filter so far). Filters are =
applied to both the navigation tree and the graph viewer.<br>
<br>
I came up with the following things that should be added:<br>
-better highlighting<br>
-tooltips and properties view that reveal more details of each component<br=
>
-smart highlighting of paths through the graph (shortest path to root reque=
st for example)<br>
-regex based filter (black and white list filter)<br>
-dependency reports generated from a bom with some nice pictures<br>
-zooming<br>
-image export<br>
<br>
Now I'd be very interested to hear what's on your wish-list for dep=
endency visualization, so that I can plan on the real implementation.<br>
Attached is a screenshot and a bundle.jar including source code. Just throw=
it in your dropins folder to try, but make sure that zest is installed.<br=
>
Keep in mind, this is just an early prototype for demonstration and my firs=
t steps with zest, so the code is super ugly at the moment...<br>
<br>
Best regards,<br><font color=3D"#888888">
Johannes<br>
</font><br>_______________________________________________ <br>
buckminster-dev mailing list<br>
<a href=3D"mailto:buckminster-dev@eclipse.org">buckminster-dev@eclipse.org<=
/a><br>
<a href=3D"https://dev.eclipse.org/mailman/listinfo/buckminster-dev" target=
=3D"_blank">https://dev.eclipse.org/mailman/listinfo/buckminster-dev</a><br=
>
<br></blockquote></div><br></div>
--0016367d69d84648d1046cff3096--
|
|
|
Re: [buckminster-dev] Dependency Visualization [message #35733 is a reply to message #35631] |
Tue, 23 June 2009 14:40   |
Eclipse User |
|
|
|
Wait a minute,
EMF? Zest, sure, but I would hope we could keep that behemoth out of
there, we're talking a configuration management tool here.
Best regards,
Dann
Guillaume Chatelet wrote:
> Wow Johannes ! This looks great : )
>
> UI is actually an issue in Buckminster and EMF + Zest will do a good job
> here. Very cool : )
>
> Best regards,
> Guillaume
>
> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
> <mailto:mail@jutzig.de>> wrote:
>
> Hi,
>
> as discussed in
> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
> I started working on a zest based component dependency viewer for
> buckminster.
> I just finished an early prototype and thought it's enough to get
> at least an idea and ask you guys what kinds of features you'd like
> to see in it.
>
> Currently this is (for sake of simplicity) registered as an editor
> for previously saved .bom files.
> It consists of 3 areas
>
> -navigation tree that shows a tree of the component dependencies
> and is used to drill down on the graph. The selection is linked to
> the graph viewer so if you select a component in the tree, only this
> specific subtree is revealed in the graph.
>
> -graph viewer. This is very basic at the moment. It shows the
> dependency graph with some icons depending on the component type and
> highlights the direct dependencies of the selected component.
> Unresolved nodes are shown in red, a double-click on a node reveals
> the node's cspec and that's about it :)
>
> -settings section. This section lets you choose between some layout
> algorithms and filters (only platform component filter so far).
> Filters are applied to both the navigation tree and the graph viewer.
>
> I came up with the following things that should be added:
> -better highlighting
> -tooltips and properties view that reveal more details of each component
> -smart highlighting of paths through the graph (shortest path to
> root request for example)
> -regex based filter (black and white list filter)
> -dependency reports generated from a bom with some nice pictures
> -zooming
> -image export
>
> Now I'd be very interested to hear what's on your wish-list for
> dependency visualization, so that I can plan on the real implementation.
> Attached is a screenshot and a bundle.jar including source code.
> Just throw it in your dropins folder to try, but make sure that zest
> is installed.
> Keep in mind, this is just an early prototype for demonstration and
> my first steps with zest, so the code is super ugly at the moment...
>
> Best regards,
> Johannes
>
> _______________________________________________
> buckminster-dev mailing list
> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>
>
|
|
|
Re: [buckminster-dev] Dependency Visualization [message #35768 is a reply to message #35733] |
Tue, 23 June 2009 17:33   |
Eclipse User |
|
|
|
Hi Dann,
A Buckminster runtime is one thing, the tools used to maintain it another. The runtime should be kept mean and lean,
that's for sure, and I think that is what your concern is about?
One thing that I've learned about EMF the last couple of weeks is that the runtime instances that it creates are very
optimized and in many cases far more optimal then the Java classes that people normally write. Booleans are grouped
together as bits in integer values, same thing with enums. I'm sure there's a lot of other optimizations going on as
well that I haven't found yet. All in all, I'm quite convinced that using EMF to describe things like our CSPEC, RMAP,
etc. will give us a smaller, less error prone, and more efficient runtime. The actual models themselves, visualized
graphically using the ecore tools diagram editor, will become valuable contributions to the documentation.
Then we have the tools surrounding it all. Editors for the model for instance. We get them for free with EMF. The
generated editor can be extended and improved a lot of course, but event the bare-bone generated thing beats the hell
out of using a text editor on XML documents. The generated editors are also very well crafted. Mean and lean. Easy to
extend and modify.
IMO EMF will become (and in some respect already is) a very valuable tool for us. Not sure I see why you'd think otherwise.
I have no experience with Zest but from the looks of it, it brings us a very good dependency visualization and that is
something that we have been longing for for some time now. Installing it will be optional of course.
Regards,
Thomas Hallgren
Dann Martens wrote:
> Wait a minute,
>
> EMF? Zest, sure, but I would hope we could keep that behemoth out of
> there, we're talking a configuration management tool here.
>
> Best regards,
> Dann
>
>
>
> Guillaume Chatelet wrote:
>> Wow Johannes ! This looks great : )
>>
>> UI is actually an issue in Buckminster and EMF + Zest will do a good
>> job here. Very cool : )
>>
>> Best regards,
>> Guillaume
>>
>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>> <mailto:mail@jutzig.de>> wrote:
>>
>> Hi,
>>
>> as discussed in
>>
>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>
>> I started working on a zest based component dependency viewer for
>> buckminster.
>> I just finished an early prototype and thought it's enough to get
>> at least an idea and ask you guys what kinds of features you'd like
>> to see in it.
>>
>> Currently this is (for sake of simplicity) registered as an editor
>> for previously saved .bom files.
>> It consists of 3 areas
>>
>> -navigation tree that shows a tree of the component dependencies
>> and is used to drill down on the graph. The selection is linked to
>> the graph viewer so if you select a component in the tree, only this
>> specific subtree is revealed in the graph.
>>
>> -graph viewer. This is very basic at the moment. It shows the
>> dependency graph with some icons depending on the component type and
>> highlights the direct dependencies of the selected component.
>> Unresolved nodes are shown in red, a double-click on a node reveals
>> the node's cspec and that's about it :)
>>
>> -settings section. This section lets you choose between some layout
>> algorithms and filters (only platform component filter so far).
>> Filters are applied to both the navigation tree and the graph viewer.
>>
>> I came up with the following things that should be added:
>> -better highlighting
>> -tooltips and properties view that reveal more details of each
>> component
>> -smart highlighting of paths through the graph (shortest path to
>> root request for example)
>> -regex based filter (black and white list filter)
>> -dependency reports generated from a bom with some nice pictures
>> -zooming
>> -image export
>>
>> Now I'd be very interested to hear what's on your wish-list for
>> dependency visualization, so that I can plan on the real
>> implementation.
>> Attached is a screenshot and a bundle.jar including source code.
>> Just throw it in your dropins folder to try, but make sure that zest
>> is installed.
>> Keep in mind, this is just an early prototype for demonstration and
>> my first steps with zest, so the code is super ugly at the moment...
>>
>> Best regards,
>> Johannes
>>
>> _______________________________________________
>> buckminster-dev mailing list
>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>
>>
|
|
|
Re: [buckminster-dev] Dependency Visualization [message #35802 is a reply to message #35768] |
Tue, 23 June 2009 17:47   |
Eclipse User |
|
|
|
Well yes,
I don't really want to go through the pain of having to install the EMF
plug-ins (ouch!) just to use Buckminster. I really hope you're not going
on that path because that sounds really terrible. I hope P2 changes
things, but installing EMF has been an incredible pain up to now.
Really, that's en emphatic no-no; I'd be really unhappy to see EMF
dependencies pulled in, just to use Buckminster. Actually, I have to sit
down, now. The idea of all that bloat is making my tummy ache.
Zest is just a wrapper around draw2D, and that's a totally different matter.
Best regards,
Dann
Thomas Hallgren wrote:
> Hi Dann,
> A Buckminster runtime is one thing, the tools used to maintain it
> another. The runtime should be kept mean and lean, that's for sure,
> and I think that is what your concern is about?
>
> One thing that I've learned about EMF the last couple of weeks is that
> the runtime instances that it creates are very optimized and in many
> cases far more optimal then the Java classes that people normally
> write. Booleans are grouped together as bits in integer values, same
> thing with enums. I'm sure there's a lot of other optimizations going
> on as well that I haven't found yet. All in all, I'm quite convinced
> that using EMF to describe things like our CSPEC, RMAP, etc. will give
> us a smaller, less error prone, and more efficient runtime. The actual
> models themselves, visualized graphically using the ecore tools
> diagram editor, will become valuable contributions to the documentation.
>
> Then we have the tools surrounding it all. Editors for the model for
> instance. We get them for free with EMF. The generated editor can be
> extended and improved a lot of course, but event the bare-bone
> generated thing beats the hell out of using a text editor on XML
> documents. The generated editors are also very well crafted. Mean and
> lean. Easy to extend and modify.
>
> IMO EMF will become (and in some respect already is) a very valuable
> tool for us. Not sure I see why you'd think otherwise.
>
> I have no experience with Zest but from the looks of it, it brings us
> a very good dependency visualization and that is something that we
> have been longing for for some time now. Installing it will be
> optional of course.
>
> Regards,
> Thomas Hallgren
>
>
> Dann Martens wrote:
>> Wait a minute,
>>
>> EMF? Zest, sure, but I would hope we could keep that behemoth out of
>> there, we're talking a configuration management tool here.
>>
>> Best regards,
>> Dann
>>
>>
>>
>> Guillaume Chatelet wrote:
>>> Wow Johannes ! This looks great : )
>>>
>>> UI is actually an issue in Buckminster and EMF + Zest will do a good
>>> job here. Very cool : )
>>>
>>> Best regards,
>>> Guillaume
>>>
>>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>>> <mailto:mail@jutzig.de>> wrote:
>>>
>>> Hi,
>>>
>>> as discussed in
>>>
>>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>>
>>> I started working on a zest based component dependency viewer for
>>> buckminster.
>>> I just finished an early prototype and thought it's enough to get
>>> at least an idea and ask you guys what kinds of features you'd like
>>> to see in it.
>>>
>>> Currently this is (for sake of simplicity) registered as an editor
>>> for previously saved .bom files.
>>> It consists of 3 areas
>>>
>>> -navigation tree that shows a tree of the component dependencies
>>> and is used to drill down on the graph. The selection is linked to
>>> the graph viewer so if you select a component in the tree, only
>>> this
>>> specific subtree is revealed in the graph.
>>>
>>> -graph viewer. This is very basic at the moment. It shows the
>>> dependency graph with some icons depending on the component type
>>> and
>>> highlights the direct dependencies of the selected component.
>>> Unresolved nodes are shown in red, a double-click on a node reveals
>>> the node's cspec and that's about it :)
>>>
>>> -settings section. This section lets you choose between some
>>> layout
>>> algorithms and filters (only platform component filter so far).
>>> Filters are applied to both the navigation tree and the graph
>>> viewer.
>>>
>>> I came up with the following things that should be added:
>>> -better highlighting
>>> -tooltips and properties view that reveal more details of each
>>> component
>>> -smart highlighting of paths through the graph (shortest path to
>>> root request for example)
>>> -regex based filter (black and white list filter)
>>> -dependency reports generated from a bom with some nice pictures
>>> -zooming
>>> -image export
>>>
>>> Now I'd be very interested to hear what's on your wish-list for
>>> dependency visualization, so that I can plan on the real
>>> implementation.
>>> Attached is a screenshot and a bundle.jar including source code.
>>> Just throw it in your dropins folder to try, but make sure that
>>> zest
>>> is installed.
>>> Keep in mind, this is just an early prototype for demonstration and
>>> my first steps with zest, so the code is super ugly at the
>>> moment...
>>>
>>> Best regards,
>>> Johannes
>>>
>>> _______________________________________________
>>> buckminster-dev mailing list
>>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>>
>>>
>
|
|
|
Re: [buckminster-dev] Dependency Visualization [message #35837 is a reply to message #35802] |
Tue, 23 June 2009 20:05   |
Eclipse User |
|
|
|
Dann,
Naturally I don't think of EMF has a behemoth. :-P
I suppose if you consider the all-in-one-sdk zip, which includes each
and every fine-grained EMF feature along with the fine-grained XSD
features (that you don't need), at grand total of 27MB, you might
consider that a behemoth. But then, I'm not sure what that makes
Eclipse itself at 150MB+. The behemoth that chokes all behemoths?
Surely you're not suggesting that an additional < 20% of downloads would
be the end of the world? The core EMF runtime is tiny, i.e., 2 MB, and
even the EMF features needed to support viewing are tiny, a few more
MB. We're talking tools at this point, not runtime, at Thomas pointed
out, though I'm not sure that matters to you...
I'm just not sure at which point the "terrible pain" kicks in though...
Of course p2 changes the game entirely. Only the features you actually
need need be installed...
Maybe you could elaborate on the incredibly painful experiences you've
had with installing EMF. Is it the download rate that's the problem?
The long unzip times? Something else? Many millions of people are
installing EMF, even just to install WTP, and I've not heard about a
great many incredibly painful events. People tend to complain loudly so
I'm pretty sure I would have heard about painful things...
At some point in the future, i.e., the e4 future, EMF will already be in
the platform installation itself, because it's being used to model the
workbench, so you're bound to be unhappy eventually if EMF itself makes
you unhappy. I suppose perhaps eventually you just won't notice EMF's
presence...
I hope you're sitting down already. Maybe lying down would be better. :-P
I've seen many arguments about avoid bloat. Unfortunately they usually
involve each project inventing its own solution to the same common
problem. The net result is that there end up being dozens of solutions
to exactly the same problem. That's also bloat; the worst kind. It's
ironic to me that avoiding bloat causes bloat, but that always seems to
be the way...
Probably you need to get over your aversion, or be more specific about it...
Dann Martens wrote:
> Well yes,
>
> I don't really want to go through the pain of having to install the
> EMF plug-ins (ouch!) just to use Buckminster. I really hope you're not
> going on that path because that sounds really terrible. I hope P2
> changes things, but installing EMF has been an incredible pain up to
> now. Really, that's en emphatic no-no; I'd be really unhappy to see
> EMF dependencies pulled in, just to use Buckminster. Actually, I have
> to sit down, now. The idea of all that bloat is making my tummy ache.
>
> Zest is just a wrapper around draw2D, and that's a totally different
> matter.
>
> Best regards,
> Dann
>
>
>
> Thomas Hallgren wrote:
>> Hi Dann,
>> A Buckminster runtime is one thing, the tools used to maintain it
>> another. The runtime should be kept mean and lean, that's for sure,
>> and I think that is what your concern is about?
>>
>> One thing that I've learned about EMF the last couple of weeks is
>> that the runtime instances that it creates are very optimized and in
>> many cases far more optimal then the Java classes that people
>> normally write. Booleans are grouped together as bits in integer
>> values, same thing with enums. I'm sure there's a lot of other
>> optimizations going on as well that I haven't found yet. All in all,
>> I'm quite convinced that using EMF to describe things like our CSPEC,
>> RMAP, etc. will give us a smaller, less error prone, and more
>> efficient runtime. The actual models themselves, visualized
>> graphically using the ecore tools diagram editor, will become
>> valuable contributions to the documentation.
>>
>> Then we have the tools surrounding it all. Editors for the model for
>> instance. We get them for free with EMF. The generated editor can be
>> extended and improved a lot of course, but event the bare-bone
>> generated thing beats the hell out of using a text editor on XML
>> documents. The generated editors are also very well crafted. Mean and
>> lean. Easy to extend and modify.
>>
>> IMO EMF will become (and in some respect already is) a very valuable
>> tool for us. Not sure I see why you'd think otherwise.
>>
>> I have no experience with Zest but from the looks of it, it brings us
>> a very good dependency visualization and that is something that we
>> have been longing for for some time now. Installing it will be
>> optional of course.
>>
>> Regards,
>> Thomas Hallgren
>>
>>
>> Dann Martens wrote:
>>> Wait a minute,
>>>
>>> EMF? Zest, sure, but I would hope we could keep that behemoth out of
>>> there, we're talking a configuration management tool here.
>>>
>>> Best regards,
>>> Dann
>>>
>>>
>>>
>>> Guillaume Chatelet wrote:
>>>> Wow Johannes ! This looks great : )
>>>>
>>>> UI is actually an issue in Buckminster and EMF + Zest will do a
>>>> good job here. Very cool : )
>>>>
>>>> Best regards,
>>>> Guillaume
>>>>
>>>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>>>> <mailto:mail@jutzig.de>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> as discussed in
>>>>
>>>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>>>
>>>> I started working on a zest based component dependency viewer for
>>>> buckminster.
>>>> I just finished an early prototype and thought it's enough to get
>>>> at least an idea and ask you guys what kinds of features you'd
>>>> like
>>>> to see in it.
>>>>
>>>> Currently this is (for sake of simplicity) registered as an editor
>>>> for previously saved .bom files.
>>>> It consists of 3 areas
>>>>
>>>> -navigation tree that shows a tree of the component dependencies
>>>> and is used to drill down on the graph. The selection is linked to
>>>> the graph viewer so if you select a component in the tree, only
>>>> this
>>>> specific subtree is revealed in the graph.
>>>>
>>>> -graph viewer. This is very basic at the moment. It shows the
>>>> dependency graph with some icons depending on the component
>>>> type and
>>>> highlights the direct dependencies of the selected component.
>>>> Unresolved nodes are shown in red, a double-click on a node
>>>> reveals
>>>> the node's cspec and that's about it :)
>>>>
>>>> -settings section. This section lets you choose between some
>>>> layout
>>>> algorithms and filters (only platform component filter so far).
>>>> Filters are applied to both the navigation tree and the graph
>>>> viewer.
>>>>
>>>> I came up with the following things that should be added:
>>>> -better highlighting
>>>> -tooltips and properties view that reveal more details of each
>>>> component
>>>> -smart highlighting of paths through the graph (shortest path to
>>>> root request for example)
>>>> -regex based filter (black and white list filter)
>>>> -dependency reports generated from a bom with some nice pictures
>>>> -zooming
>>>> -image export
>>>>
>>>> Now I'd be very interested to hear what's on your wish-list for
>>>> dependency visualization, so that I can plan on the real
>>>> implementation.
>>>> Attached is a screenshot and a bundle.jar including source code.
>>>> Just throw it in your dropins folder to try, but make sure that
>>>> zest
>>>> is installed.
>>>> Keep in mind, this is just an early prototype for demonstration
>>>> and
>>>> my first steps with zest, so the code is super ugly at the
>>>> moment...
>>>>
>>>> Best regards,
>>>> Johannes
>>>>
>>>> _______________________________________________
>>>> buckminster-dev mailing list
>>>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>>>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>>>
>>>>
>>
|
|
|
Re: [buckminster-dev] Dependency Visualization [message #35871 is a reply to message #35837] |
Tue, 23 June 2009 20:49   |
Eclipse User |
|
|
|
Hi Ed,
First of all, I have no aversion to EMF. But the model-driven approach
does bring a lot of overhead to enable all that meta-modeling. Must be
the 'meta' thing ;)
I'm not so sure you're response is that honest in terms of installation
pain. Installing WTP can be an unbelievable pain, and I'm sure I'm not
the only one saying that. The amount of times I just got stuck with an
Eclipse set-up which wouldn't install additional plug-ins because of
EMF-related plug-in mismatches... I simply can't count those instances
anymore. You'll probably say that's not EMF's fault per se, but EMF is
always implicated.
Because EMF is high up in the dependency hierarchy, it is one of those
projects which exposes Eclipse dependency problems the most. You're
probably referring to 'just EMF', but I'm talking about getting those
EMF-based projects to get along, which has been a *real* pain.
Building EMF with Buckminster is one thing, but if you already need an
instance of EMF before you can do that? How about those circular build
dependencies? Back to the dark woods of the PDE build?
Perhaps I better start a fork, right here and now and maintain a bit of
peace of mind...
Best regards,
Dann
Ed Merks wrote:
> Dann,
>
> Naturally I don't think of EMF has a behemoth. :-P
> I suppose if you consider the all-in-one-sdk zip, which includes each
> and every fine-grained EMF feature along with the fine-grained XSD
> features (that you don't need), at grand total of 27MB, you might
> consider that a behemoth. But then, I'm not sure what that makes
> Eclipse itself at 150MB+. The behemoth that chokes all behemoths?
>
> Surely you're not suggesting that an additional < 20% of downloads would
> be the end of the world? The core EMF runtime is tiny, i.e., 2 MB, and
> even the EMF features needed to support viewing are tiny, a few more
> MB. We're talking tools at this point, not runtime, at Thomas pointed
> out, though I'm not sure that matters to you...
>
> I'm just not sure at which point the "terrible pain" kicks in though...
>
> Of course p2 changes the game entirely. Only the features you actually
> need need be installed...
>
> Maybe you could elaborate on the incredibly painful experiences you've
> had with installing EMF. Is it the download rate that's the problem?
> The long unzip times? Something else? Many millions of people are
> installing EMF, even just to install WTP, and I've not heard about a
> great many incredibly painful events. People tend to complain loudly so
> I'm pretty sure I would have heard about painful things...
>
> At some point in the future, i.e., the e4 future, EMF will already be in
> the platform installation itself, because it's being used to model the
> workbench, so you're bound to be unhappy eventually if EMF itself makes
> you unhappy. I suppose perhaps eventually you just won't notice EMF's
> presence...
>
> I hope you're sitting down already. Maybe lying down would be better. :-P
>
> I've seen many arguments about avoid bloat. Unfortunately they usually
> involve each project inventing its own solution to the same common
> problem. The net result is that there end up being dozens of solutions
> to exactly the same problem. That's also bloat; the worst kind. It's
> ironic to me that avoiding bloat causes bloat, but that always seems to
> be the way...
>
> Probably you need to get over your aversion, or be more specific about
> it...
>
>
> Dann Martens wrote:
>> Well yes,
>>
>> I don't really want to go through the pain of having to install the
>> EMF plug-ins (ouch!) just to use Buckminster. I really hope you're not
>> going on that path because that sounds really terrible. I hope P2
>> changes things, but installing EMF has been an incredible pain up to
>> now. Really, that's en emphatic no-no; I'd be really unhappy to see
>> EMF dependencies pulled in, just to use Buckminster. Actually, I have
>> to sit down, now. The idea of all that bloat is making my tummy ache.
>>
>> Zest is just a wrapper around draw2D, and that's a totally different
>> matter.
>>
>> Best regards,
>> Dann
>>
>>
>>
>> Thomas Hallgren wrote:
>>> Hi Dann,
>>> A Buckminster runtime is one thing, the tools used to maintain it
>>> another. The runtime should be kept mean and lean, that's for sure,
>>> and I think that is what your concern is about?
>>>
>>> One thing that I've learned about EMF the last couple of weeks is
>>> that the runtime instances that it creates are very optimized and in
>>> many cases far more optimal then the Java classes that people
>>> normally write. Booleans are grouped together as bits in integer
>>> values, same thing with enums. I'm sure there's a lot of other
>>> optimizations going on as well that I haven't found yet. All in all,
>>> I'm quite convinced that using EMF to describe things like our CSPEC,
>>> RMAP, etc. will give us a smaller, less error prone, and more
>>> efficient runtime. The actual models themselves, visualized
>>> graphically using the ecore tools diagram editor, will become
>>> valuable contributions to the documentation.
>>>
>>> Then we have the tools surrounding it all. Editors for the model for
>>> instance. We get them for free with EMF. The generated editor can be
>>> extended and improved a lot of course, but event the bare-bone
>>> generated thing beats the hell out of using a text editor on XML
>>> documents. The generated editors are also very well crafted. Mean and
>>> lean. Easy to extend and modify.
>>>
>>> IMO EMF will become (and in some respect already is) a very valuable
>>> tool for us. Not sure I see why you'd think otherwise.
>>>
>>> I have no experience with Zest but from the looks of it, it brings us
>>> a very good dependency visualization and that is something that we
>>> have been longing for for some time now. Installing it will be
>>> optional of course.
>>>
>>> Regards,
>>> Thomas Hallgren
>>>
>>>
>>> Dann Martens wrote:
>>>> Wait a minute,
>>>>
>>>> EMF? Zest, sure, but I would hope we could keep that behemoth out of
>>>> there, we're talking a configuration management tool here.
>>>>
>>>> Best regards,
>>>> Dann
>>>>
>>>>
>>>>
>>>> Guillaume Chatelet wrote:
>>>>> Wow Johannes ! This looks great : )
>>>>>
>>>>> UI is actually an issue in Buckminster and EMF + Zest will do a
>>>>> good job here. Very cool : )
>>>>>
>>>>> Best regards,
>>>>> Guillaume
>>>>>
>>>>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>>>>> <mailto:mail@jutzig.de>> wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>> as discussed in
>>>>>
>>>>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>>>>
>>>>> I started working on a zest based component dependency viewer for
>>>>> buckminster.
>>>>> I just finished an early prototype and thought it's enough to get
>>>>> at least an idea and ask you guys what kinds of features you'd
>>>>> like
>>>>> to see in it.
>>>>>
>>>>> Currently this is (for sake of simplicity) registered as an editor
>>>>> for previously saved .bom files.
>>>>> It consists of 3 areas
>>>>>
>>>>> -navigation tree that shows a tree of the component dependencies
>>>>> and is used to drill down on the graph. The selection is linked to
>>>>> the graph viewer so if you select a component in the tree, only
>>>>> this
>>>>> specific subtree is revealed in the graph.
>>>>>
>>>>> -graph viewer. This is very basic at the moment. It shows the
>>>>> dependency graph with some icons depending on the component
>>>>> type and
>>>>> highlights the direct dependencies of the selected component.
>>>>> Unresolved nodes are shown in red, a double-click on a node
>>>>> reveals
>>>>> the node's cspec and that's about it :)
>>>>>
>>>>> -settings section. This section lets you choose between some
>>>>> layout
>>>>> algorithms and filters (only platform component filter so far).
>>>>> Filters are applied to both the navigation tree and the graph
>>>>> viewer.
>>>>>
>>>>> I came up with the following things that should be added:
>>>>> -better highlighting
>>>>> -tooltips and properties view that reveal more details of each
>>>>> component
>>>>> -smart highlighting of paths through the graph (shortest path to
>>>>> root request for example)
>>>>> -regex based filter (black and white list filter)
>>>>> -dependency reports generated from a bom with some nice pictures
>>>>> -zooming
>>>>> -image export
>>>>>
>>>>> Now I'd be very interested to hear what's on your wish-list for
>>>>> dependency visualization, so that I can plan on the real
>>>>> implementation.
>>>>> Attached is a screenshot and a bundle.jar including source code.
>>>>> Just throw it in your dropins folder to try, but make sure that
>>>>> zest
>>>>> is installed.
>>>>> Keep in mind, this is just an early prototype for demonstration
>>>>> and
>>>>> my first steps with zest, so the code is super ugly at the
>>>>> moment...
>>>>>
>>>>> Best regards,
>>>>> Johannes
>>>>>
>>>>> _______________________________________________
>>>>> buckminster-dev mailing list
>>>>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>>>>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>>>>
>>>>>
>>>
|
|
|
Re: [buckminster-dev] Dependency Visualization [message #35909 is a reply to message #35871] |
Tue, 23 June 2009 21:14   |
Eclipse User |
|
|
|
This is a multi-part message in MIME format.
--------------030002040002000400070306
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Dann,
Comments below.
Dann Martens wrote:
> Hi Ed,
>
> First of all, I have no aversion to EMF.
It sounds like one though...
> But the model-driven approach does bring a lot of overhead to enable
> all that meta-modeling.
Overhead? Meta-modeling?
> Must be the 'meta' thing ;)
I'm not a big fan of the word meta. Probably you know that, but perhaps
you don't... The model of a model is a model...
>
> I'm not so sure you're response is that honest in terms of
> installation pain.
Honesty is a fundamental quality I hold dear. Very few people question
my honesty. Certainly it's your prerogative to do that, and in that
case, I'll reserve the right to question yours.
> Installing WTP can be an unbelievable pain, and I'm sure I'm not the
> only one saying that.
I've not installed WTP, so personally I have no idea. I've only ever
install the platform and then I bootstrap EMF (and a dozen or more other
projects) from CVS, so in all honesty, I can say I have little
experience installing anything...
> The amount of times I just got stuck with an Eclipse set-up which
> wouldn't install additional plug-ins because of EMF-related plug-in
> mismatches...
Again, I have no idea what you mean by "install". You mean update
manager, unzipping files, p2, or what?
> I simply can't count those instances anymore.
I can imagine the pain, though I've not experienced it. Of course if
installing one more thing on top of the platform is a huge pain, then
even installing Buckminster as one additional thing must be painful
already. If not, why not? I suppose you mean installing two different
things each of which depends on EMF, but instead you might want to blame
that pain on bad plugin version ranges, the platform's treatment of
them, and the universal belief that they represent goodness, rather than
blame EMF...
> You'll probably say that's not EMF's fault per se, but EMF is always
> implicated.
I've very used to being a scapegoat.
http://ed-merks.blogspot.com/2009/03/on-being-scapegoat.html
In the end though, there's little of substance in the scapegoating, so
it's just a form of entertainment for me. Folly in other words...
>
> Because EMF is high up in the dependency hierarchy, it is one of those
> projects which exposes Eclipse dependency problems the most.
Or low down, depending on which direction you grow. But yes, being a
foundation component makes for being a great scapegoat. It seems as if
you're arguing to avoid having foundation components because that way we
can avoid seeing dependency problems. That's clearly a questionable
argument.
> You're probably referring to 'just EMF', but I'm talking about getting
> those EMF-based projects to get along, which has been a *real* pain.
I guess that's a pain, but since you have to do that anyway, or so it
seems, I'm not sure how your problem got worse. In any case, you've not
provided one iota of substance. Just scapegoating EMF and finger
pointing in the typical way that's grown tiresome over the years.
>
> Building EMF with Buckminster is one thing,
A totally unrelated thing in fact...
> but if you already need an instance of EMF before you can do that?
Isn't bootstrapping fun. That's irrelevant to you though, since you
aren't building EMF. Why bring it up?
In any case, one needs an instance of EMF to generate EMF. That sounds
impossible?
> How about those circular build dependencies?
I guess it's impossible although we do this all the time.
> Back to the dark woods of the PDE build?
I guess PDE build is the dark wood, but I don't see the connection.
>
> Perhaps I better start a fork, right here and now and maintain a bit
> of peace of mind...
I guess so. Peace of mind is a valuable commodity so it's probably worth
just about any price.
In any case, I don't think you've done a good job arguing you have no
aversions. Your line of reasoning would seem to argue that it's a bad
idea to have common foundation components because there are dependency
problems when many projects depend on such foundation components.
Perhaps we ought to focus on those so they're fixed rather than throw
away good architecture concepts...
>
>
> Best regards,
> Dann
>
>
>
>
> Ed Merks wrote:
>> Dann,
>>
>> Naturally I don't think of EMF has a behemoth. :-P
>> I suppose if you consider the all-in-one-sdk zip, which includes each
>> and every fine-grained EMF feature along with the fine-grained XSD
>> features (that you don't need), at grand total of 27MB, you might
>> consider that a behemoth. But then, I'm not sure what that makes
>> Eclipse itself at 150MB+. The behemoth that chokes all behemoths?
>>
>> Surely you're not suggesting that an additional < 20% of downloads
>> would be the end of the world? The core EMF runtime is tiny, i.e.,
>> 2 MB, and even the EMF features needed to support viewing are tiny, a
>> few more MB. We're talking tools at this point, not runtime, at
>> Thomas pointed out, though I'm not sure that matters to you...
>>
>> I'm just not sure at which point the "terrible pain" kicks in though...
>>
>> Of course p2 changes the game entirely. Only the features you
>> actually need need be installed...
>>
>> Maybe you could elaborate on the incredibly painful experiences
>> you've had with installing EMF. Is it the download rate that's the
>> problem? The long unzip times? Something else? Many millions of
>> people are installing EMF, even just to install WTP, and I've not
>> heard about a great many incredibly painful events. People tend to
>> complain loudly so I'm pretty sure I would have heard about painful
>> things...
>>
>> At some point in the future, i.e., the e4 future, EMF will already be
>> in the platform installation itself, because it's being used to model
>> the workbench, so you're bound to be unhappy eventually if EMF itself
>> makes you unhappy. I suppose perhaps eventually you just won't
>> notice EMF's presence...
>>
>> I hope you're sitting down already. Maybe lying down would be
>> better. :-P
>>
>> I've seen many arguments about avoid bloat. Unfortunately they
>> usually involve each project inventing its own solution to the same
>> common problem. The net result is that there end up being dozens of
>> solutions to exactly the same problem. That's also bloat; the worst
>> kind. It's ironic to me that avoiding bloat causes bloat, but that
>> always seems to be the way...
>>
>> Probably you need to get over your aversion, or be more specific
>> about it...
>>
>>
>> Dann Martens wrote:
>>> Well yes,
>>>
>>> I don't really want to go through the pain of having to install the
>>> EMF plug-ins (ouch!) just to use Buckminster. I really hope you're
>>> not going on that path because that sounds really terrible. I hope
>>> P2 changes things, but installing EMF has been an incredible pain up
>>> to now. Really, that's en emphatic no-no; I'd be really unhappy to
>>> see EMF dependencies pulled in, just to use Buckminster. Actually, I
>>> have to sit down, now. The idea of all that bloat is making my tummy
>>> ache.
>>>
>>> Zest is just a wrapper around draw2D, and that's a totally different
>>> matter.
>>>
>>> Best regards,
>>> Dann
>>>
>>>
>>>
>>> Thomas Hallgren wrote:
>>>> Hi Dann,
>>>> A Buckminster runtime is one thing, the tools used to maintain it
>>>> another. The runtime should be kept mean and lean, that's for sure,
>>>> and I think that is what your concern is about?
>>>>
>>>> One thing that I've learned about EMF the last couple of weeks is
>>>> that the runtime instances that it creates are very optimized and
>>>> in many cases far more optimal then the Java classes that people
>>>> normally write. Booleans are grouped together as bits in integer
>>>> values, same thing with enums. I'm sure there's a lot of other
>>>> optimizations going on as well that I haven't found yet. All in
>>>> all, I'm quite convinced that using EMF to describe things like our
>>>> CSPEC, RMAP, etc. will give us a smaller, less error prone, and
>>>> more efficient runtime. The actual models themselves, visualized
>>>> graphically using the ecore tools diagram editor, will become
>>>> valuable contributions to the documentation.
>>>>
>>>> Then we have the tools surrounding it all. Editors for the model
>>>> for instance. We get them for free with EMF. The generated editor
>>>> can be extended and improved a lot of course, but event the
>>>> bare-bone generated thing beats the hell out of using a text editor
>>>> on XML documents. The generated editors are also very well crafted.
>>>> Mean and lean. Easy to extend and modify.
>>>>
>>>> IMO EMF will become (and in some respect already is) a very
>>>> valuable tool for us. Not sure I see why you'd think otherwise.
>>>>
>>>> I have no experience with Zest but from the looks of it, it brings
>>>> us a very good dependency visualization and that is something that
>>>> we have been longing for for some time now. Installing it will be
>>>> optional of course.
>>>>
>>>> Regards,
>>>> Thomas Hallgren
>>>>
>>>>
>>>> Dann Martens wrote:
>>>>> Wait a minute,
>>>>>
>>>>> EMF? Zest, sure, but I would hope we could keep that behemoth out
>>>>> of there, we're talking a configuration management tool here.
>>>>>
>>>>> Best regards,
>>>>> Dann
>>>>>
>>>>>
>>>>>
>>>>> Guillaume Chatelet wrote:
>>>>>> Wow Johannes ! This looks great : )
>>>>>>
>>>>>> UI is actually an issue in Buckminster and EMF + Zest will do a
>>>>>> good job here. Very cool : )
>>>>>>
>>>>>> Best regards,
>>>>>> Guillaume
>>>>>>
>>>>>> On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <mail@jutzig.de
>>>>>> <mailto:mail@jutzig.de>> wrote:
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> as discussed in
>>>>>>
>>>>>> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html
>>>>>>
>>>>>> I started working on a zest based component dependency viewer
>>>>>> for
>>>>>> buckminster.
>>>>>> I just finished an early prototype and thought it's enough
>>>>>> to get
>>>>>> at least an idea and ask you guys what kinds of features
>>>>>> you'd like
>>>>>> to see in it.
>>>>>>
>>>>>> Currently this is (for sake of simplicity) registered as an
>>>>>> editor
>>>>>> for previously saved .bom files.
>>>>>> It consists of 3 areas
>>>>>>
>>>>>> -navigation tree that shows a tree of the component
>>>>>> dependencies
>>>>>> and is used to drill down on the graph. The selection is
>>>>>> linked to
>>>>>> the graph viewer so if you select a component in the tree,
>>>>>> only this
>>>>>> specific subtree is revealed in the graph.
>>>>>>
>>>>>> -graph viewer. This is very basic at the moment. It shows the
>>>>>> dependency graph with some icons depending on the component
>>>>>> type and
>>>>>> highlights the direct dependencies of the selected component.
>>>>>> Unresolved nodes are shown in red, a double-click on a node
>>>>>> reveals
>>>>>> the node's cspec and that's about it :)
>>>>>>
>>>>>> -settings section. This section lets you choose between some
>>>>>> layout
>>>>>> algorithms and filters (only platform component filter so far).
>>>>>> Filters are applied to both the navigation tree and the graph
>>>>>> viewer.
>>>>>>
>>>>>> I came up with the following things that should be added:
>>>>>> -better highlighting
>>>>>> -tooltips and properties view that reveal more details of
>>>>>> each component
>>>>>> -smart highlighting of paths through the graph (shortest path to
>>>>>> root request for example)
>>>>>> -regex based filter (black and white list filter)
>>>>>> -dependency reports generated from a bom with some nice pictures
>>>>>> -zooming
>>>>>> -image export
>>>>>>
>>>>>> Now I'd be very interested to hear what's on your wish-list for
>>>>>> dependency visualization, so that I can plan on the real
>>>>>> implementation.
>>>>>> Attached is a screenshot and a bundle.jar including source code.
>>>>>> Just throw it in your dropins folder to try, but make sure
>>>>>> that zest
>>>>>> is installed.
>>>>>> Keep in mind, this is just an early prototype for
>>>>>> demonstration and
>>>>>> my first steps with zest, so the code is super ugly at the
>>>>>> moment...
>>>>>>
>>>>>> Best regards,
>>>>>> Johannes
>>>>>>
>>>>>> _______________________________________________
>>>>>> buckminster-dev mailing list
>>>>>> buckminster-dev@eclipse.org <mailto:buckminster-dev@eclipse.org>
>>>>>> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>>>>>>
>>>>>>
>>>>
>
>
--------------030002040002000400070306
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 8bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Dann,<br>
<br>
Comments below.<br>
<br>
Dann Martens wrote:
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">Hi Ed,
<br>
<br>
First of all, I have no aversion to EMF. </blockquote>
It sounds like one though...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">But the
model-driven approach does bring a lot of overhead to enable all that
meta-modeling. </blockquote>
Overhead? Meta-modeling?<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">Must be
the 'meta' thing ;)
<br>
</blockquote>
I'm not a big fan of the word meta. Probably you know that, but
perhaps you don't... The model of a model is a model... <br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
I'm not so sure you're response is that honest in terms of installation
pain.</blockquote>
Honesty is a fundamental quality I hold dear. Very few people question
my honesty. Certainly it's your prerogative to do that, and in that
case, I'll reserve the right to question yours.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">Installing
WTP can be an unbelievable pain, and I'm sure I'm not the only one
saying that.</blockquote>
I've not installed WTP, so personally I have no idea. I've only ever
install the platform and then I bootstrap EMF (and a dozen or more
other projects) from CVS, so in all honesty, I can say I have little
experience installing anything...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> The
amount of times I just got stuck with an Eclipse set-up which wouldn't
install additional plug-ins because of EMF-related plug-in mismatches...</blockquote>
Again, I have no idea what you mean by "install". You mean update
manager, unzipping files, p2, or what?<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> I
simply can't count those instances anymore.</blockquote>
I can imagine the pain, though I've not experienced it. Of course if
installing one more thing on top of the platform is a huge pain, then
even installing Buckminster as one additional thing must be painful
already. If not, why not? I suppose you mean installing two different
things each of which depends on EMF, but instead you might want to
blame that pain on bad plugin version ranges, the platform's treatment
of them, and the universal belief that they represent goodness, rather
than blame EMF...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> You'll
probably say that's not EMF's fault per se, but EMF is always
implicated.
<br>
</blockquote>
I've very used to being a scapegoat. <br>
<blockquote><a
href=" http://ed-merks.blogspot.com/2009/03/on-being-scapegoat.html"> http://ed-merks.blogspot.com/2009/03/on-being-scapegoat.html</a><br>
</blockquote>
In the end though, there's little of substance in the scapegoating, so
it's just a form of entertainment for me. Folly in other words...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
Because EMF is high up in the dependency hierarchy, it is one of those
projects which exposes Eclipse dependency problems the most.</blockquote>
Or low down, depending on which direction you grow. But yes, being a
foundation component makes for being a great scapegoat. It seems as if
you're arguing to avoid having foundation components because that way
we can avoid seeing dependency problems. That's clearly a questionable
argument.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> You're
probably referring to 'just EMF', but I'm talking about getting those
EMF-based projects to get along, which has been a *real* pain.
<br>
</blockquote>
I guess that's a pain, but since you have to do that anyway, or so it
seems, I'm not sure how your problem got worse. In any case, you've
not provided one iota of substance. Just scapegoating EMF and finger
pointing in the typical way that's grown tiresome over the years.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
Building EMF with Buckminster is one thing, </blockquote>
A totally unrelated thing in fact...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">but if
you already need an instance of EMF before you can do that? </blockquote>
Isn't bootstrapping fun. That's irrelevant to you though, since you
aren't building EMF. Why bring it up?<br>
<br>
In any case, one needs an instance of EMF to generate EMF. That sounds
impossible?<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite">How
about those circular build dependencies?</blockquote>
I guess it's impossible although we do this all the time.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"> Back
to the dark woods of the PDE build?
<br>
</blockquote>
I guess PDE build is the dark wood, but I don't see the connection.<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
Perhaps I better start a fork, right here and now and maintain a bit of
peace of mind...</blockquote>
I guess so. Peace of mind is a valuable commodity so it's probably
worth just about any price.<br>
<br>
In any case, I don't think you've done a good job arguing you have no
aversions. Your line of reasoning would seem to argue that it's a bad
idea to have common foundation components because there are dependency
problems when many projects depend on such foundation components.
Perhaps we ought to focus on those so they're fixed rather than throw
away good architecture concepts...<br>
<blockquote cite="mid:4A41780D.6020504@tomoton.com" type="cite"><br>
<br>
Best regards,
<br>
Dann
<br>
<br>
<br>
<br>
<br>
Ed Merks wrote:
<br>
<blockquote type="cite">Dann,
<br>
<br>
Naturally I don't think of EMF has a behemoth. :-P
<br>
I suppose if you consider the all-in-one-sdk zip, which includes each
and every fine-grained EMF feature along with the fine-grained XSD
features (that you don't need), at grand total of 27MB, you might
consider that a behemoth. But then, I'm not sure what that makes
Eclipse itself at 150MB+. The behemoth that chokes all behemoths?
<br>
<br>
Surely you're not suggesting that an additional < 20% of downloads
would be the end of the world? The core EMF runtime is tiny, i.e., 2
MB, and even the EMF features needed to support viewing are tiny, a few
more MB. We're talking tools at this point, not runtime, at Thomas
pointed out, though I'm not sure that matters to you...
<br>
<br>
I'm just not sure at which point the "terrible pain" kicks in though...
<br>
<br>
Of course p2 changes the game entirely. Only the features you actually
need need be installed...
<br>
<br>
Maybe you could elaborate on the incredibly painful experiences you've
had with installing EMF. Is it the download rate that's the problem?
The long unzip times? Something else? Many millions of people are
installing EMF, even just to install WTP, and I've not heard about a
great many incredibly painful events. People tend to complain loudly
so I'm pretty sure I would have heard about painful things...
<br>
<br>
At some point in the future, i.e., the e4 future, EMF will already be
in the platform installation itself, because it's being used to model
the workbench, so you're bound to be unhappy eventually if EMF itself
makes you unhappy. I suppose perhaps eventually you just won't notice
EMF's presence...
<br>
<br>
I hope you're sitting down already. Maybe lying down would be better.
:-P
<br>
<br>
I've seen many arguments about avoid bloat. Unfortunately they usually
involve each project inventing its own solution to the same common
problem. The net result is that there end up being dozens of solutions
to exactly the same problem. That's also bloat; the worst kind. It's
ironic to me that avoiding bloat causes bloat, but that always seems to
be the way...
<br>
<br>
Probably you need to get over your aversion, or be more specific about
it...
<br>
<br>
<br>
Dann Martens wrote:
<br>
<blockquote type="cite">Well yes,
<br>
<br>
I don't really want to go through the pain of having to install the EMF
plug-ins (ouch!) just to use Buckminster. I really hope you're not
going on that path because that sounds really terrible. I hope P2
changes things, but installing EMF has been an incredible pain up to
now. Really, that's en emphatic no-no; I'd be really unhappy to see EMF
dependencies pulled in, just to use Buckminster. Actually, I have to
sit down, now. The idea of all that bloat is making my tummy ache.
<br>
<br>
Zest is just a wrapper around draw2D, and that's a totally different
matter.
<br>
<br>
Best regards,
<br>
Dann
<br>
<br>
<br>
<br>
Thomas Hallgren wrote:
<br>
<blockquote type="cite">Hi Dann,
<br>
A Buckminster runtime is one thing, the tools used to maintain it
another. The runtime should be kept mean and lean, that's for sure, and
I think that is what your concern is about?
<br>
<br>
One thing that I've learned about EMF the last couple of weeks is that
the runtime instances that it creates are very optimized and in many
cases far more optimal then the Java classes that people normally
write. Booleans are grouped together as bits in integer values, same
thing with enums. I'm sure there's a lot of other optimizations going
on as well that I haven't found yet. All in all, I'm quite convinced
that using EMF to describe things like our CSPEC, RMAP, etc. will give
us a smaller, less error prone, and more efficient runtime. The actual
models themselves, visualized graphically using the ecore tools diagram
editor, will become valuable contributions to the documentation.
<br>
<br>
Then we have the tools surrounding it all. Editors for the model for
instance. We get them for free with EMF. The generated editor can be
extended and improved a lot of course, but event the bare-bone
generated thing beats the hell out of using a text editor on XML
documents. The generated editors are also very well crafted. Mean and
lean. Easy to extend and modify.
<br>
<br>
IMO EMF will become (and in some respect already is) a very valuable
tool for us. Not sure I see why you'd think otherwise.
<br>
<br>
I have no experience with Zest but from the looks of it, it brings us a
very good dependency visualization and that is something that we have
been longing for for some time now. Installing it will be optional of
course.
<br>
<br>
Regards,
<br>
Thomas Hallgren
<br>
<br>
<br>
Dann Martens wrote:
<br>
<blockquote type="cite">Wait a minute,
<br>
<br>
EMF? Zest, sure, but I would hope we could keep that behemoth out of
there, we're talking a configuration management tool here.
<br>
<br>
Best regards,
<br>
Dann
<br>
<br>
<br>
<br>
Guillaume Chatelet wrote:
<br>
<blockquote type="cite">Wow Johannes ! This looks great : )
<br>
<br>
UI is actually an issue in Buckminster and EMF + Zest will do a good
job here. Very cool : )
<br>
<br>
Best regards,
<br>
Guillaume
<br>
<br>
On Mon, Jun 22, 2009 at 11:25 PM, Johannes Utzig <<a class="moz-txt-link-abbreviated" href="mailto:mail@jutzig.de">mail@jutzig.de</a>
<a class="moz-txt-link-rfc2396E" href="mailto:mail@jutzig.de"><mailto:mail@jutzig.de></a>> wrote:
<br>
<br>
Hi,
<br>
<br>
as discussed in
<br>
<a class="moz-txt-link-freetext" href=" http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html"> http://dev.eclipse.org/newslists/news.eclipse.tools.buckmins ter/msg01102.html</a>
<br>
I started working on a zest based component dependency viewer for
<br>
buckminster.
<br>
I just finished an early prototype and thought it's enough to get
<br>
at least an idea and ask you guys what kinds of features you'd like
<br>
to see in it.
<br>
<br>
Currently this is (for sake of simplicity) registered as an editor
<br>
for previously saved .bom files.
<br>
It consists of 3 areas
<br>
<br>
-navigation tree that shows a tree of the component dependencies
<br>
and is used to drill down on the graph. The selection is linked to
<br>
the graph viewer so if you select a component in the tree, only
this
<br>
specific subtree is revealed in the graph.
<br>
<br>
-graph viewer. This is very basic at the moment. It shows the
<br>
dependency graph with some icons depending on the component type
and
<br>
highlights the direct dependencies of the selected component.
<br>
Unresolved nodes are shown in red, a double-click on a node reveals
<br>
the node's cspec and that's about it :)
<br>
<br>
-settings section. This section lets you choose between some
layout
<br>
algorithms and filters (only platform component filter so far).
<br>
Filters are applied to both the navigation tree and the graph
viewer.
<br>
<br>
I came up with the following things that should be added:
<br>
-better highlighting
<br>
-tooltips and properties view that reveal more details of each
component
<br>
-smart highlighting of paths through the graph (shortest path to
<br>
root request for example)
<br>
-regex based filter (black and white list filter)
<br>
-dependency reports generated from a bom with some nice pictures
<br>
-zooming
<br>
-image export
<br>
<br>
Now I'd be very interested to hear what's on your wish-list for
<br>
dependency visualization, so that I can plan on the real
implementation.
<br>
Attached is a screenshot and a bundle.jar including source code.
<br>
Just throw it in your dropins folder to try, but make sure that
zest
<br>
is installed.
<br>
Keep in mind, this is just an early prototype for demonstration and
<br>
my first steps with zest, so the code is super ugly at the
moment...
<br>
<br>
Best regards,
<br>
Johannes
<br>
<br>
_______________________________________________
<br>
buckminster-dev mailing list
<br>
<a class="moz-txt-link-abbreviated" href="mailto:buckminster-dev@eclipse.org">buckminster-dev@eclipse.org</a>
<a class="moz-txt-link-rfc2396E" href="mailto:buckminster-dev@eclipse.org"><mailto:buckminster-dev@eclipse.org></a>
<br>
<a class="moz-txt-link-freetext" href="https://dev.eclipse.org/mailman/listinfo/buckminster-dev">https://dev.eclipse.org/mailman/listinfo/buckminster-dev</a>
<br>
<br>
<br>
</blockquote>
</blockquote>
<br>
</blockquote>
</blockquote>
</blockquote>
<br>
<br>
</blockquote>
</body>
</html>
--------------030002040002000400070306--
|
|
| |
Re: [buckminster-dev] Dependency Visualization [message #36079 is a reply to message #35943] |
Wed, 24 June 2009 03:43   |
Eclipse User |
|
|
|
Dann,
Comments below.
Dann Martens wrote:
> Here we go again :)
>
> I feel some of the reply you've formulated doesn't address what I've
> tried to convey.
That may well be.
>
> As far as Buckminster is concerned, I have managed to build a complete
> working build system with additional plug-ins without any need of EMF,
> already two years ago.
Cool.
> I see no compelling reason to introduce EMF now, as what I feel is
> needed to further Buckminster is totally unrelated.
Buckminster serves a community so it's useful to get feedback from it.
> I'm interested in having Buckminster stable (which it isn't) and in
> contributing back what I added myself at that point.
Perhaps contributing back will help with stability?
> I really see no reason at all to warrant this diversion.
That's your subjective opinion, but in the end, the people who do the
actual work make the choices, of course taking into account opinions
from the community and the substance behind those opinions.
> This has nothing to do with the qualities of EMF itself, but I will
> not support this decision.
You've described installing EMF as a nightmare, EMF has a bloated
behemoth, and its use as an unwarranted diversion. You've complained
dramatically about a tummy ache and your need to sit down. Yet still
you claim to have made no value judgment of EMF.
>
> We can argue and misunderstand each other as much as you want,
So not only am I being perhaps dishonest, misunderstandings are
something I desire...
> but this feels like a real waste of my time.
Helping Buckminster get value from EMF isn't a waste of my time, and
working with the community, even when it's occasionally hostile, isn't
either.
> And I'm sure yours as well.
It's my time to spend and for me to decide how best to spend it.
> For a silly build tool, no less.
As far as I'm concerned, the biggest problem with builds is the attitude
that they're silly and working on them is beneath real developers. If
you ask almost any developer at Eclipse, they'll explain that builds are
the bane of their existence, that they happily delegate it all to
someone else. But there's nothing silly about builds. In fact, we
ought to treated the problem as the most fundamentally important problem
to solve when it comes to ensuring that the goodness we develop ends up
coming out of the pipeline and feeding to those who consume it. I'll
climb down off my build soap box now. :-P
I'm thinking the only real substance in your stated concerns is
installation problems, yet what you describe isn't something familiar to
me. I'm wondering why components like GEF, which are also widely used
in other Eclipse projects, don't cause the same installations nightmares
that EMF does. I.e., what's fundamentally different about dependencies
on GEF verses dependencies on EMF? Neither are in the platform and both
need additional installation...
>
> Best regards,
> Dann
|
|
|
Re: [buckminster-dev] Dependency Visualization [message #36113 is a reply to message #35943] |
Wed, 24 June 2009 05:35   |
Eclipse User |
|
|
|
Dann,
I'm not sure that what I'm going to write will change your mind, but I'll
try anyway.
I am using both EMF and Buckminster very intensively. I have built products
based on EMF. Built, of course, with Buckminster. I can run EMF-based code
generators during my automated build with Buckminster. Yes, EMF is already
running in my headless Buckminster. So I guess I know what I'm talking
about.
EMF will not introduce any significant overhead to a typical Buckminster
installation. The runtime JARs are _really_ small. And there's only few of
them. At runtime, I'd argue that it may even _decrease_ Buckminster's memory
footprint.
Installation-wise, I predict that people will see less of these "cannot
install XY" problems with Eclipse 3.5. That's for two reasons: One, p2 has
matured a lot in 3.5. Two, people (i.e. plug-in providers) have learned how
to specify their dependencies correctly. They used to be sloppy with this,
and while the old update manager accepted a lot of crap, p2 threw their
failures into the faces of their users. I learned this, I'm sure others
have, too.
I won't reiterate all the benefits that EMF will bring. But I hope that I
could mitigate some of your fears.
Regards,
Achim
Dann Martens wrote:
> Here we go again :)
>
> I feel some of the reply you've formulated doesn't address what I've
> tried to convey.
>
> As far as Buckminster is concerned, I have managed to build a complete
> working build system with additional plug-ins without any need of EMF,
> already two years ago. I see no compelling reason to introduce EMF now,
> as what I feel is needed to further Buckminster is totally unrelated.
> I'm interested in having Buckminster stable (which it isn't) and in
> contributing back what I added myself at that point. I really see no
> reason at all to warrant this diversion. This has nothing to do with the
> qualities of EMF itself, but I will not support this decision.
>
> We can argue and misunderstand each other as much as you want, but this
> feels like a real waste of my time. And I'm sure yours as well. For a
> silly build tool, no less.
>
> Best regards,
> Dann
|
|
|
Re: [buckminster-dev] Dependency Visualization [message #36147 is a reply to message #36113] |
Wed, 24 June 2009 15:50   |
Eclipse User |
|
|
|
Hi Achim,
This discussion is not simple and potentially endless, and that's why I
refuse to engage in it anymore.
I'm currently working on two other Eclipse-based projects and I need to
focus. If the need arises to use EMF in those projects, I won't
hesitate, I can assure you.
I was in need of a build system badly, and I'll continue my pursuit,
although not necessarily along this track.
Thanks,
Dann
Achim Demelt wrote:
> Dann,
>
> I'm not sure that what I'm going to write will change your mind, but I'll
> try anyway.
>
> I am using both EMF and Buckminster very intensively. I have built products
> based on EMF. Built, of course, with Buckminster. I can run EMF-based code
> generators during my automated build with Buckminster. Yes, EMF is already
> running in my headless Buckminster. So I guess I know what I'm talking
> about.
>
> EMF will not introduce any significant overhead to a typical Buckminster
> installation. The runtime JARs are _really_ small. And there's only few of
> them. At runtime, I'd argue that it may even _decrease_ Buckminster's memory
> footprint.
>
> Installation-wise, I predict that people will see less of these "cannot
> install XY" problems with Eclipse 3.5. That's for two reasons: One, p2 has
> matured a lot in 3.5. Two, people (i.e. plug-in providers) have learned how
> to specify their dependencies correctly. They used to be sloppy with this,
> and while the old update manager accepted a lot of crap, p2 threw their
> failures into the faces of their users. I learned this, I'm sure others
> have, too.
>
> I won't reiterate all the benefits that EMF will bring. But I hope that I
> could mitigate some of your fears.
>
> Regards,
> Achim
>
>
> Dann Martens wrote:
>
>> Here we go again :)
>>
>> I feel some of the reply you've formulated doesn't address what I've
>> tried to convey.
>>
>> As far as Buckminster is concerned, I have managed to build a complete
>> working build system with additional plug-ins without any need of EMF,
>> already two years ago. I see no compelling reason to introduce EMF now,
>> as what I feel is needed to further Buckminster is totally unrelated.
>> I'm interested in having Buckminster stable (which it isn't) and in
>> contributing back what I added myself at that point. I really see no
>> reason at all to warrant this diversion. This has nothing to do with the
>> qualities of EMF itself, but I will not support this decision.
>>
>> We can argue and misunderstand each other as much as you want, but this
>> feels like a real waste of my time. And I'm sure yours as well. For a
>> silly build tool, no less.
>>
>> Best regards,
>> Dann
>
>
|
|
| |
Re: Dependency Visualization [message #37125 is a reply to message #37018] |
Thu, 02 July 2009 10:46   |
Eclipse User |
|
|
|
This is a multi-part message in MIME format.
--------------060709070901000202000109
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit
Johannes,
I tried this and I'm amazed. It looks great and I don't think it needs further improvement at this
stage. It's very useful as it is and I'd like to include it in Buckminster. In order to do that,
you'd have to submit the code in a bugzilla so that we can get the IP approval process going (a
contribution of this size must be scrutinized by the Eclipse EMO). A bugzilla with a proper patch
will also give people a chance to voice their opinion about the patch.
Some things to think about before you submit the code:
1. You need to add an 'about.html' file stating that the code is EPL 1.0 to the plug-in (see
attachement).
2. The 'about.html' must be included in the binary build of the bundle, i.e. checked on the manifest
editor 'Build' tab.
3. You probably want to add a copyright notice to the head of each source file.
How do we package this in Buckminster? Should we add a special 'Dependency Visualization' feature or
should we simply include it in the core UI distribution? Opinions welcome.
Kind Regards,
Thomas Hallgren
Johannes Utzig wrote:
> Hi,
>
> I had some time since the last post to work an the visualization and
> these are the latest changes:
>
> -better path highlighting. so far 3 kinds of relationships are
> implemented for highlighting:
> -path to direct dependencies of the selected component
> -path to components that directly require the selected component
> -path to root request. (either shortest, or all)
> each way of highlighting can be selectively enabled/disabled and is
> additive to the other selected highlightings
>
> -tooltips on components to reveal some details
> -sash form between navigation tree and graph viewer
> -better resize behavior
> -bugfixes
> -tidier code base and architecture
>
> Unfortunately something seems to be broken in the Zest zooming support,
> so that feature didn't make it into the visualization just yet and it's
> still just registered as a bom editor because I couldn't think of other
> useful integration points.
>
> Apart from that it I think it's pretty usable already and I'm curious
> what you want me to add/change/do before you'd consider to accept it as
> a contribution.
>
> Attached are some updated screenshots to get an impression as well as
> the exported bundle including source code.
>
> Remarks for the screenshots:
> light green = root component (either cquery root, or drilled down)
> green = path to root component
> orange = direct dependencies
> blue = components that directly depend on the selected component
> yellow = current selection
>
> Best regards,
> Johannes
>
>
>
>
> ------------------------------------------------------------ ------------
>
>
> ------------------------------------------------------------ ------------
>
>
> ------------------------------------------------------------ ------------
>
--------------060709070901000202000109
Content-Type: text/html; charset=ISO-8859-1;
name="about.html"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="about.html"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
<title>About</title>
</head>
<body lang="EN-US">
<h2>About This Content</h2>
<p>June 24, 2009</p>
<h3>License</h3>
<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
indicated below, the Content is provided to you under the terms and conditions of the
Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available
at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
For purposes of the EPL, "Program" will mean the Content.</p>
<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
being redistributed by another party ("Redistributor") and different terms and conditions may
apply to your use of any object code in the Content. Check the Redistributor's license that was
provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
indicated below, the terms and conditions of the EPL still apply to any source code in the Content
and such source code may be obtained at <a href="/">http://www.eclipse.org</a>.</p>
</body>
</html>
--------------060709070901000202000109--
|
|
| |
Re: Dependency Visualization [message #37192 is a reply to message #37125] |
Thu, 02 July 2009 12:42   |
Eclipse User |
|
|
|
Hi Thomas, hi Henrik,
comments inline.
Thomas Hallgren schrieb:
> Johannes,
> I tried this and I'm amazed. It looks great and I don't think it needs
> further improvement at this stage. It's very useful as it is and I'd
> like to include it in Buckminster. In order to do that, you'd have to
> submit the code in a bugzilla so that we can get the IP approval process
> going (a contribution of this size must be scrutinized by the Eclipse
> EMO). A bugzilla with a proper patch will also give people a chance to
> voice their opinion about the patch.
>
I'm glad that you want to include it, that's great. One dumb question
about that: by 'patch' you mean just a copy of the source, right? Or how
would I create a patch against a repository where the plugin is not yet
checked in?
> Some things to think about before you submit the code:
>
> 1. You need to add an 'about.html' file stating that the code is EPL 1.0
> to the plug-in (see attachement).
> 2. The 'about.html' must be included in the binary build of the bundle,
> i.e. checked on the manifest editor 'Build' tab.
> 3. You probably want to add a copyright notice to the head of each
> source file.
>
That's easy enough to do, but before that I should probably put
everything in a shape that's acceptable for the buckminster team and the
foundation, because once it's commited it would be a lot harder to do
stuff like string externalization, api-doc,... because I'd need to
provide all that as separate patches, right?
Where can I look-up the things like coding guidelines, naming
conventions, icon conventions,...?
There's also a really dirty implementation hack that I'd rather not see
in a released version, unfortunately I couldn't find another way. I
wanted to open the selected component's cspec on double click, but it
turned out that you don't export the package that contains the
CSpecEditorInput. I worked my way around by subclassing
ViewChosenCSpecAction and invoke its run method, but that's really nasty...
Would there be another way to open a cspec, or should it stay like that?
> How do we package this in Buckminster? Should we add a special
> 'Dependency Visualization' feature or should we simply include it in the
> core UI distribution? Opinions welcome.
>
> Kind Regards,
> Thomas Hallgren
>
>
Either way sounds fine to me, but I should point out that I'm pretty
much the only person that tested this plugin so far. Bundeling it with
the core UI feature could give users the impression that it's a well
tested and mature feature, but maybe that's just me.
Henrik Lindberg schrieb:
> I would put it in the buckminster UI unless it is (unexpectantly)
> a) huge or b) there are issues with required bundles.
>
> - henrik
It's definetly not huge and here's a list of the dependencies:
org.eclipse.core.runtime,
org.eclipse.zest.core;bundle-version="1.1.0",
org.eclipse.zest.layouts;bundle-version="1.1.0",
org.eclipse.buckminster.ui;bundle-version="1.0.350",
org.eclipse.core.resources;bundle-version="3.5.0",
org.eclipse.ui;bundle-version="3.5.0",
org.eclipse.ui.forms;bundle-version="3.4.0",
org.eclipse.ui.ide;bundle-version="3.5.0",
org.eclipse.buckminster.core;bundle-version="1.1.350",
org.eclipse.buckminster.sax;bundle-version="1.0.0",
org.eclipse.equinox.p2.core;bundle-version="1.0.100"
Until I hear more from you I'll add some java-doc, comments, do some
code formatting, see if I can paint some better icons (I suck at that
:)), externalize the strings, add the copyright statement and the licence.
Thank you very much for your help and best regards,
Johannes
|
|
|
Re: Dependency Visualization [message #37226 is a reply to message #37192] |
Thu, 02 July 2009 14:23   |
Eclipse User |
|
|
|
Hi Johannes,
Johannes Utzig wrote:
>... by 'patch' you mean just a copy of the source, right? Or how
> would I create a patch against a repository where the plugin is not yet
> checked in?
It's OK to attach a zip containing the project as a whole.
>> Some things to think about before you submit the code:
>>
>> 1. You need to add an 'about.html' file stating that the code is EPL
>> 1.0 to the plug-in (see attachement).
>> 2. The 'about.html' must be included in the binary build of the
>> bundle, i.e. checked on the manifest editor 'Build' tab.
>> 3. You probably want to add a copyright notice to the head of each
>> source file.
>>
> That's easy enough to do, but before that I should probably put
> everything in a shape that's acceptable for the buckminster team and the
> foundation, because once it's commited it would be a lot harder to do
> stuff like string externalization, api-doc,... because I'd need to
> provide all that as separate patches, right?
> Where can I look-up the things like coding guidelines, naming
> conventions, icon conventions,...?
>
Actually, what I'm after is things that might be significant in your initial contribution. The EPL
affinity is such a thing and if you want to retain your own copyright, you need to do that too
before your initial submission.
The code will be reformatted according to the Buckminster Formatting rules and the project will have
preferences set that will enforce this before it's checked in.
> There's also a really dirty implementation hack that I'd rather not see
> in a released version, unfortunately I couldn't find another way. I
> wanted to open the selected component's cspec on double click, but it
> turned out that you don't export the package that contains the
> CSpecEditorInput. I worked my way around by subclassing
> ViewChosenCSpecAction and invoke its run method, but that's really nasty...
> Would there be another way to open a cspec, or should it stay like that?
>
Let it remain like that for now. This can be refactored once the patch is in.
> Either way sounds fine to me, but I should point out that I'm pretty
> much the only person that tested this plugin so far. Bundeling it with
> the core UI feature could give users the impression that it's a well
> tested and mature feature, but maybe that's just me.
>
Of course it must be tested before we decide to release it but one important aspect of testing is to
let the community at large get their hands on it and start hammering. Since this is a viewer, the
bugs found in it will not be disruptive, so I'd rather see that happen sooner rather then later.
> It's definetly not huge and here's a list of the dependencies:
>
> org.eclipse.core.runtime,
> org.eclipse.zest.core;bundle-version="1.1.0",
> org.eclipse.zest.layouts;bundle-version="1.1.0",
> org.eclipse.buckminster.ui;bundle-version="1.0.350",
> org.eclipse.core.resources;bundle-version="3.5.0",
> org.eclipse.ui;bundle-version="3.5.0",
> org.eclipse.ui.forms;bundle-version="3.4.0",
> org.eclipse.ui.ide;bundle-version="3.5.0",
> org.eclipse.buckminster.core;bundle-version="1.1.350",
> org.eclipse.buckminster.sax;bundle-version="1.0.0",
> org.eclipse.equinox.p2.core;bundle-version="1.0.100"
>
Right. The only added dependencies here are the two zest bundles. The rest is already required from
our own UI bundle.
Regards,
Thomas Hallgren
|
|
| |
Re: [buckminster-dev] Re: Dependency Visualization [message #37296 is a reply to message #37158] |
Thu, 02 July 2009 17:22   |
Eclipse User |
|
|
|
--0016365ee96ea01cac046dbfa397
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Totally agree with you Henrik. Let's put it in the UI Bundle.
It's just 2 more dependencies to zest : quite alright.
Guillaume
On Thu, Jul 2, 2009 at 5:00 PM, Henrik Lindberg <
henrik.lindberg@cloudsmith.com> wrote:
> Thomas Hallgren wrote:
>
>> Johannes,
>> I tried this and I'm amazed.
>>
> I have not tried it, but the screnshoots look really good.
>
> How do we package this in Buckminster? Should we add a special 'Dependency
>> Visualization' feature or should we simply include it in the core UI
>> distribution? Opinions welcome.
>>
>> I would put it in the buckminster UI unless it is (unexpectantly)
> a) huge or b) there are issues with required bundles.
>
> - henrik
>
> _______________________________________________
> buckminster-dev mailing list
> buckminster-dev@eclipse.org
> https://dev.eclipse.org/mailman/listinfo/buckminster-dev
>
--0016365ee96ea01cac046dbfa397
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Totally agree with you Henrik. Let's put it in the UI Bundle.<br>It'=
;s just 2 more dependencies to zest : quite alright.<br><br>Guillaume<br><b=
r><div class=3D"gmail_quote">On Thu, Jul 2, 2009 at 5:00 PM, Henrik Lindber=
g <span dir=3D"ltr"><<a href=3D"mailto:henrik.lindberg@cloudsmith.com">h=
enrik.lindberg@cloudsmith.com</a>></span> wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class=3D"im"=
>Thomas Hallgren wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Johannes,<br>
I tried this and I'm amazed. <br>
</blockquote></div>
I have not tried it, but the screnshoots look really good.<div class=3D"im"=
><br>
<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
How do we package this in Buckminster? Should we add a special 'Depende=
ncy Visualization' feature or should we simply include it in the core U=
I distribution? Opinions welcome.<br>
<br>
</blockquote></div>
I would put it in the buckminster UI unless it is (unexpectantly)<br>
a) huge or b) there are issues with required bundles.<br><font color=3D"#88=
8888">
<br>
- henrik</font><div><div></div><div class=3D"h5"><br>
_______________________________________________<br>
buckminster-dev mailing list<br>
<a href=3D"mailto:buckminster-dev@eclipse.org" target=3D"_blank">buckminste=
r-dev@eclipse.org</a><br>
<a href=3D"https://dev.eclipse.org/mailman/listinfo/buckminster-dev" target=
=3D"_blank">https://dev.eclipse.org/mailman/listinfo/buckminster-dev</a><br=
>
</div></div></blockquote></div><br>
--0016365ee96ea01cac046dbfa397--
|
|
| |
Re: [buckminster-dev] Re: Dependency Visualization [message #37363 is a reply to message #37296] |
Thu, 02 July 2009 18:42   |
Eclipse User |
|
|
|
--0016365ee96ed4ce9b046dc0c0e6
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
On Fri, Jul 3, 2009 at 12:17 AM, Thomas Hallgren <thomas@tada.se> wrote:
> Guillaume Chatelet wrote:
>
>> Totally agree with you Henrik. Let's put it in the UI Bundle.
>>
>
> I'd rather have it in a bundle of it's own but included in the core UI
> feature. Perhaps that's what you meant?
Definitely Thomas. That's what I meant, sorry for the confusion.
Cheers,
Guillaume
--0016365ee96ed4ce9b046dc0c0e6
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div class=3D"gmail_quote">On Fri, Jul 3, 2009 at 12:17 AM, Thomas Hallgren=
<span dir=3D"ltr"><<a href=3D"mailto:thomas@tada.se">thomas@tada.se</a>=
></span> wrote:<br><blockquote class=3D"gmail_quote" style=3D"border-lef=
t: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1=
ex;">
<div class=3D"im">Guillaume Chatelet wrote:<br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Totally agree with you Henrik. Let's put it in the UI Bundle.<br>
</blockquote>
<br></div>
I'd rather have it in a bundle of it's own but included in the core=
UI feature. Perhaps that's what you meant?</blockquote><div><br>Defini=
tely Thomas. That's what I meant, sorry for the confusion.<br><br>
Cheers,<br>Guillaume<br></div></div>
--0016365ee96ed4ce9b046dc0c0e6--
|
|
| |
Re: Dependency Visualization [message #37537 is a reply to message #37226] |
Mon, 06 July 2009 15:34  |
Eclipse User |
|
|
|
Hi Thomas,
I'm done now with the code clean up and submitted it as a bugzilla
attachment:
See:
https://bugs.eclipse.org/bugs/show_bug.cgi?id=282569
Best regards,
Johannes
Thomas Hallgren schrieb:
> Hi Johannes,
>
> Johannes Utzig wrote:
>> ... by 'patch' you mean just a copy of the source, right? Or how would
>> I create a patch against a repository where the plugin is not yet
>> checked in?
>
> It's OK to attach a zip containing the project as a whole.
>
>>> Some things to think about before you submit the code:
>>>
>>> 1. You need to add an 'about.html' file stating that the code is EPL
>>> 1.0 to the plug-in (see attachement).
>>> 2. The 'about.html' must be included in the binary build of the
>>> bundle, i.e. checked on the manifest editor 'Build' tab.
>>> 3. You probably want to add a copyright notice to the head of each
>>> source file.
>>>
>> That's easy enough to do, but before that I should probably put
>> everything in a shape that's acceptable for the buckminster team and
>> the foundation, because once it's commited it would be a lot harder to
>> do stuff like string externalization, api-doc,... because I'd need to
>> provide all that as separate patches, right?
>> Where can I look-up the things like coding guidelines, naming
>> conventions, icon conventions,...?
>>
> Actually, what I'm after is things that might be significant in your
> initial contribution. The EPL affinity is such a thing and if you want
> to retain your own copyright, you need to do that too before your
> initial submission.
>
> The code will be reformatted according to the Buckminster Formatting
> rules and the project will have preferences set that will enforce this
> before it's checked in.
>
>> There's also a really dirty implementation hack that I'd rather not
>> see in a released version, unfortunately I couldn't find another way.
>> I wanted to open the selected component's cspec on double click, but
>> it turned out that you don't export the package that contains the
>> CSpecEditorInput. I worked my way around by subclassing
>> ViewChosenCSpecAction and invoke its run method, but that's really
>> nasty...
>> Would there be another way to open a cspec, or should it stay like that?
>>
> Let it remain like that for now. This can be refactored once the patch
> is in.
>
>> Either way sounds fine to me, but I should point out that I'm pretty
>> much the only person that tested this plugin so far. Bundeling it with
>> the core UI feature could give users the impression that it's a well
>> tested and mature feature, but maybe that's just me.
>>
> Of course it must be tested before we decide to release it but one
> important aspect of testing is to let the community at large get their
> hands on it and start hammering. Since this is a viewer, the bugs found
> in it will not be disruptive, so I'd rather see that happen sooner
> rather then later.
>
>> It's definetly not huge and here's a list of the dependencies:
>>
>> org.eclipse.core.runtime,
>> org.eclipse.zest.core;bundle-version="1.1.0",
>> org.eclipse.zest.layouts;bundle-version="1.1.0",
>> org.eclipse.buckminster.ui;bundle-version="1.0.350",
>> org.eclipse.core.resources;bundle-version="3.5.0",
>> org.eclipse.ui;bundle-version="3.5.0",
>> org.eclipse.ui.forms;bundle-version="3.4.0",
>> org.eclipse.ui.ide;bundle-version="3.5.0",
>> org.eclipse.buckminster.core;bundle-version="1.1.350",
>> org.eclipse.buckminster.sax;bundle-version="1.0.0",
>> org.eclipse.equinox.p2.core;bundle-version="1.0.100"
>>
> Right. The only added dependencies here are the two zest bundles. The
> rest is already required from our own UI bundle.
>
> Regards,
> Thomas Hallgren
|
|
|
Goto Forum:
Current Time: Wed May 07 08:36:24 EDT 2025
Powered by FUDForum. Page generated in 0.28894 seconds
|