From: "Saved by Windows Internet Explorer 8" Subject: =?iso-8859-1?Q?Australian_Worldwide_Exploration_Limited_=96_Oil_and_gas_e?= =?iso-8859-1?Q?xploration_and_production?= Date: Mon, 20 Apr 2009 14:52:19 +0800 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0159_01C9C1C7.9ABA19B0" X-MimeOLE: Produced By Microsoft MimeOLE V6.0.6001.18049 This is a multi-part message in MIME format. ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://172.31.254.243/www.awexp.com.au/irm/content/Images/pic_logo.gif R0lGODlhjgBCAPcAAAAAAP///wAzjgE0jwEyjv/9/vv8//r7/gcwhwkyiQ40hQIwjgIxjQIxiwMy jAQzjwQzjQU0kAUxigUxiAY0jAYwhAcxgwgyhQowgAowfQoweww6kgsxfA05jQwygQsxegwyfw0y exE0eRU7hRQxbBk8gBc2dCJJlSVPoChJjCZGhC1PkDtjsTtfpjhXlS1Gd0VpsExxuj5cmEZmpHCN xY2s6HOLuZq485yx27/S+fz9//j5+wAykQAzjwAxjQAzjAE0kAExigEzigEwiAI1kAIzjwI1jgI0 jQI0iwIxiQIyhwIxgwM2kQMyigMziAMxhgQziwQ0iQQyiAQyhwQzhQQxhAQxggUziQU0hgUygwYz hgYzhAYxgAc0iQcygQg3iwcyfggzgggyfAk0hgk0gwk0fwoyegw2hQsyeAwxdg42gA85hhE8jQ4x cBNAlRE5ghE3fBAzdBpBiRxEjxg6eSJCfS5XpCpQlyA+cy9VnTZanTRUjzBNhDtak0FhnlV6wDxW h09xr1R3uEdkmV2Cx0JcjVBupEJYgWqNz3GV2WeHw1p3qVNsmWiEuE5jimJ9rXua1FxznYem4XuX yYSh1m2Fr3yTvabF/FxtjJm052h7nZGr2oSbxIuizKvF9nSGp6O76LnS/7PK9avA5r/R8b7O68vc +8XU7svY8AA2kAA1jwA2jgA1jAA0igEziAE0hgI5jwI0iQM6lAM2jAM2iQM0gwQ6kgUzgQY0gl+C vnOW0X6Rr5WpyqGz0JGhu7XI6NPk/8vb9dnm/AA5kAI6kQM7koibtsLa/srf/6q8156swNDg+Kq3 y7fD1MLL2MDP49/s/tPg8c3Y59vl8t/o9Nvj7ufv+gQ3eNfq/+Tx/+Ps9tXd5ur0/u/3/+vy+Ofv 9fb7//T4+93z//H6/+f3/+ft8Pn9/+P2//T8//b9//D4+vj8/e38//L///X///f///n///v///3/ //7///b//vr+/fn//ff9+/T/+/z+/fv9/Pn/+////f39+/39/f///yH5BAEAAP8ALAAAAACOAEIA AAj/AM1IEUCwoMGDAnr0MDig4QCCPhAeJEDA4I8fCFu1knjwokKCDTmKFHDRIkaQBI8cOTiAFatV rFSpSqUKyMIBMwdElChwJMKPDEP6JEjRZMaNPj0uFCB0qNGCJQ+qLBix5UtWqWiq6gHk4UwiIns6 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 te7ZsYUPJ158+LBhupXvJh4QADs= ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://172.31.254.241/www.awexp.com.au/irm/content/Images/pic_logo2.gif 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 ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://172.31.254.241/www.awexp.com.au/irm/content/Images/pic_2008oar.jpg /9j/4AAQSkZJRgABAgEASABIAAD/4Q3ORXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAcAAAAcgEyAAIAAAAUAAAAjodp AAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dz ADIwMDk6MDM6MDUgMDk6NDY6MjAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABVKADAAQAAAAB AAAAZgAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA AgAAAgEABAAAAAEAAAEuAgIABAAAAAEAAAyYAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG AAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN Dg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwM/8AAEQgAMACgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH CAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh EjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi ZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKy gwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dX Z3eHl6e3x//aAAwDAQACEQMRAD8AykoO0uAJDeSBMJKzhfRs7wWmPhJWoTQc4brV9PzX0V5Povbj 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 AAAAAAAAnxoAAJgSAACc////nP///wMbAAD8EgAAAAF7BQAA4AMAAAEADycBAHAAZwAAAGoAcABn AAAAOEJJTQPtAAAAAAAQAEgAAAABAAIASAAAAAEAAjhCSU0EJgAAAAAADgAAAAAAAAAAAAA/gAAA OEJJTQQNAAAAAAAEAAAAeDhCSU0EGQAAAAAABAAAAB44QklNA/MAAAAAAAkAAAAAAAAAAAEAOEJJ TQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1AAAAAABIAC9mZgABAGxmZgAG AAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAAAAABADUAAAABAC0AAAAGAAAA AAABOEJJTQP4AAAAAABwAAD/////////////////////////////A+gAAAAA//////////////// /////////////wPoAAAAAP////////////////////////////8D6AAAAAD///////////////// ////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAA OEJJTQQaAAAAAANLAAAABgAAAAAAAAAAAAAAZgAAAVQAAAALAHAAaQBjAF8AMgAwADAAOABvAGEA cgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABVAAAAGYAAAAAAAAAAAAAAAAAAAAA AQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAAB AAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9u ZwAAAGYAAAAAUmdodGxvbmcAAAFUAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGlj ZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVt AAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5 cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAA AAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAABmAAAAAFJnaHRsb25nAAABVAAAAAN1cmxU RVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RF WFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJ aG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25l bnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFF U2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRz ZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAA ADhCSU0EKAAAAAAADAAAAAE/8AAAAAAAADhCSU0EFAAAAAAABAAAAAg4QklNBAwAAAAADLQAAAAB AAAAoAAAADAAAAHgAABaAAAADJgAGAAB/9j/4AAQSkZJRgABAgAASABIAAD/7QAMQWRvYmVfQ00A Af/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgTExUTExgRDAwMDAwM EQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4UFA4ODg4UEQwMDAwM EREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIADAAoAMBIgACEQEDEQH/ 3QAEAAr/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEBAQEBAAAAAAAAAAEA AgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEyBhSRobFCIyQVUsFi MzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80YnlKSFtJXE1OT0pbXF 1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUBAAIRAyExEgRBUWFx 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 BjuAFLWtaxoLzAYd7fdY9/qP/Nc+xVpWbJ8T96UnxKIhSDK3SkKFx/Q2f1SqEnxKUnxKXCi3/9k4 QklNBCEAAAAAAFUAAAABAQAAAA8AQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAAAATAEEA ZABvAGIAZQAgAFAAaABvAHQAbwBzAGgAbwBwACAAQwBTADMAAAABADhCSU0EBgAAAAAABwAIAAAA AQEA/+EPzmh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9i ZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4xLWMwMzYgNDYuMjc2NzIwLCBN b24gRmViIDE5IDIwMDcgMjI6NDA6MDggICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0 cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRp b24gcmRmOmFib3V0PSIiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4x LyIgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4YXBNTT0i aHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5h ZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnBob3Rvc2hvcD0iaHR0 cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFk b2JlLmNvbS90aWZmLzEuMC8iIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8x LjAvIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHhhcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9z aG9wIENTMyBXaW5kb3dzIiB4YXA6Q3JlYXRlRGF0ZT0iMjAwOS0wMy0wNVQwOTo0MDoyOSsxMTow MCIgeGFwOk1vZGlmeURhdGU9IjIwMDktMDMtMDVUMDk6NDY6MjArMTE6MDAiIHhhcDpNZXRhZGF0 YURhdGU9IjIwMDktMDMtMDVUMDk6NDY6MjArMTE6MDAiIHhhcE1NOkRvY3VtZW50SUQ9InV1aWQ6 MjNDQTRFNEUwQzA5REUxMUFDNTNDQ0NCRjAxRjYxOUEiIHhhcE1NOkluc3RhbmNlSUQ9InV1aWQ6 MjQwMUYxNDcwRTA5REUxMUFDNTNDQ0NCRjAxRjYxOUEiIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMi IHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgcGhvdG9zaG9wOkhpc3Rv cnk9IiIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpYUmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAw IiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIi IHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwyNTksMjYyLDI3NCwyNzcsMjg0LDUzMCw1 MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUzMiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMx NSwzMzQzMjswMkM5OTVFODIzMzIxODczMDQ4OUIxNkIyRURCOTgwNCIgZXhpZjpQaXhlbFhEaW1l bnNpb249IjM0MCIgZXhpZjpQaXhlbFlEaW1lbnNpb249IjEwMiIgZXhpZjpDb2xvclNwYWNlPSIx IiBleGlmOk5hdGl2ZURpZ2VzdD0iMzY4NjQsNDA5NjAsNDA5NjEsMzcxMjEsMzcxMjIsNDA5NjIs NDA5NjMsMzc1MTAsNDA5NjQsMzY4NjcsMzY4NjgsMzM0MzQsMzM0MzcsMzQ4NTAsMzQ4NTIsMzQ4 NTUsMzQ4NTYsMzczNzcsMzczNzgsMzczNzksMzczODAsMzczODEsMzczODIsMzczODMsMzczODQs MzczODUsMzczODYsMzczOTYsNDE0ODMsNDE0ODQsNDE0ODYsNDE0ODcsNDE0ODgsNDE0OTIsNDE0 OTMsNDE0OTUsNDE3MjgsNDE3MjksNDE3MzAsNDE5ODUsNDE5ODYsNDE5ODcsNDE5ODgsNDE5ODks NDE5OTAsNDE5OTEsNDE5OTIsNDE5OTMsNDE5OTQsNDE5OTUsNDE5OTYsNDIwMTYsMCwyLDQsNSw2 LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDI4 LDMwO0FCQzM0NUQwOUUzODBBNjU5REZFMTcwMDJEMDIzQTNFIj4gPHhhcE1NOkRlcml2ZWRGcm9t IHN0UmVmOmluc3RhbmNlSUQ9InV1aWQ6OUEyMTQyRkEyQ0NGREMxMTk0Q0JCQjNBNzZDN0Y1REEi IHN0UmVmOmRvY3VtZW50SUQ9InV1aWQ6QzQzMjUwODAxQUNGREMxMTk0Q0JCQjNBNzZDN0Y1REEi Lz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0i dyI/Pv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEA AGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MA AAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJY WVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAA JGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8 AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2Fy ZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0Ig SUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+i AAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAA AAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAA LklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAA LklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAA AAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVD NjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYx OTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3M AAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAA AAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAy ADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwA wQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFn AW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksC VAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+ A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE /gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbA BtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII 5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtR C2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMO Lg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFP EW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U 8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjV GPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4d Rx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7 IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgn SSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizX LQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQz DTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/ Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRA pkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgF SEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91Q J1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9 WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9h omH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3 a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1 KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+E f+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSK yoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0 lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiai lqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8W r4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8 m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4 yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY 6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep 6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3 ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////uAA5BZG9iZQBkQAAAAAH/2wCEAAEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgMDAwMDAwMD AwMBAQEBAQEBAQEBAQICAQICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD AwMDAwMDAwMDA//AABEIAGYBVAMBEQACEQEDEQH/3QAEACv/xAGiAAAABgIDAQAAAAAAAAAAAAAH CAYFBAkDCgIBAAsBAAAGAwEBAQAAAAAAAAAAAAYFBAMHAggBCQAKCxAAAgEDBAEDAwIDAwMCBgl1 AQIDBBEFEgYhBxMiAAgxFEEyIxUJUUIWYSQzF1JxgRhikSVDobHwJjRyChnB0TUn4VM2gvGSokRU c0VGN0djKFVWVxqywtLi8mSDdJOEZaOzw9PjKThm83UqOTpISUpYWVpnaGlqdnd4eXqFhoeIiYqU lZaXmJmapKWmp6ipqrS1tre4ubrExcbHyMnK1NXW19jZ2uTl5ufo6er09fb3+Pn6EQACAQMCBAQD BQQEBAYGBW0BAgMRBCESBTEGACITQVEHMmEUcQhCgSORFVKhYhYzCbEkwdFDcvAX4YI0JZJTGGNE 8aKyJjUZVDZFZCcKc4OTRnTC0uLyVWV1VjeEhaOzw9Pj8ykalKS0xNTk9JWltcXV5fUoR1dmOHaG lqa2xtbm9md3h5ent8fX5/dIWGh4iJiouMjY6Pg5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6vr/ 2gAMAwEAAhEDEQA/AK/vfQ/rCHr3v3Xuve/de699f999f9b3UuAQvn17r3u3Hr3Xve6H069UevXh z9Lkk2sOef6W/r7ozomXdQPmQOrqrNhUY/YD06UODzWSk8eOxGTr5D/YpKGpqG/20cbf19o5d026 EVlvYlH+mH/F9KY7C+lNI7SQ/wC1PS8oeku3cmqy0XXO7ZoypcP/AAmojXQBqJJkVeAFv+OPZa3N OwoxUbgrt6KCx/wdLU2Ddnz9GVH9IgdR8n1H2DhoWqMxt6qxkKtEjvVlUZPPYxMy3LBDf6/QH6+9 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 p1Oltz3sdyiSfVhSwrQ+Xy6Zc1sv5IR43IYjN4SryVDkImhrTkdr4DIV7RkBSKfL1eGly1ExVRZo Z42Fvr7Jv6q3Fux8XbZtHmCMfyHRrHzPtEoGi/j/AGjrPiuwvkNsPaMmzMJizt7GigXHw1eLwD4r NUpQveuGTxEtDJW5SaGRonqKpah3i9J4AsS3XLHezxNJGP4WQkD7DWv7R0uj3qxkOkXCEeoI6Bjf e7+497xYqn37mN1bjiwKTJif4ss05o0mIMuiTxLI5NuNZYqLgWHsgudru4Gp4ZYeoHRjDfQkhorg Bq+o+zpFYnIS4uSrTJ42prqSqpamM0crVNLGtc0JFFkGVAFlkoagK4VgQwFj7SKjoxMiPTPrSvlX pV9U7VKujMWBNQDX/L1mo6nbT5LG/dUFWKYilbIaXI1VAJapSOGMOxpXIAWxDAH6cezO1ksJbi1j uLQ8RVgTk+ePPq91cRPaz+FaBLqh0lWNK+VQejC7F+zyG6DuzCZHG0WVwU1NBQJRUVNFDVUi0bxy 01fjayNfNG0LaHfRrZxe97exPDdou/S3lqEjkiKqoVQARShqhGag9x4k9LLLliz3Xk+4a8mPiqkj P3VcFasBUHhio62FetqP+H7B2hR2VTBgcehAFgD4F4A4A+vvLvZYxFtW3R04RKP8vWEG6yCXcr+T yMrf4f8AY6W/s06Luve/de697917r3v3W/y69791rr3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de69791vr3v3Wuv/06/vfQ/rCHr3v3Xuve/de697917r3vfWx14/8V+n/Gveuvde/wB9/h78fzp1 rz69+P8AC/vWOt5p17j/AA+v9q31/wCQvdvL5U68a59eoNR/Defuvsfp6vP9v9P8dftpvBzr0/nT pxPG/Bq/KvSWyf8Ao9sf4p/df/p/9hf8/wCx/r7QT/uih+o8Gn9LT/l6VxfvSo8Hxq/LV0G2YHx0 If8AizbEX66i322r6G9vEpP+29k1yOT6Hxza/wAv8nRtB/WjHgi4/n/l6CDOU3wrdW/idftCIE2v DHWkhueQIKOT6ew3dp7aGvjzWwPy1f5F6Ord+fMeFFP+dP8AKegbzGF+AE03q3hjaOct+2aPH7il dZLjSY/FhJbkcWt7IJbb2naVdG4Is1caVkJr+SV6P4J/ctR/uC5X5snCnnV/ToMMjs/4My56nbGd tS0uaXJ0jCKPbe8ZJJKlZozHHI0O2HC62ADEkAX5Psgu9u9rWvYyOYGW8DjHhzFiailf0vs406EG 333uctrOLfZGa18JtWmSMDTpNf8ARPSvVv2DSlTDYpKKXzUaY+kWlmCunlpxCghfS6o6hksbMAf6 j3kLaCNbe3ETVj0ih+VBny49QPclzcTGUUk1mo9D06e1PTHXvfuvde9+691737r3Xvfuvde9+691 737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvf uvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691//9k= ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://172.31.254.243/www.awexp.com.au/irm/content/Images/pic_home3.jpg /9j/4AAQSkZJRgABAgEASABIAAD/4QWbRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdp AAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTMyBNYWNpbnRv c2gAMjAwODowMToyOCAxMDoyNDoyMgAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABg6ADAAQAAAAB AAAAFAAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA AgAAAgEABAAAAAEAAAEuAgIABAAAAAEAAARlAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG AAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN Dg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwM/8AAEQgACACgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH CAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh EjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi ZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKy gwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dX Z3eHl6e3x//aAAwDAQACEQMRAD8AtV34wsyftdlu4WO9Pa+yTBf7G7PY3c7b+ks+h/o7E+/poaJy sokgzBOhH0OW/nfR/wDVn6Px9JbJ4b/T6fLw8O3R5r11rw7muLi4vm68L6+2/Ac2trrMit4Y0WPD 3EF5ZNh2H1PoXjZ/Us/mn+l+kb1cEH+fyHD0yT7nD9LubDWO2/Q2ep731/y/p/o15Ckl6b04/wAF frOvBf8AhPsD7enTLL8mAAA3e6SQPc5xcw7d30v/AEl6f6V2v6XtJOTlSZES4wJ0do1m920f+Cf8 GvHkkPTX6f8AzVeu/wBD/nvrWRbSGN+z33usn37nu2wQfoe2p3t/fd/Of6OtaH1Sttd16gOe5w2W aFxI+j5leKpI5eH2J/3ZfNXErBx/esW9ccfl4uB9izLGHqme2++yoDKftIL/AKAss9ZrQwP9+zZ6 e9Jz+lT7crKgeZ1gf1Pz146kmjhqPzbD5eHh+WK48XFL5fml83HxfNJ9gbd00sO+7JY4F30HuO4b rtmrvofovs/+D/zP0qhkPwxU77NlZL7QW7Q+QCDPqcfu/S+mvIkk6PDxfp79eHh/9FWS4+H9C6/R 4+L/ANGfUvXyP9K//Od/el6+R/pX/wCc7+9eWpKf0f1Wt+s/r/i+pevkf6V/+c7+9L18j/Sv/wA5 3968tSS9H9VX6z+v+L6l6+R/pX/5zv70vXyP9K//ADnf3ry1JL0f1VfrP6/4vqXr5H+lf/nO/vU6 LrzfVNj/AOcZ+c794ea8qSQlwUfl2TD3OKPz7ju//9n/7SJEUGhvdG9zaG9wIDMuMAA4QklNBCUA AAAAABAAAAAAAAAAAAAAAAAAAAAAOEJJTQPqAAAAABf/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNv ZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIHBsaXN0IFBVQkxJQyAiLS8vQXBwbGUvL0RURCBQTElT VCAxLjAvL0VOIiAiaHR0cDovL3d3dy5hcHBsZS5jb20vRFREcy9Qcm9wZXJ0eUxpc3QtMS4wLmR0 ZCI+CjxwbGlzdCB2ZXJzaW9uPSIxLjAiPgo8ZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBh Z2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5w cmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwv c3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8 YXJyYXk+CgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUhv cml6b250YWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUu cHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI+MDwvaW50ZWdlcj4KCQkJ PC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9y bWF0LlBNT3JpZW50YXRpb248L2tleT4KCTxkaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp Y2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+ CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4K CQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNT3JpZW50YXRp b248L2tleT4KCQkJCTxpbnRlZ2VyPjE8L2ludGVnZXI+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmlu dC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2Rp Y3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQu UE1TY2FsaW5nPC9rZXk+Cgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3Jl YXRvcjwva2V5PgoJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk+ Y29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk+CgkJCTxkaWN0 PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVNjYWxpbmc8L2tleT4KCQkJ CTxyZWFsPjE8L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFn PC9rZXk+CgkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwv ZGljdD4KCTxrZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFJlczwva2V5 PgoJPGRpY3Q+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8 c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmlu dC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk+Y29t LmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFJlczwva2V5PgoJCQkJPHJlYWw+NzI8 L3JlYWw+CgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJ CQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQk8L2RpY3Q+CgkJPC9hcnJheT4KCTwvZGljdD4KCTxr ZXk+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1WZXJ0aWNhbFNjYWxpbmc8L2tleT4KCTxk aWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJPHN0cmlu Zz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlj a2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q+CgkJCQk8a2V5PmNvbS5hcHBs ZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk+CgkJCQk8cmVhbD4xPC9y ZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJ PGludGVnZXI+MDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk+Cgk8L2RpY3Q+Cgk8a2V5 PmNvbS5hcHBsZS5wcmludC5zdWJUaWNrZXQucGFwZXJfaW5mb190aWNrZXQ8L2tleT4KCTxkaWN0 PgoJCTxrZXk+UE1QUERQYXBlckNvZGVOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFw cGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRp Y2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9r ZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+UE1QUERQYXBlckNvZGVOYW1lPC9r ZXk+CgkJCQkJPHN0cmluZz5BNDwvc3RyaW5nPgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRp Y2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0 PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQk8 ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0 cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50 LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5Q TVRpb2dhUGFwZXJOYW1lPC9rZXk+CgkJCQkJPHN0cmluZz5pc28tYTQ8L3N0cmluZz4KCQkJCQk8 a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+ MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20u YXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQk8ZGljdD4K CQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5j b20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl dC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBw bGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJCQk8YXJyYXk+ CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJCQkJCQk8cmVh bD43ODM8L3JlYWw+CgkJCQkJCTxyZWFsPjU1OTwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxr ZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4w PC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5h cHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4K CQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5j b20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tl dC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q+CgkJCQkJPGtleT5jb20uYXBw bGUucHJpbnQuUGFnZUZvcm1hdC5QTUFkanVzdGVkUGFwZXJSZWN0PC9rZXk+CgkJCQkJPGFycmF5 PgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJl YWw+ODI0PC9yZWFsPgoJCQkJCQk8cmVhbD41Nzc8L3JlYWw+CgkJCQkJPC9hcnJheT4KCQkJCQk8 a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk+CgkJCQkJPGludGVnZXI+ MDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q+CgkJPGtleT5jb20u YXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk+CgkJPGRpY3Q+CgkJCTxrZXk+ Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxzdHJpbmc+Y29tLmFwcGxl LmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFy cmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50 LlBhcGVySW5mby5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc+aXNvLWE0PC9zdHJpbmc+ CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxp bnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+CgkJPC9kaWN0PgoJCTxr ZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJ CTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8 c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJp bnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk+CgkJCQk8ZGljdD4KCQkJCQk8a2V5 PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFnZVJlY3Q8L2tleT4KCQkJ CQk8YXJyYXk+CgkJCQkJCTxyZWFsPjAuMDwvcmVhbD4KCQkJCQkJPHJlYWw+MC4wPC9yZWFsPgoJ CQkJCQk8cmVhbD43ODM8L3JlYWw+CgkJCQkJCTxyZWFsPjU1OTwvcmVhbD4KCQkJCQk8L2FycmF5 PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8 aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8 a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1VbmFkanVzdGVkUGFwZXJSZWN0PC9rZXk+ CgkJPGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJ CTxzdHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5w cmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxr ZXk+Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4K CQkJCQk8YXJyYXk+CgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw+LTE4PC9yZWFs PgoJCQkJCQk8cmVhbD44MjQ8L3JlYWw+CgkJCQkJCTxyZWFsPjU3NzwvcmVhbD4KCQkJCQk8L2Fy cmF5PgoJCQkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJ CQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4K CQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8ucHBkLlBNUGFwZXJOYW1lPC9rZXk+CgkJ PGRpY3Q+CgkJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk+CgkJCTxz dHJpbmc+Y29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmlu dC50aWNrZXQuaXRlbUFycmF5PC9rZXk+CgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk+ Y29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQkJCQk8c3Ry aW5nPkE0PC9zdHJpbmc+CgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxh Zzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI+CgkJCQk8L2RpY3Q+CgkJCTwvYXJyYXk+ CgkJPC9kaWN0PgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC5BUElWZXJzaW9uPC9rZXk+ CgkJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJCTxrZXk+Y29tLmFwcGxlLnByaW50LnRpY2tldC50 eXBlPC9rZXk+CgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvVGlja2V0PC9zdHJp bmc+Cgk8L2RpY3Q+Cgk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5 PgoJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnR5 cGU8L2tleT4KCTxzdHJpbmc+Y29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXRUaWNrZXQ8L3N0cmlu Zz4KPC9kaWN0Pgo8L3BsaXN0PgoAOEJJTQPtAAAAAAAQAEgAAAABAAIASAAAAAEAAjhCSU0EJgAA AAAADgAAAAAAAAAAAAA/gAAAOEJJTQQNAAAAAAAEAAAAeDhCSU0EGQAAAAAABAAAAB44QklNA/MA AAAAAAkAAAAAAAAAAAEAOEJJTQQKAAAAAAABAAA4QklNJxAAAAAAAAoAAQAAAAAAAAACOEJJTQP1 AAAAAABIAC9mZgABAGxmZgAGAAAAAAABAC9mZgABAKGZmgAGAAAAAAABADIAAAABAFoAAAAGAAAA AAABADUAAAABAC0AAAAGAAAAAAABOEJJTQP4AAAAAABwAAD///////////////////////////// A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D 6AAAAAD/////////////////////////////A+gAADhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAA AAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANHAAAABgAAAAAAAAAAAAAAFAAAAYMAAAAJAHAA aQBjAF8AaABvAG0AZQAzAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAGDAAAAFAAA AAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAbnVsbAAAAAIAAAAG Ym91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcA AAAAAAAAAEJ0b21sb25nAAAAFAAAAABSZ2h0bG9uZwAAAYMAAAAGc2xpY2VzVmxMcwAAAAFPYmpj AAAAAQAAAAAABXNsaWNlAAAAEgAAAAdzbGljZUlEbG9uZwAAAAAAAAAHZ3JvdXBJRGxvbmcAAAAA AAAABm9yaWdpbmVudW0AAAAMRVNsaWNlT3JpZ2luAAAADWF1dG9HZW5lcmF0ZWQAAAAAVHlwZWVu dW0AAAAKRVNsaWNlVHlwZQAAAABJbWcgAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQA AAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAABQAAAAAUmdodGxv bmcAAAGDAAAAA3VybFRFWFQAAAABAAAAAAAAbnVsbFRFWFQAAAABAAAAAAAATXNnZVRFWFQAAAAB AAAAAAAGYWx0VGFnVEVYVAAAAAEAAAAAAA5jZWxsVGV4dElzSFRNTGJvb2wBAAAACGNlbGxUZXh0 VEVYVAAAAAEAAAAAAAlob3J6QWxpZ25lbnVtAAAAD0VTbGljZUhvcnpBbGlnbgAAAAdkZWZhdWx0 AAAACXZlcnRBbGlnbmVudW0AAAAPRVNsaWNlVmVydEFsaWduAAAAB2RlZmF1bHQAAAALYmdDb2xv clR5cGVlbnVtAAAAEUVTbGljZUJHQ29sb3JUeXBlAAAAAE5vbmUAAAAJdG9wT3V0c2V0bG9uZwAA AAAAAAAKbGVmdE91dHNldGxvbmcAAAAAAAAADGJvdHRvbU91dHNldGxvbmcAAAAAAAAAC3JpZ2h0 T3V0c2V0bG9uZwAAAAAAOEJJTQQoAAAAAAAMAAAAAT/wAAAAAAAAOEJJTQQUAAAAAAAEAAAAAzhC SU0EDAAAAAAEgQAAAAEAAACgAAAACAAAAeAAAA8AAAAEZQAYAAH/2P/gABBKRklGAAECAABIAEgA AP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBELCgsRFQ8MDA8V GBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4O DhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgA CACgAwEiAAIRAQMRAf/dAAQACv/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUB AQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJx gTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePz RieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIEBAMEBQYHBwYF NQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNU oxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x//a AAwDAQACEQMRAD8AtV34wsyftdlu4WO9Pa+yTBf7G7PY3c7b+ks+h/o7E+/poaJysokgzBOhH0OW /nfR/wDVn6Px9JbJ4b/T6fLw8O3R5r11rw7muLi4vm68L6+2/Ac2trrMit4Y0WPD3EF5ZNh2H1Po XjZ/Us/mn+l+kb1cEH+fyHD0yT7nD9LubDWO2/Q2ep731/y/p/o15Ckl6b04/wAFfrOvBf8AhPsD 7enTLL8mAAA3e6SQPc5xcw7d30v/AEl6f6V2v6XtJOTlSZES4wJ0do1m920f+Cf8GvHkkPTX6f8A zVeu/wBD/nvrWRbSGN+z33usn37nu2wQfoe2p3t/fd/Of6OtaH1Sttd16gOe5w2WaFxI+j5leKpI 5eH2J/3ZfNXErBx/esW9ccfl4uB9izLGHqme2++yoDKftIL/AKAss9ZrQwP9+zZ6e9Jz+lT7crKg eZ1gf1Pz146kmjhqPzbD5eHh+WK48XFL5fml83HxfNJ9gbd00sO+7JY4F30HuO4brtmrvofovs/+ D/zP0qhkPwxU77NlZL7QW7Q+QCDPqcfu/S+mvIkk6PDxfp79eHh/9FWS4+H9C6/R4+L/ANGfUvXy P9K//Od/el6+R/pX/wCc7+9eWpKf0f1Wt+s/r/i+pevkf6V/+c7+9L18j/Sv/wA53968tSS9H9VX 6z+v+L6l6+R/pX/5zv70vXyP9K//ADnf3ry1JL0f1VfrP6/4vqXr5H+lf/nO/vU6LrzfVNj/AOcZ +c794ea8qSQlwUfl2TD3OKPz7ju//9kAOEJJTQQhAAAAAABVAAAAAQEAAAAPAEEAZABvAGIAZQAg AFAAaABvAHQAbwBzAGgAbwBwAAAAEwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAgAEMA UwAzAAAAAQA4QklNBAYAAAAAAAcACAAAAAEBAP/hDvlodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x LjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+ IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBD b3JlIDQuMS1jMDM2IDQ2LjI3NjcyMCwgTW9uIEZlYiAxOSAyMDA3IDIyOjEzOjQzICAgICAgICAi PiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5 bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczpkYz0iaHR0cDov L3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2JlLmNv bS94YXAvMS4wLyIgeG1sbnM6eGFwTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8i IHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1s bnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iIHhtbG5zOmV4aWY9Imh0dHA6 Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHhhcDpDcmVh dG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTMyBNYWNpbnRvc2giIHhhcDpDcmVhdGVEYXRlPSIy MDA4LTAxLTI4VDEwOjIwOjI0KzExOjAwIiB4YXA6TW9kaWZ5RGF0ZT0iMjAwOC0wMS0yOFQxMDoy NDoyMisxMTowMCIgeGFwOk1ldGFkYXRhRGF0ZT0iMjAwOC0wMS0yOFQxMDoyNDoyMisxMTowMCIg eGFwTU06RG9jdW1lbnRJRD0idXVpZDo2MzUzMjhGNTFDQ0ZEQzExOTRDQkJCM0E3NkM3RjVEQSIg eGFwTU06SW5zdGFuY2VJRD0idXVpZDo3QUU5QUI4NDFEQ0ZEQzExOTRDQkJCM0E3NkM3RjVEQSIg cGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5 NjYtMi4xIiBwaG90b3Nob3A6SGlzdG9yeT0iIiB0aWZmOk9yaWVudGF0aW9uPSIxIiB0aWZmOlhS ZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAiIHRpZmY6WVJlc29sdXRpb249IjcyMDAwMC8xMDAwMCIg dGlmZjpSZXNvbHV0aW9uVW5pdD0iMiIgdGlmZjpOYXRpdmVEaWdlc3Q9IjI1NiwyNTcsMjU4LDI1 OSwyNjIsMjc0LDI3NywyODQsNTMwLDUzMSwyODIsMjgzLDI5NiwzMDEsMzE4LDMxOSw1MjksNTMy LDMwNiwyNzAsMjcxLDI3MiwzMDUsMzE1LDMzNDMyOzUyMkY2NzQ5MTkzMkQwMThBQkE1Mjk2RTgy NEU3QjVEIiBleGlmOlBpeGVsWERpbWVuc2lvbj0iMzg3IiBleGlmOlBpeGVsWURpbWVuc2lvbj0i MjAiIGV4aWY6Q29sb3JTcGFjZT0iMSIgZXhpZjpOYXRpdmVEaWdlc3Q9IjM2ODY0LDQwOTYwLDQw OTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0 LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3 MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2 LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQx OTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1 LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwy MCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDs4MTgyMjU0RTE2MkFENENCNUExRTk0NTNCMDEzODJD OCIvPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDw/eHBhY2tldCBlbmQ9InciPz7/4gxYSUNDX1BST0ZJ TEUAAQEAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMg c1JHQgAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAA ABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAAC VAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFz AAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0 ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAA AAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNR AAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAA AGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3 LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERl ZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERl ZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAA AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA AAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAA AAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAA AABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkA XgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDr APAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEB qQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKi AqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD 7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3 BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08H YQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmP CaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIM KgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8J DyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUS ZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYD FiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQa KhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6U Hr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2Yj lCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijU KQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIu ty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTY NRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7 qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1 QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdK fUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8 UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVb RVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RA ZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbblu Em5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gR eG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC 9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/ jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ /JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYa poum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKz OLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBw wOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbO ts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q 3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vs hu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH /Jj9Kf26/kv+3P9t////7gAOQWRvYmUAZEAAAAAB/9sAhAABAQEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAgICAgICAgICAgIDAwMDAwMDAwMDAQEBAQEBAQEBAQECAgEC AgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwP/wAARCAAU AYMDAREAAhEBAxEB/90ABAAx/8QBogAAAAYCAwEAAAAAAAAAAAAABwgGBQQJAwoCAQALAQAABgMB AQEAAAAAAAAAAAAGBQQDBwIIAQkACgsQAAIBAwQBAwMCAwMDAgYJdQECAwQRBRIGIQcTIgAIMRRB MiMVCVFCFmEkMxdScYEYYpElQ6Gx8CY0cgoZwdE1J+FTNoLxkqJEVHNFRjdHYyhVVlcassLS4vJk g3SThGWjs8PT4yk4ZvN1Kjk6SElKWFlaZ2hpanZ3eHl6hYaHiImKlJWWl5iZmqSlpqeoqaq0tba3 uLm6xMXGx8jJytTV1tfY2drk5ebn6Onq9PX29/j5+hEAAgEDAgQEAwUEBAQGBgVtAQIDEQQhEgUx BgAiE0FRBzJhFHEIQoEjkRVSoWIWMwmxJMHRQ3LwF+GCNCWSUxhjRPGisiY1GVQ2RWQnCnODk0Z0 wtLi8lVldVY3hIWjs8PT4/MpGpSktMTU5PSVpbXF1eX1KEdXZjh2hpamtsbW5vZnd4eXp7fH1+f3 SFhoeIiYqLjI2Oj4OUlZaXmJmam5ydnp+So6SlpqeoqaqrrK2ur6/9oADAMBAAIRAxEAPwAcPkJ3 z3pj+/8AvbHY/u3uDH0GP7p7WoKGgoOzd70dDQUVJv7cFPRUNFSU+djp6Oko6eJY44o1WOONAqgK APfUvkP2t5Bv+R+Ur+85YtZLqXb4HdiG1MxiUsx7qVJJOOvn891/eb3N233O592+w5suEsod3u0j QeHRUWeRVAqhOABSpPSoo9u/OOt2bR7yg7h7MK5LZ03Y2L2i/wAhc2nYuV68hgqKqTeuN2K27xuC swTUdLJURusPklplMyI0YLAL3X+sjZ7rPt0/KEa2sE7Qvc+GfpllQVMbSmbDA0UjT8bBa16Edg/3 h9w2ix3GLnOT6q5hSWK2qPqJInppkWP6c1QrVqhvhVjwHQVb47C+WXXGbqcBvDtnvfE5CjlpqZ5B 2pv2sxc9VV0FNkoaahzFJuCbFZCqFHVozxwTO6E2YAggDDYeTvZzmGzivdu5esmSSPxAvdrVSaAs oc0UkYPn0COYufffflm8lsdz5lvVlSQpWiULAVoCYhU/l0wTdz/J+nrFx1R2z8h6fIvFFOmOn332 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 /rbf0v7P98/4dX5/l1//2Q== ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: image/jpeg Content-Transfer-Encoding: base64 Content-Location: http://172.31.254.241/www.awexp.com.au/irm/content/Images/pic_home1.jpg /9j/4AAQSkZJRgABAgEASABIAAD/4RM2RXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUA AAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAcAAAAcgEyAAIAAAAUAAAAjodp AAQAAAABAAAApAAAANAACvyAAAAnEAAK/IAAACcQQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dz ADIwMDk6MDM6MDUgMDk6MTc6MTQAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABa6ADAAQAAAAB AAABowAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEA AgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABIAAAAAAAAAAEgAAAABAAAASAAAAAH/2P/gABBKRklG AAECAABIAEgAAP/tAAxBZG9iZV9DTQAB/+4ADkFkb2JlAGSAAAAAAf/bAIQADAgICAkIDAkJDBEL CgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsN Dg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM DAwM/8AAEQgAoACLAwEiAAIRAQMRAf/dAAQACf/EAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYH CAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQh EjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXi ZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5/cRAAICAQIE BAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKy gwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14/NGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dX Z3eHl6e3x//aAAwDAQACEQMRAD8AykkklqucpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJS kkkklP8A/9DKSSSWq5ykkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/0cpJJJar nKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/SykkklqucpJJJJSkkkklKSSSS UpJJJJSkkkklKSSSSUpJJJJSkkkySn//08pJJJarnKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklK SSSSUpMnTJKf/9TJSUoS2rVc5ZJOGayfkpFpA8UE0GEFKCpfJS2EkBK0UjTIrqiP4qOxFTBJS2pt qSlklLaltSUskpbSkGpKYpKexLYgpgmgom1NtKSn/9XP2jzS2InppwyFquaj2JxWitaphoStKEM7 xwjV1ta3a0R/r5pwEQMPITJLo2ELTXZZBJBHte08g+Ef9QiHCp9NpcXB5BPt4ABPuLXf+TUm4zXO 3OaCeJICm6p8hwh8GQ18wPg5pFn/AEnqjzEeZEf1U/UK9Ud/T3hL0upyuTk5TPvw9Bv0y9UY8X7u SPri07MG6sF+0uqGosGojxP7n9pCFa2XgkOsqJa4Rta09gJP0/f/ANWqFlgkOdWX7pm2mImfz637 Pd/Kq/zFHg+KSB4Oah7ch+mL4f8AChL5V3MfBwY+5yc/diT/ADZIMv8AAnH52t6af01ctxrKoLh7 XiWOBBBHyQ9gWnGcZREokSidQRqHJnjlCRjIGMo6GJ3Qemih1BO2ysNcBzU7afj6VnqM/wAz01Jw Y0S4ho8ToPxWgcn0vq9juLG3Y4yrxdjuZtL2xW9r68j+kY+VX/gHsZ6dn+G/RqLNKIAJBOtek8Mt e3CvxRJJAIGl+oXHRymsJ3bgNojaQfEnlL02q9k4T8bKyMRx91W4ajWG/pGb9ns3vrVcUPPkljyR PFUro9fJU8chVirQbQm2hWmYV9rxXS02WOMNa0Ek/ci/sp0x9opmdv0xHqRu9Ddu2bv+E/mPU/Q+ t636NO92N8N6/wAt0e3KrrR//9avtThpVnGa12TSDBDrGAgiQQXNBCiIhal6051IQxx7FS9N3gjA tlOyxj2h7dWnj5aIGWtdSkR0vojbUZ1Rm6aJecaJ0yVlfGguCpblBIFR0vtmeFEOc1wcIO3sROn5 zf7SeUHJyK8es2WuDGNBLnngAff7nf4Nm1NlGEh64iQ/rC18MmSBvHKUJf1TwuP03pL8brGZe6wW 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 /wBGmxzrLP1aymv/AIL/AAyxerWu+1DLe0+nYyvdYxjf5yuqtl9bDuuq9Wt7ff8A6Pf+lUsyj619 S6bkHPc+o4db78nGur2bqm7PSfW5lXue7dlP2W7Gfq6t/WLp31kzMjb05ld3TKCW49Fba6/T2xX6 Q9rLH+xjHfSThkl6RL2hxGUiRL0+nh2kj24+ojjO0fl7/wBVpN6n6GJTih/q4+XkVXZ1G1rWtdLm uPsZuZsa71PpLMbVjm/NrDjc0WE0XGC5wD3Q8uLd/wClZ73qX7I+sJdYy2k0Prqfc8WtAPpVtc+W gN2/4K70v9Ns2JOwH1Wmo5DDWa67mWlrmGxtjfVZtr2eoz6ez/rfs/Qqbj9N+kjuDxMYhrXq+o4X V6Jj4t2dVWI9M1tksDdHQ31toc19e/d/hNm//CfTXbfsbC49XK2Ru9P7Rbt8dv0t231/1n6XqfaP +B/QrgPq68NyC4f6Qkdj/g3/AMF6bubHy/ipL/SrpbHWvDfV/9n/7Rg8UGhvdG9zaG9wIDMuMAA4 QklNBAQAAAAAAAccAgAAAgAAADhCSU0EJQAAAAAAEOjxXPMvwRihontnrcVk1bo4QklNBC8AAAAA AErALQEASAAAAEgAAAAAAAAAAAAAANACAABAAgAAAAAAAAAAAAAYAwAAZAIAAAABwAMAALAEAAAB AA8nAQBwAGcAAABqAHAAZwAAADhCSU0D7QAAAAAAEABIAAAAAQACAEgAAAABAAI4QklNBCYAAAAA AA4AAAAAAAAAAAAAP4AAADhCSU0EDQAAAAAABAAAAHg4QklNBBkAAAAAAAQAAAAeOEJJTQPzAAAA AAAJAAAAAAAAAAABADhCSU0ECgAAAAAAAQAAOEJJTScQAAAAAAAKAAEAAAAAAAAAAjhCSU0D9QAA AAAASAAvZmYAAQBsZmYABgAAAAAAAQAvZmYAAQChmZoABgAAAAAAAQAyAAAAAQBaAAAABgAAAAAA AQA1AAAAAQAtAAAABgAAAAAAAThCSU0D+AAAAAAAcAAA/////////////////////////////wPo AAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gA AAAA/////////////////////////////wPoAAA4QklNBAgAAAAAABAAAAABAAACQAAAAkAAAAAA OEJJTQQeAAAAAAAEAAAAADhCSU0EGgAAAAADRwAAAAYAAAAAAAAAAAAAAaMAAAFrAAAACQBwAGkA YwBfAGgAbwBtAGUAMQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABawAAAaMAAAAA AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJv dW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAA AAAAAABCdG9tbG9uZwAAAaMAAAAAUmdodGxvbmcAAAFrAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAA AAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAA AAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVt AAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAA AFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAGjAAAAAFJnaHRsb25n AAABawAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAA AAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRF WFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAA AAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JU eXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAA AAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91 dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE/8AAAAAAAADhCSU0EFAAAAAAABAAAAAM4QklN BAwAAAAAEhwAAAABAAAAiwAAAKAAAAGkAAEGgAAAEgAAGAAB/9j/4AAQSkZJRgABAgAASABIAAD/ 7QAMQWRvYmVfQ00AAf/uAA5BZG9iZQBkgAAAAAH/2wCEAAwICAgJCAwJCQwRCwoLERUPDAwPFRgT ExUTExgRDAwMDAwMEQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBDQsLDQ4NEA4OEBQODg4U FA4ODg4UEQwMDAwMEREMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDP/AABEIAKAA iwMBIgACEQEDEQH/3QAEAAn/xAE/AAABBQEBAQEBAQAAAAAAAAADAAECBAUGBwgJCgsBAAEFAQEB AQEBAAAAAAAAAAEAAgMEBQYHCAkKCxAAAQQBAwIEAgUHBggFAwwzAQACEQMEIRIxBUFRYRMicYEy BhSRobFCIyQVUsFiMzRygtFDByWSU/Dh8WNzNRaisoMmRJNUZEXCo3Q2F9JV4mXys4TD03Xj80Yn lKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3EQACAgECBAQDBAUGBwcGBTUB AAIRAyExEgRBUWFxIhMFMoGRFKGxQiPBUtHwMyRi4XKCkkNTFWNzNPElBhaisoMHJjXC0kSTVKMX ZEVVNnRl4vKzhMPTdePzRpSkhbSVxNTk9KW1xdXl9VZmdoaWprbG1ub2JzdHV2d3h5ent8f/2gAM AwEAAhEDEQA/AMpJJJarnKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJT/AP/Qykkk lqucpJJJJSkkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklP8A/9HKSSSWq5ykkkklKSSSSUpJ JJJSkkkklKSSSSUpJJJJSkkkklKSSSSU/wD/0spJJJarnKSSSSUpJJJJSkkkklKSSSSUpJJJJSkk kklKSSSSUpJJMkp//9PKSSSWq5ykkkklKSSSSUpJJJJSkkkklKSSSSUpJJJJSkkkklKTJ0ySn//U yUlKEtq1XOWSThmsn5KRaQPFBNBhBSgqXyUthJAStFI0yK6oj+KjsRUwSUtqbakpZJS2pbUlLJKW 0pBqSmKSnsS2IKYJoKJtTbSkp//Vz9o80tiJ6acMharmo9icVorWqYaErShDO8cI1dbWt2tEf6+a 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 ZLA3R0N9baHNfXv3f4TZv/wn01237GwuPVytkbvT+0W7fHb9Ldt9f9Z+l6n2j/gf0K4D6uvDcguH +kJHY/4N/wDBem7mx8v4qS/0q6Wx1rw31f/ZOEJJTQQhAAAAAABVAAAAAQEAAAAPAEEAZABvAGIA ZQAgAFAAaABvAHQAbwBzAGgAbwBwAAAAEwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAg AEMAUwAzAAAAAQA4QklNBAYAAAAAAAcACAAAAAEBAP/hDvhodHRwOi8vbnMuYWRvYmUuY29tL3hh cC8xLjAvADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlk Ij8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhN UCBDb3JlIDQuMS1jMDM2IDQ2LjI3NjcyMCwgTW9uIEZlYiAxOSAyMDA3IDIyOjQwOjA4ICAgICAg ICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm LXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczpkYz0iaHR0 cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhhcD0iaHR0cDovL25zLmFkb2Jl LmNvbS94YXAvMS4wLyIgeG1sbnM6eGFwTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9t bS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIg eG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iIHhtbG5zOmV4aWY9Imh0 dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHhhcDpD cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dzIiB4YXA6Q3JlYXRlRGF0ZT0i MjAwOC0wMS0yOFQxMDoxNDozMisxMTowMCIgeGFwOk1vZGlmeURhdGU9IjIwMDktMDMtMDVUMDk6 MTc6MTQrMTE6MDAiIHhhcDpNZXRhZGF0YURhdGU9IjIwMDktMDMtMDVUMDk6MTc6MTQrMTE6MDAi IHhhcE1NOkRvY3VtZW50SUQ9InV1aWQ6QzQzMjUwODAxQUNGREMxMTk0Q0JCQjNBNzZDN0Y1REEi IHhhcE1NOkluc3RhbmNlSUQ9InV1aWQ6RTZGRTJFMUIwQTA5REUxMUFDNTNDQ0NCRjAxRjYxOUEi IHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYx OTY2LTIuMSIgcGhvdG9zaG9wOkhpc3Rvcnk9IiIgdGlmZjpPcmllbnRhdGlvbj0iMSIgdGlmZjpY UmVzb2x1dGlvbj0iNzIwMDAwLzEwMDAwIiB0aWZmOllSZXNvbHV0aW9uPSI3MjAwMDAvMTAwMDAi IHRpZmY6UmVzb2x1dGlvblVuaXQ9IjIiIHRpZmY6TmF0aXZlRGlnZXN0PSIyNTYsMjU3LDI1OCwy NTksMjYyLDI3NCwyNzcsMjg0LDUzMCw1MzEsMjgyLDI4MywyOTYsMzAxLDMxOCwzMTksNTI5LDUz MiwzMDYsMjcwLDI3MSwyNzIsMzA1LDMxNSwzMzQzMjs2Qjg0MjMzQkQ2M0U5RkE3NjNFMzNDNEE0 OEU3MTlBQiIgZXhpZjpQaXhlbFhEaW1lbnNpb249IjM2MyIgZXhpZjpQaXhlbFlEaW1lbnNpb249 IjQxOSIgZXhpZjpDb2xvclNwYWNlPSIxIiBleGlmOk5hdGl2ZURpZ2VzdD0iMzY4NjQsNDA5NjAs NDA5NjEsMzcxMjEsMzcxMjIsNDA5NjIsNDA5NjMsMzc1MTAsNDA5NjQsMzY4NjcsMzY4NjgsMzM0 MzQsMzM0MzcsMzQ4NTAsMzQ4NTIsMzQ4NTUsMzQ4NTYsMzczNzcsMzczNzgsMzczNzksMzczODAs MzczODEsMzczODIsMzczODMsMzczODQsMzczODUsMzczODYsMzczOTYsNDE0ODMsNDE0ODQsNDE0 ODYsNDE0ODcsNDE0ODgsNDE0OTIsNDE0OTMsNDE0OTUsNDE3MjgsNDE3MjksNDE3MzAsNDE5ODUs NDE5ODYsNDE5ODcsNDE5ODgsNDE5ODksNDE5OTAsNDE5OTEsNDE5OTIsNDE5OTMsNDE5OTQsNDE5 OTUsNDE5OTYsNDIwMTYsMCwyLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4 LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDMwOzIyNjlFMTA5OERBMzg5QjIyQURGRDVDNDhBNjVB NTZCIi8+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPD94cGFja2V0IGVuZD0idyI/Pv/iDFhJQ0NfUFJP RklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElF QyBzUkdCAAAAAAAAAAAAAAABAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHw AAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQA AAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1l YXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAI DHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNj AAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA 81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAA AAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93 d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEg RGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEg RGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNj AAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAA AAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFla IAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcg AAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQA WQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADl AOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoB oQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKY AqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD 4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVn BXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0H TwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5 CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kM EgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7u DwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYS RRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXg FgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0a BBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5q HpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgj ZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSii KNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwu gi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSe NNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07 azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJy QrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBK N0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIx UnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa 9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2Pr ZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBt uW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3Vnez eBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCC koL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Y jf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZ kJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWp phqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuy wrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1 wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXO Ns62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK 3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr ++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3 /Af8mP0p/br+S/7c/23////uAA5BZG9iZQBkQAAAAAH/2wCEAAEBAQEBAQEBAQEBAQEBAQEBAQEB AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECAgICAgICAgICAgMDAwMDAwMDAwMBAQEBAQEBAQEBAQIC AQICAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA//AABEI AaMBawMBEQACEQEDEQH/3QAEAC7/xAGiAAAABgIDAQAAAAAAAAAAAAAHCAYFBAkDCgIBAAsBAAAG AwEBAQAAAAAAAAAAAAYFBAMHAggBCQAKCxAAAgEDBAEDAwIDAwMCBgl1AQIDBBEFEgYhBxMiAAgx FEEyIxUJUUIWYSQzF1JxgRhikSVDobHwJjRyChnB0TUn4VM2gvGSokRUc0VGN0djKFVWVxqywtLi 8mSDdJOEZaOzw9PjKThm83UqOTpISUpYWVpnaGlqdnd4eXqFhoeIiYqUlZaXmJmapKWmp6ipqrS1 tre4ubrExcbHyMnK1NXW19jZ2uTl5ufo6er09fb3+Pn6EQACAQMCBAQDBQQEBAYGBW0BAgMRBCES BTEGACITQVEHMmEUcQhCgSORFVKhYhYzCbEkwdFDcvAX4YI0JZJTGGNE8aKyJjUZVDZFZCcKc4OT RnTC0uLyVWV1VjeEhaOzw9Pj8ykalKS0xNTk9JWltcXV5fUoR1dmOHaGlqa2xtbm9md3h5ent8fX 5/dIWGh4iJiouMjY6Pg5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6vr/2gAMAwEAAhEDEQA/AK/v fQ/rCHr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r//0K/vfQ/rCHr3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r// 0a/vfQ/rCHr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r//0iBuSskgGiyu3+6kAHJ4HFre8/beFnghYzya ior3HjTrC2eb9V9ESAVP4R11qb/m3+q/+bH0/wBt+n/D2/8ATn/fsnD+I8emvGP++k4enXHW3+0f 9S159++mfP6z/wC9HrXjHP6afs69qb+qf9S1/wCKe7/Tj/fsn+9HrfjZr4afs65am/5t/pt/mx9f 9t+r/H3T6c/79k4/xHh17xj/AL6Tj6dcS7f7R/1LX/ePe1t+0apZK/6Y9a8Y4/TT9nXtbf1T/qWv 09++mP8Av2Th/EePXvGP8Cfs65am/wCbf6r/AObH0/236f8AD3r6c/79k4fxHj1vxj/vpOHp1x1t x+jj6/tDn/eOfe/pjn9WT5dx614xz+mn7Ovam/2j/qWv19++nP8Av2Tj/EeHXvF/4Wn7Ovam/wBo /wCpa/X376c/79k4/wAR4de8X/hafs69rbn9HP0/aHH+8ce/fTHH6snz7j17xjj9NP2de1H+kf6r /wCaT/inv307f79k4fxHj1rxf+FJ+zr2pv8Aaf8AqWvvwtzmsj8P4j1symuYk/Z14O3+0f8AUtf9 59+a37Tplkr/AKY9e8Y5/TT9nXLU3/Nv9Nv82Pr/ALb9X+PvX05/37Jx/iPDrfjH/fScfTrjqb+q f9S1/wCKe7/Tj/fsn+9Hr3jZr4afs69rb/aP+pa8e6fTPj9Z/wDej1rxjj9NP2dctTf82/1X/wA2 Pp/tv0/4e/fTn/fsnD+I8et+Mf8AfScPTrjrb/aP+pa8+/fTPn9Z/wDej1rxjn9NP2ddam/2j/qW v/FPd/px/v2T/ej17xf+FJ+zrlqb/aP+pa/X3T6c/wC/ZOP8R4db8Y/76Tj6dcdTf7R/1LX/AIp7 v9OP9+yf70eteL/wpP2dd6m/qn/Utf8Ainv304/37J/vR6342KeGn7OuWpv+bf6r/wCbH0/236f8 PdPpz/v2Th/EePXvGP8AvpOHp1x1N/tH/Utfdjb4NJZK/wCmPWvHOf0kx/R69qb/AGn/AKlr719O 3cBM/H+I9b8Zv98p/vPXLU3/ADb/AE2/zY+v+2/V/j719Of9+ycf4jw694x/30nH064625/Rz9P2 hx/vHHvf0xx+rJ8+49a8Y4/TT9nXtbf1T/qWv09++mP+/ZOH8R49e8Y/wJ+zr2tv6p/1LX6e/fTH /fsnD+I8eveMf4E/Z17W3H6OPr+0Of8AeOffvpjn9WT5dx694xz+mn7OuWpv+bf6bf5sfX/bfq/x 96+nP+/ZOP8AEeHW/GP++k4+nXHU3+0f9S1+vvf05/37Jx/iPDrXi/8AC0/Z14u3+0f9S1/3j35b ftGqWSv+mPXvGOP00/Z1y1N/zb/Vf/Nj6f7b9P8Ah719Of8AfsnD+I8et+Mf99Jw9OuOpv6p/wBS 1/4p7v8ATj/fsn+9Hr3jYp4afs661N/tH/Utf+Ke/fTj/fsn+9HrXi/8KT9nXLU3+0f9S1+vun05 /wB+ycf4jw634x/30nH0646m/wBo/wCpY93+nH+/ZP8Aej14zN5Rx1/0vXeprf2P+pa+6C1Oqpnk /wB6PVRKaCsafs69qb/aP+SF97Nv8VJpNNP4j1bxj/vtOHoOva2/2j/qWvPvX0z5/Wf/AHo9a8Y5 /TT9nXtTf1T/AKlr/wAU93+nH+/ZP96PW/GzXw0/Z1y1N/zb/Tb/ADY+v+2/V/j7p9Of9+ycf4jw 694x/wB9Jx9OuOpv9p/6lp739O3+/X/3o9V8U/76T9nX/9MgU3+df/gx99B7T/cW3/0g/wAHWE8/ 9tJ9vWP2o6Z697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuv/UIFN/nX/4MffQe0/3Ft/9IP8AB1hPP/bSfb1j9qOm eve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3 Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r/1SBTf51/+DH30HtP9xbf/SD/AAdYTz/20n29cP8Aint6q+or0wGJ ag4U6692631737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+ 691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3X/1iBzf52T/g3voRa/7jQ/6UdYTT/2r/b1i9v1Bqa5r011737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvdf/XIHN/nZP+DH/e/fQe2/sLf/Sj/B1hPcf2rdYvajpnr3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de6//0CBTf51/+DH30HtP9xbf/SD/AAdYTz/20n29cPb+a/LprhTPXXvfWuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3 v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/d e6//0SBSf51/+Dt/0MffQa2/3Eh/0g/wdYTXH9rJ9vWP2p6aqDkcOve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r/ 0iBzf52T/g3voRa/7jQ/6UdYTT/2r/b1j/3j2/02ABUAU669+611737r3Xvfuvde9+691737r3Xv fuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6 91737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X vfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X/9MgU3+d f/gx99B7T/cW3/0g/wAHWE8/9tJ9vWP2o6az1737rXXvfuvde9+691737r3Xvfuvde9+691737r3 Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9 +691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvdf/1CBTf51/+DH30HtP 9xbf/SD/AAdYTz/20n29Y/ajpgVp3LQ9e9+631737r3Xvfuvde9+691737r3Xvfuvde9+691737r 3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde 9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737 r3Xvfuvde9+691737r3Xvfuvde9+691737r2PLh1737r3Xvfuvde9+691//VIFN/nX/4MffQe0/3 Ft/9IP8AB1hPP/bSfb1w4/x9qOmsfPr3+t78TwqOtGv4Tnrr37r3Xf8At/fut0xpqeve6le7VXr3 mOvfn3sVoK8etZ1eVOuv979+/Zpp17rv/ff4+99aNSRw/wAvXv8Afc+607q+VOvKumvdX7euvdzS ppw6saeXXf8Avv8AkXvXXgPM/F/q4dde/Yr8+tde9+63Tz67/wCN+2yGOqhxUdV697cah8sdeOqn bSvz66/1/furfb13f34ju1Bj1rJ4nrr37r3Xve8U+fW/Pj13/t/bdKnCjT1r7OPXXu/Xuve/de69 7917rv3rSM449b48B17/AG/v1BSnl1plr5nr3vQqGwBp60AQtCc069/vuPdutqGHGlPl173oqDSo 60wJBAOeuve+tgACg6791app3nr2kV1Uz17/AHv3rPdq+Hrzau7Tx6693WgFDxp1s8T13x7ppYgh j1r1rx669uGnlw6369d+6DB4DR17ypTPXh9fduvDj11791rrv/fW91CgcB17Tmvy4eXXr+3A1CDQ de8qddfn3oU8+HXvOtM9d8+9dbzT5dde/daAA4Dr309+63kHr3v3Wuve/de6/9YgU3+df/gx99B7 T/cW3/0g/wAHWE8/9tJ9vWP2o6Z697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv/XIFN/nX/4MffQe0/3Ft/9IP8A B1hPP/bSfb1j9qOmeu/x7pqOvTTHXvPrr3fr3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu vde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3X/9Agc3+dk/4N76EWv+40P+lHWE0/ 9q/29Yvb9AePTXXvfqClKY63U+vXvfutceve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/dbqfXr3v3Wuve/de697917h1737r3Xvfuvde9+691737r3Xvfuvde9+6917/AH3/ ABPv3Xuve/de697917r3v3Xuve/de697917r3v3W69e9+611737r3Xvfuvde9+691737r3Xvfuvd e9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917370+XXuve/de64eXm2njyab8/TRq1fT634t 7TUf+Lzp1rr/0SBTf51/+DH30HtP9xbf/SD/AAdYTz/20n29Y/ajpr069791rr3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917qN/a/ 6qbfj/jne3tqo9fxdUxT8/8AL1//0iBTf51/+DH30HtP9xbf/SD/AAdYTz/20n29Y/ajpnr3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697 917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3X uve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69 7917r3v3Xuo9xqv/ANNdv9j47f717TdV/D/q/i6//9MgU3+df/gx99B7T/cW3/0g/wAHWE8/9tJ9 vWP2o6Z697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6 97917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v 3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de 697917r3v3Xuve/de697917qP/b/AOqv/rj7S9N+X5/5ev/UIFN/nX/4MffQe0/3Ft/9IP8AB1hP P/bSfb1j9qOmeve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de6wf2v+qr/rn7TdV/D/q/i6//1SBTf51/+DH30HtP9xbf/SD/ AAdYTz/20n29Y/ajpnr3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuo39r/D7v8A2H+a/wCjv959puqU7fz/AMvX/9YgU3+d f/gx99B7T/cW3/0g/wAHWE8/9tJ9vWP2o6Z697917r3v3Xuve/de697917r3v3Xuve/de697917r 3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/ de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917rB/a/6qv+uftN1X8P+r+Lr//X IFN/nX/4MffQe0/3Ft/9IP8AB1hPP/bSfb1j9qOmeve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6jf2/of+Bn/XG1/abqv4 f9X8XX//0CBS/wCcf/g7f72ffQi1FLa3/wBIOsJp/wC2k+3rH7f6a697917r3v3Xuve/de697917 r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve /de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de69791 7r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917qJ/a/6e 3/6x+03VKjTx/wBWrr//0SAzN+659P6z9GH9f8QB76C2jJ9JAPxBR/g6wmnIEz1Pn1jBJ+oA/wBi D/vXtSGDcD01137317r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuv e/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de6979 17r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xuve/de697917r3v3Xu ve/de697917r3v3Xuve/de64km9rqB/jq/3mwPujSKpoePXq06w6PXa/+7dP+w8Gr2n1/LqugU/L /L1//9KvqT/OP/wdv97PvP21FLa3zXsH+DrCy6VfHlx+Lryfn/Yf8T7WxADVTpMwApTrJ7d6r173 7r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuv de9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+6917 37r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfuvde9+691737r3Xvfu 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 opO4sFlM5Jk9l4vDQ5KOCKGroGmWxwsTyieor6HIFlqFrVeFW8QZAp9QNiQfW0u03RN/NHSWhHnk +WAPl6dXvbXdbJF223m1Q8a4wPPiSfP16S2X3j2H0rg8kmJq6feeOkz6rm8DlYKt6xpIBK9I8f2k njlc0tjNGxWOU2vcm5FWy7/f7PvFq8FzLaqyCjAsRxxgUHl0CuZOXrTeNnvYPoobyVSSysErQcaF 6/y6a4/kn0zuiTEU2a23W7H3Bl616WTMY+LXgjUxmREo2otca0MsqR+W5B1gqBb85xe3H3juZ+X0 +k3i+S8sU0/76RqH5iJ2PD1653e8H3X+S+apTPte0SWG7SVqwM0i1Xz0+LHGK/l0J+Y2tM2Jpty4 F23FtqqVlTM0NHPElNKGGumyFLMgqKSoAIIYjxupure82fbv3q5X5xKWv1aRX5AOirNn/TeGi9c8 /dL7ufN/IYkvYbd7jac/qaUUjypo8aR/zp0hdIBJVedR029R4Bv/AE03B9zujq5DKwKnFesb7iKS E6HiImBpQ4/4rryxsW9Mf04U3/BuSWuALC3u5yKHh0yjEmgHd1lEcikAD1cAMQCpPF+LXt7acKBj j1oh9QrxPWf7WWY8sqnk+m1uSeB9P6/j20WjTVpzXp0pIw0+g6nR0EK/5yZrW/QouL2v+XH59p9b GrAUJ/Pp3w0LAv8AEfL7Ps6yfbUwHpQk25LMf9SNJ/pc/wCv7Z1dxZm7q9PUUEkDBPWBlhWwWJSw 5Iva2ofUhr/Ue/KzVJ106qygkdvA46Hj4jSpQ/Lz4/1MgZIKrNbgoCVLqrvJhXqIdTKQCVkpQfqR x9Px7hX3qijn2OAM9XWQH+Y+fUpe2LvFucmlcEHo1P8AOH6t6a3j3Rgs1hm3Rgu78dhcM29d3VT0 uK2tj8fUYiin2BFtnJVckX8TyEuOhmOToRrhVVQ2V2v7x523mLk82c3LfMTv45iLxFIpnbiVFTEh OD6sPTqdLrZOY3MG87NGjQg6X1SRKPU0EjAcMYX5joMfjt3Lvv5I9P8AZ3xU7hgfsrc+ycDLuPrX cGyqSr3juPD57CwvPicjXx42OafDYnK0cbw1BmkBMchuH0r7BHLnuHPypzeLfbUlmtA9KMrx6l8j 3xsR0f71yXHvWxM12Y0kdBwZX0sKE5VxX/B0Tym2tU1sOJmpalJRmarN4+njNJXUsyVuDx9NkJqZ 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 n/Ft/wBot/wI/wChv+J9reinFPPj8/Xr/9k= ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.awexp.com.au/irm/content/style.css #clingwrap { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } #logo { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #00338e; = MARGIN: 0px auto; PADDING-LEFT: 0px; WIDTH: 780px; PADDING-RIGHT: 0px; = HEIGHT: 66px; PADDING-TOP: 0px } #contentcontainer { TEXT-ALIGN: left; BACKGROUND-COLOR: #ffffff; WIDTH: 780px; FONT-FAMILY: = Arial, Helvetica, sans-serif; COLOR: #ffffff; MARGIN-LEFT: auto; CLEAR: = both; FONT-SIZE: 12px; MARGIN-RIGHT: auto } #contentcontainer A { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #273194; FONT-SIZE: = 11px } #contentcontainer A:visited { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #273194; FONT-SIZE: = 11px } #c1 { TEXT-ALIGN: left; BACKGROUND-COLOR: #e8e8e8; MARGIN: 0px; WIDTH: 200px; = FLOAT: left; HEIGHT: auto } #c2 { TEXT-ALIGN: left; BACKGROUND-COLOR: #ffffff; WIDTH: 560px; FLOAT: = right; HEIGHT: auto } #c2 LI { PADDING-LEFT: 1.4em; DISPLAY: block; BACKGROUND-POSITION: 0px 0.3em } #c3 { TEXT-ALIGN: left; BACKGROUND-COLOR: #009fd9; MARGIN: 0px auto; WIDTH: = 780px; FONT-FAMILY: Arial, Helvetica, sans-serif; HEIGHT: 32px; COLOR: = #ffffff; FONT-SIZE: 12px } #footer { TEXT-ALIGN: left; PADDING-BOTTOM: 10px; LINE-HEIGHT: 1.5em; = BACKGROUND-COLOR: #ebe9dd; MARGIN: 0px auto; WIDTH: 780px; FONT-FAMILY: = Arial, Helvetica, sans-serif; COLOR: #666; FONT-SIZE: 10px; PADDING-TOP: = 10px } #footer A { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #666; FONT-SIZE: 10px } #footer A:visited { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #666; FONT-SIZE: 10px } #strip { BACKGROUND-IMAGE: = url(http://172.31.254.242/www.awexp.com.au/irm/content/images/bg_strip.jp= g); TEXT-ALIGN: center; BACKGROUND-COLOR: #ff8611 } #title { TEXT-ALIGN: left; LINE-HEIGHT: 1.2em; TEXT-INDENT: 10px; MARGIN: 0px = auto; FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 12px; = FONT-WEIGHT: bold; Verdana:=20 } #homesmall { TEXT-ALIGN: left; MARGIN: 0px auto; FONT-FAMILY: Arial, Helvetica, = sans-serif; FONT-SIZE: 11px; Verdana:=20 } BODY { PADDING-BOTTOM: 0px; BACKGROUND-COLOR: #ebe9dd; MARGIN: 0px; = PADDING-LEFT: 0px; PADDING-RIGHT: 0px; HEIGHT: 100%; COLOR: rgb(0,0,0); = FONT-SIZE: 11px; PADDING-TOP: 0px } TD { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #666666; FONT-SIZE: = 11px } TH { FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: #666666; FONT-SIZE: = 11px } A:link { COLOR: #ff0000; FONT-SIZE: 11px; TEXT-DECORATION: none } A:visited { COLOR: #ff0000; FONT-SIZE: 11px; TEXT-DECORATION: none } A:hover { COLOR: #ff0000; FONT-SIZE: 11px; TEXT-DECORATION: none } BODY { TEXT-ALIGN: center; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } HR { DISPLAY: none } IMG { BORDER-BOTTOM-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-TOP-STYLE: = none; BORDER-LEFT-STYLE: none } INPUT { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } LI { PADDING-BOTTOM: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 1em; DISPLAY: = inline; PADDING-TOP: 0px } #c1 LI { DISPLAY: block } #c2 LI { DISPLAY: block } LI { FONT-SIZE: 1em } OL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px } BR { PADDING-BOTTOM: 0px; LINE-HEIGHT: 0px; MARGIN: 0em 0px; PADDING-LEFT: = 0px; PADDING-RIGHT: 0px; HEIGHT: 0px; PADDING-TOP: 0px } .hr { MARGIN: 1em 0px; WIDTH: 100%; HEIGHT: 1px } .rss { BACKGROUND-IMAGE: = url(http://172.31.254.244/www.awexp.com.au/irm/content/images/rssicon.jpg= ); PADDING-LEFT: 20px; BACKGROUND-REPEAT: no-repeat; = BACKGROUND-POSITION: 0px 2px } .button { VERTICAL-ALIGN: top } .clearfloat { LINE-HEIGHT: 0px; HEIGHT: 0px; CLEAR: both } .leftnav { LINE-HEIGHT: 0px; HEIGHT: 0px; CLEAR: both } .homesmall { FONT-SIZE: 10px } .footersmall { COLOR: #ffffff; FONT-SIZE: 6px } .footersmall A { COLOR: #ffffff; FONT-SIZE: 6px } A:visited { COLOR: #ffffff; FONT-SIZE: 6px } .white { COLOR: #ffffff } .title { PADDING-BOTTOM: 5px; PADDING-LEFT: 10px; COLOR: #ffffff; FONT-SIZE: = 12px; FONT-WEIGHT: normal; PADDING-TOP: 5px } #subnavwrapper { BACKGROUND-COLOR: #ffffff; WIDTH: 170px; FONT-SIZE: 11px } #subnavwrapper UL { LIST-STYLE-TYPE: none; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px } #subnav UL LI { PADDING-LEFT: 0px; PADDING-RIGHT: 0px; MARGIN-LEFT: 0px; FONT-WEIGHT: = normal; MARGIN-RIGHT: 0px } #subnav UL LI A { PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #ff0000; PADDING-LEFT: 8px; = WIDTH: 170px; PADDING-RIGHT: 8px; COLOR: #273194; CLEAR: right; = FONT-SIZE: 11px; MARGIN-RIGHT: 0px; PADDING-TOP: 4px } * HTML #subnav UL LI A { WIDTH: 200px; FONT-SIZE: 11px } #subnav LI { LIST-STYLE-TYPE: square; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; = DISPLAY: inline; FLOAT: left; COLOR: #273194; MARGIN-LEFT: 0px; CLEAR: = both; MARGIN-RIGHT: 0px } #subnav LI A { PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: block; COLOR: #273194; = MARGIN-LEFT: 0px; FONT-SIZE: 11px; MARGIN-RIGHT: 0px; TEXT-DECORATION: = none } #subnav UL UL A { BORDER-BOTTOM: #fff 1px solid; PADDING-LEFT: 0px; WIDTH: 170px; = PADDING-RIGHT: 0px; COLOR: #273194; MARGIN-LEFT: 0px; FONT-SIZE: 11px; = FONT-WEIGHT: normal; MARGIN-RIGHT: 0px } #subnav UL UL LI A { BACKGROUND-COLOR: #e5e9ec; TEXT-INDENT: 10px; WIDTH: 170px; COLOR: = #5b8093; FONT-SIZE: 11px } #subnav UL UL LI A:visited { COLOR: #5b8093; FONT-SIZE: 11px } #subnav UL UL LI A:hover { BACKGROUND-COLOR: #d3d1d1; COLOR: #5b8093 } #subnav LI UL A { PADDING-LEFT: 0px } #subnav UL UL LI A.navon { BACKGROUND-COLOR: #d3d1d1; COLOR: #5b8093 } #subnav UL UL LI A.subnav { BACKGROUND-COLOR: #e8e8e8; TEXT-INDENT: 30px; FONT-SIZE: 11px; = PADDING-TOP: 6px } #subnav UL UL LI A.subnav:visited { BACKGROUND-COLOR: #e8e8e8; TEXT-INDENT: 30px; FONT-SIZE: 11px; = PADDING-TOP: 6px } #subnav UL UL LI A.subnavon { BACKGROUND-COLOR: #d3d1d1; TEXT-INDENT: 30px; FONT-SIZE: 11px; = PADDING-TOP: 6px } #subnav UL UL LI A.subnavon:visited { BACKGROUND-COLOR: #d3d1d1; TEXT-INDENT: 30px; FONT-SIZE: 11px; = PADDING-TOP: 6px } .shareprice { TEXT-ALIGN: center } .sharepricehome { PADDING-BOTTOM: 5px; PADDING-LEFT: 0px; FONT-SIZE: 18px; = VERTICAL-ALIGN: top; PADDING-TOP: 5px } .sharepricechangehome { TEXT-ALIGN: left; PADDING-BOTTOM: 7px; COLOR: #666666; FONT-SIZE: 12px; = VERTICAL-ALIGN: bottom; PADDING-TOP: 5px } ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.awexp.com.au/irm/content/SpryAssets/SpryMenuBarHorizontal.css UL.MenuBarHorizontal { PADDING-BOTTOM: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: = 0px; WIDTH: auto; PADDING-RIGHT: 0px; FONT-SIZE: 11px; CURSOR: default; = PADDING-TOP: 0px } UL.MenuBarActive { Z-INDEX: 1000 } UL.MenuBarHorizontal LI { POSITION: relative; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; = LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: auto; = PADDING-RIGHT: 0px; FLOAT: left; FONT-SIZE: 100%; CURSOR: pointer; = PADDING-TOP: 0px } UL.MenuBarHorizontal UL { Z-INDEX: 1020; POSITION: absolute; PADDING-BOTTOM: 0px; = LIST-STYLE-TYPE: none; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 200px; = PADDING-RIGHT: 0px; FONT-SIZE: 11px; CURSOR: default; PADDING-TOP: 0px; = LEFT: -1000em } UL.MenuBarHorizontal UL.MenuBarSubmenuVisible { LEFT: auto } UL.MenuBarHorizontal UL LI { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; WIDTH: 240px; = PADDING-RIGHT: 0px; PADDING-TOP: 0px } UL.MenuBarHorizontal UL UL { BORDER-BOTTOM: #ffffff 1px solid; POSITION: absolute; BORDER-LEFT: = #ffffff 1px solid; MARGIN: 0% 0px 0px 100%; BORDER-TOP: #ffffff 1px = solid; BORDER-RIGHT: #ffffff 1px solid } UL.MenuBarHorizontal UL.MenuBarSubmenuVisible UL.MenuBarSubmenuVisible { TOP: 0px; LEFT: auto } UL.MenuBarHorizontal UL { PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: = 0px; PADDING-TOP: 0px } UL.MenuBarHorizontal A { BORDER-BOTTOM: #fff 1px solid; PADDING-BOTTOM: 0.45em; = BACKGROUND-COLOR: #5e78a7; MARGIN: 0px; PADDING-LEFT: 1.5em; = PADDING-RIGHT: 1.5em; DISPLAY: block; COLOR: #ffffff; FONT-SIZE: 12px; = CURSOR: pointer; TEXT-DECORATION: none; PADDING-TOP: 0.45em } UL.MenuBarHorizontal A:visited { FONT-SIZE: 12px } UL.MenuBarHorizontal A.Maintab { BORDER-BOTTOM: #ffffff 0px solid; PADDING-BOTTOM: 0.75em; = BACKGROUND-COLOR: #009fd9; PADDING-LEFT: 1.9em; PADDING-RIGHT: 1.9em; = DISPLAY: block; COLOR: #ffffff; FONT-SIZE: 12px; CURSOR: pointer; = BORDER-RIGHT: #ffffff 1px solid; TEXT-DECORATION: none; PADDING-TOP: = 0.75em } UL.MenuBarHorizontal A.Maintab:hover { PADDING-BOTTOM: 0.75em; BACKGROUND-COLOR: #5e78a7; PADDING-LEFT: 1.9em; = PADDING-RIGHT: 1.9em; COLOR: #ffffff; FONT-SIZE: 12px; PADDING-TOP: = 0.75em } UL.MenuBarHorizontal A.Maintab:visited { FONT-SIZE: 12px } UL.MenuBarHorizontal A:hover { COLOR: #ffffff; FONT-SIZE: 12px } UL.MenuBarHorizontal A:focus { COLOR: #ffffff; FONT-SIZE: 12px } UL.MenuBarHorizontal A.MenuBarItemHover { PADDING-BOTTOM: 0.45em; BACKGROUND-COLOR: #00338e; PADDING-LEFT: 1.5em; = PADDING-RIGHT: 1.5em; COLOR: #ffffff; FONT-SIZE: 12px; PADDING-TOP: = 0.45em } UL.MenuBarHorizontal A.MenuBarItemSubmenuHover { PADDING-BOTTOM: 0.45em; BACKGROUND-COLOR: #00338e; PADDING-LEFT: 1.5em; = PADDING-RIGHT: 1.5em; COLOR: #ffffff; FONT-SIZE: 12px; PADDING-TOP: = 0.45em } UL.MenuBarHorizontal A.MenuBarSubmenuVisible { PADDING-BOTTOM: 0.45em; BACKGROUND-COLOR: #00338e; PADDING-LEFT: 1.5em; = PADDING-RIGHT: 1.5em; COLOR: #ffffff; FONT-SIZE: 12px; PADDING-TOP: = 0.45em } UL.MenuBarHorizontal A.MenuBarItemSubmenu { BORDER-BOTTOM: #ffffff 0px solid; PADDING-BOTTOM: 0.75em; = BACKGROUND-COLOR: #009fd9; PADDING-LEFT: 1.9em; PADDING-RIGHT: 1.9em; = COLOR: #ffffff; FONT-SIZE: 12px; BORDER-RIGHT: #ffffff 1px solid; = PADDING-TOP: 0.75em } UL.MenuBarHorizontal UL A.MenuBarItemSubmenu { PADDING-BOTTOM: 0.75em; BACKGROUND-COLOR: #5e78a7; PADDING-LEFT: 1.9em; = PADDING-RIGHT: 1.9em; FONT-SIZE: 12px; PADDING-TOP: 0.75em } UL.MenuBarHorizontal A.MenuBarItemSubmenuHover { PADDING-BOTTOM: 0.75em; BACKGROUND-COLOR: #5e78a7; PADDING-LEFT: 1.9em; = PADDING-RIGHT: 1.9em; COLOR: #ffffff; FONT-SIZE: 12px; PADDING-TOP: = 0.75em } UL.MenuBarHorizontal UL A.MenuBarItemSubmenuHover { PADDING-BOTTOM: 0.75em; BACKGROUND-COLOR: #5e78a7; PADDING-LEFT: 1.9em; = PADDING-RIGHT: 1.9em; FONT-SIZE: 12px; PADDING-TOP: 0.75em } UL.MenuBarHorizontal A.MenuBarItemSubmenu2 { PADDING-BOTTOM: 0.45em; BACKGROUND-COLOR: #5e78a7; PADDING-LEFT: 1.5em; = PADDING-RIGHT: 1.5em; COLOR: #ffffff; FONT-SIZE: 12px; PADDING-TOP: = 0.45em } UL.MenuBarHorizontal UL A.MenuBarItemSubmenu2 { BACKGROUND-IMAGE: = url(http://172.31.254.243/www.awexp.com.au/irm/content/SpryAssets/SpryMen= uBarRight.gif); PADDING-BOTTOM: 0.45em; BACKGROUND-COLOR: #5e78a7; = PADDING-LEFT: 1.5em; PADDING-RIGHT: 1.5em; BACKGROUND-REPEAT: no-repeat; = BACKGROUND-POSITION: 95% 50%; FONT-SIZE: 12px; BORDER-RIGHT: #ffffff 0px = solid; PADDING-TOP: 0.45em } UL.MenuBarHorizontal UL A.MenuBarItemSubmenu2:hover { BACKGROUND-IMAGE: = url(http://172.31.254.243/www.awexp.com.au/irm/content/SpryAssets/SpryMen= uBarRight.gif); BACKGROUND-REPEAT: no-repeat; BACKGROUND-POSITION: 95% = 50%; FONT-SIZE: 12px; BORDER-RIGHT: #ffffff 0px solid } UL.MenuBarHorizontal A.MenuBarItemSubmenuHover2 { BACKGROUND-COLOR: #00338e; COLOR: #ffffff; FONT-SIZE: 12px } UL.MenuBarHorizontal UL A.MenuBarItemSubmenuHover2 { BACKGROUND-COLOR: #00338e; FONT-SIZE: 12px } UL.MenuBarHorizontal IFRAME { Z-INDEX: 1010; POSITION: absolute } @media Screen, Projection =20 { UL.MenuBarHorizontal LI.MenuBarItemIE { DISPLAY: inline; BACKGROUND: #fff; FLOAT: left } } ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: text/css; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.awexp.com.au/irm/Content/Styles.css BODY { FONT-FAMILY: Arial,Helvetica,Sans-Serif; COLOR: #333333; FONT-SIZE: = 11px } TD { FONT-FAMILY: Arial,Helvetica,Sans-Serif; COLOR: #333333; FONT-SIZE: = 11px } TEXTAREA { FONT-FAMILY: Arial,Helvetica,Sans-Serif; COLOR: #333333; FONT-SIZE: 9pt } INPUT { FONT-FAMILY: Arial,Helvetica,Sans-Serif; COLOR: #333333; FONT-SIZE: 9pt } A { FONT-FAMILY: Arial,Helvetica,Sans-Serif; COLOR: #273194 } xA:link { FONT-FAMILY: Arial,Helvetica,Sans-Serif; COLOR: #273194 } xA:active { FONT-FAMILY: Arial,Helvetica,Sans-Serif; COLOR: #273194 } xA:visited { FONT-FAMILY: Arial,Helvetica,Sans-Serif; COLOR: #273194 } xA:hover { COLOR: #cc3300 } H1 { PADDING-BOTTOM: 1px; MARGIN-TOP: 1px; PADDING-LEFT: 5px; WIDTH: 100%; = MARGIN-BOTTOM: 1px; COLOR: #333333; FONT-SIZE: 8pt; FONT-WEIGHT: bold; = PADDING-TOP: 1px } H2 { FONT-SIZE: 11px } TR.h2 { FONT-SIZE: 11px; FONT-WEIGHT: bold } .hyperlinkAlt { COLOR: #333333 } .box { BORDER-BOTTOM: #333333 thin solid; BORDER-LEFT: #333333 thin solid; = PADDING-BOTTOM: 5px; PADDING-LEFT: 5px; PADDING-RIGHT: 5px; BORDER-TOP: = #333333 thin solid; BORDER-RIGHT: #333333 thin solid; PADDING-TOP: 5px } .ErrorMessage { COLOR: red; FONT-WEIGHT: bold } .frmTitle { PADDING-BOTTOM: 1px; MARGIN-TOP: 1px; PADDING-LEFT: 5px; MARGIN-BOTTOM: = 1px; COLOR: #333333; FONT-SIZE: 8pt; FONT-WEIGHT: bold; PADDING-TOP: 1px } .frmLabel { COLOR: #333333; FONT-SIZE: 9pt } .frmLabelAlt { COLOR: #333333; FONT-SIZE: 9pt } .frmControl { BORDER-BOTTOM: #333333 1px solid; BORDER-LEFT: #333333 1px solid; = PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 11px; BORDER-TOP: = #333333 1px solid; BORDER-RIGHT: #333333 1px solid } .frmControlRO { BORDER-BOTTOM: #333333 1px solid; BORDER-LEFT: #333333 1px solid; = BACKGROUND-COLOR: whitesmoke; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; = FONT-SIZE: 11px; BORDER-TOP: #333333 1px solid; BORDER-RIGHT: #333333 = 1px solid } .frmHelp { COLOR: #333333; FONT-SIZE: 9pt } .grdSelected { BACKGROUND-COLOR: lightsteelblue; PADDING-LEFT: 2px; PADDING-RIGHT: 2px } .frmControlFilter { PADDING-LEFT: 2px; PADDING-RIGHT: 2px; FONT-SIZE: 8pt } .ddGrouping { BORDER-BOTTOM: red 1px solid; BORDER-LEFT: red 1px solid; BORDER-TOP: = red 1px solid; BORDER-RIGHT: red 1px solid } .ddRightColumn { PADDING-LEFT: 5px } .ddLabel { PADDING-LEFT: 3px } .ddAmount { BORDER-BOTTOM: saddlebrown 1px solid; BORDER-LEFT: saddlebrown 1px = solid; MARGIN: 1px 10px 1px 3px; PADDING-LEFT: 3px; PADDING-RIGHT: 3px; = BORDER-TOP: saddlebrown 1px solid; BORDER-RIGHT: saddlebrown 1px solid } .ddTable { PADDING-BOTTOM: 2px; BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 2px; = PADDING-RIGHT: 2px; COLOR: #333333; FONT-SIZE: 7pt; PADDING-TOP: 2px } .AdminTableHeader { FONT-SIZE: 8pt; FONT-WEIGHT: bold } .AdminToolbarItem { CURSOR: hand } .grdHeader { BACKGROUND-COLOR: #cccccc; MARGIN: 1px; FONT-SIZE: 9pt } .grdItem { BACKGROUND-COLOR: #f0f0f0; PADDING-LEFT: 2px; PADDING-RIGHT: 2px; = FONT-SIZE: 9pt } .grdButton { FONT-SIZE: 8pt } BUTTON { LETTER-SPACING: -1px; FONT-SIZE: 8pt } .calDay { =09 } .calTitle { BACKGROUND-COLOR: #333333; COLOR: white } .calWeekend { =09 } .calOtherMonth { =09 } .calendar { BACKGROUND-COLOR: #f0f0f0; MARGIN: 1px; LETTER-SPACING: -1px; = FONT-SIZE: 8pt } .frmConfirmationMessage { FONT-STYLE: italic; COLOR: navy; FONT-WEIGHT: bold } .PageTitle { FONT-SIZE: large; FONT-WEIGHT: bold } .sharePriceColumn { BACKGROUND-COLOR: #e6ebf2; FONT-FAMILY: Arial,Helvetica,Sans-Serif; = COLOR: #333333; FONT-SIZE: 11px } .sharepriceheader { BACKGROUND-COLOR: white; COLOR: #333333; FONT-WEIGHT: 600 } .sharepricedata { BACKGROUND-COLOR: white; COLOR: #333333 } .sharepricedata A { COLOR: #273194 } .sharepricedata A visited { COLOR: #273194 } .sharepriceHeader2 { PADDING-BOTTOM: 0px; LINE-HEIGHT: 1; COLOR: rgb(0,0,0); FONT-SIZE: = 15px; FONT-WEIGHT: normal } .sharepricedata2 { COLOR: rgb(10,50,130); FONT-SIZE: 20px; FONT-WEIGHT: normal; = MARGIN-RIGHT: 5px } .sharepricemovement { COLOR: rgb(80,80,80); FONT-SIZE: 15px } .sharepricetimestamp { COLOR: rgb(80,80,80); FONT-SIZE: 10px } .NewsDate { TEXT-ALIGN: left; PADDING-RIGHT: 5px; WHITE-SPACE: nowrap; COLOR: = rgb(10,50,130); FONT-WEIGHT: bold } ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_016A_01C9C1C7.9ABE8680" ------=_NextPart_001_016A_01C9C1C7.9ABE8680 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.awexp.com.au/irm/content/home.html Australian Worldwide = Exploration Limited =96 Oil and gas exploration and production =
 
   

 

 

Australian Worldwide Exploration = Limited=20 (AWE) is an Australian based oil and gas exploration and = production=20 company. AWE was recently admitted to the prestigious ASX = 100=20 Index.

AWE currently has oil and gas = interests in=20 Australia, New Zealand, Indonesia, Yemen, Vietnam and = Argentina, and=20 is actively reviewing additional growth opportunities.=20

 
 
 
 
 
=
This price is = delayed by=20 at least 20 minutes and is sourced from = the ASX.=20 Retrieving this share price indicates your = acceptance of the Conditions.
 
MORE=20 >>
MORE=20 >> =
 
         
Copyright 2009 =A9 = Australian Worldwide=20 Exploration Ltd | Privacy | = Site = Map | Search
------=_NextPart_001_016A_01C9C1C7.9ABE8680 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.awexp.com.au/irm/ShowCategory.aspx?CategoryID=199&HideTopLine=True&shareprice=Hide =EF=BB=BF ShowCategory
=20
25-Mar-2009
AWE's=20 BassGas emissions to reduce
23-Mar-2009
AWE=20 to expand into Vietnamese oil exploration = activities=20
24-Feb-2009
Half = Year Results Webcast
------=_NextPart_001_016A_01C9C1C7.9ABE8680-- ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.awexp.com.au/irm/content/SpryAssets/SpryMenuBar.js /* SpryMenuBar.js - Revision: Spry Preview Release 1.4 */ // Copyright (c) 2006. Adobe Systems Incorporated. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions = are met: // // * Redistributions of source code must retain the above copyright = notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright = notice, // this list of conditions and the following disclaimer in the = documentation // and/or other materials provided with the distribution. // * Neither the name of Adobe Systems Incorporated nor the names of = its // contributors may be used to endorse or promote products derived = from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS = "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, = THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR = PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS = BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR = BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER = IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR = OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED = OF THE // POSSIBILITY OF SUCH DAMAGE. /************************************************************************= ******* SpryMenuBar.js This file handles the JavaScript for Spry Menu Bar. You should have no = need to edit this file. Some highlights of the MenuBar object is that = timers are used to keep submenus from showing up until the user has hovered over = the parent menu item for some time, as well as a timer for when they leave a = submenu to keep showing that submenu until the timer fires. = *************************************************************************= ******/ var Spry; if(!Spry) { Spry =3D {}; } if(!Spry.Widget) { Spry.Widget =3D {}; } // Constructor for Menu Bar // element should be an ID of an unordered list (
    tag) // preloadImage1 and preloadImage2 are images for the rollover state of = a menu Spry.Widget.MenuBar =3D function(element, opts) { this.init(element, opts); }; Spry.Widget.MenuBar.prototype.init =3D function(element, opts) { this.element =3D this.getElement(element); // represents the current (sub)menu we are operating on this.currMenu =3D null; var isie =3D (typeof document.all !=3D 'undefined' && typeof = window.opera =3D=3D 'undefined' && navigator.vendor !=3D 'KDE'); if(typeof document.getElementById =3D=3D 'undefined' || = (navigator.vendor =3D=3D 'Apple Computer, Inc.' && typeof = window.XMLHttpRequest =3D=3D 'undefined') || (isie && typeof = document.uniqueID =3D=3D 'undefined')) { // bail on older unsupported browsers return; } // load hover images now if(opts) { for(var k in opts) { var rollover =3D new Image; rollover.src =3D opts[k]; } } if(this.element) { this.currMenu =3D this.element; var items =3D this.element.getElementsByTagName('li'); for(var i=3D0; i 0) { layers[0].parentNode.removeChild(layers[0]); } }; // clearMenus for Menu Bar // root is the top level unordered list (
      tag) Spry.Widget.MenuBar.prototype.clearMenus =3D function(root) { var menus =3D root.getElementsByTagName('ul'); for(var i=3D0; i 0 ? submenus[0] : null); var hasSubMenu =3D false; if(menu) { this.addClassName(link, "MenuBarItemSubmenu"); hasSubMenu =3D true; } if(!isie) { // define a simple function that comes standard in IE to determine // if a node is within another node listitem.contains =3D function(testNode) { // this refers to the list item if(testNode =3D=3D null) { return false; } if(testNode =3D=3D this) { return true; } else { return this.contains(testNode.parentNode); } }; } =09 // need to save this for scope further down var self =3D this; this.addEventListener(listitem, 'mouseover', function(e) { if(self.bubbledTextEvent()) { // ignore bubbled text events return; } clearTimeout(closetime); if(self.currMenu =3D=3D listitem) { self.currMenu =3D null; } // show menu highlighting self.addClassName(link, hasSubMenu ? "MenuBarItemSubmenuHover" : = "MenuBarItemHover"); if(menu && !self.hasClassName(menu, "MenuBarSubmenuVisible")) { opentime =3D window.setTimeout(function(){self.showSubmenu(menu);}, = 250); } }, false); this.addEventListener(listitem, 'mouseout', function(e) { if(self.bubbledTextEvent()) { // ignore bubbled text events return; } var related =3D (typeof e.relatedTarget !=3D 'undefined' ? = e.relatedTarget : e.toElement); if(!listitem.contains(related)) { clearTimeout(opentime); self.currMenu =3D listitem; // remove menu highlighting self.removeClassName(link, hasSubMenu ? "MenuBarItemSubmenuHover" : = "MenuBarItemHover"); if(menu) { closetime =3D window.setTimeout(function(){self.hideSubmenu(menu);}, = 600); } } }, false); }; ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.awexp.com.au/irm/content/Scripts/AC_RunActiveContent.js //v1.7 // Flash Player Version Detection // Detect Client Browser type // Copyright 2005-2007 Adobe Systems Incorporated. All rights reserved. var isIE =3D (navigator.appVersion.indexOf("MSIE") !=3D -1) ? true : = false; var isWin =3D (navigator.appVersion.toLowerCase().indexOf("win") !=3D = -1) ? true : false; var isOpera =3D (navigator.userAgent.indexOf("Opera") !=3D -1) ? true : = false; function ControlVersion() { var version; var axo; var e; // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't = in the registry try { // version will be set for 7.X or greater players axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); version =3D axo.GetVariable("$version"); } catch (e) { } if (!version) { try { // version will be set for 6.X players only axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); =09 // installed player is some revision of 6.0 // GetVariable("$version") crashes for versions 6.0.22 through = 6.0.29, // so we have to be careful.=20 =09 // default to the first public version version =3D "WIN 6,0,21,0"; // throws if AllowScripAccess does not exist (introduced in 6.0r47) =09 axo.AllowScriptAccess =3D "always"; // safe to call for 6.0r47 or greater version =3D axo.GetVariable("$version"); } catch (e) { } } if (!version) { try { // version will be set for 4.X or 5.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version =3D axo.GetVariable("$version"); } catch (e) { } } if (!version) { try { // version will be set for 3.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3"); version =3D "WIN 3,0,18,0"; } catch (e) { } } if (!version) { try { // version will be set for 2.X player axo =3D new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); version =3D "WIN 2,0,0,11"; } catch (e) { version =3D -1; } } =09 return version; } // JavaScript helper required to detect Flash Player PlugIn version = information function GetSwfVer(){ // NS/Opera version >=3D 3 check for Flash plugin in plugin array var flashVer =3D -1; =09 if (navigator.plugins !=3D null && navigator.plugins.length > 0) { if (navigator.plugins["Shockwave Flash 2.0"] || = navigator.plugins["Shockwave Flash"]) { var swVer2 =3D navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : = ""; var flashDescription =3D navigator.plugins["Shockwave Flash" + = swVer2].description; var descArray =3D flashDescription.split(" "); var tempArrayMajor =3D descArray[2].split("."); =09 var versionMajor =3D tempArrayMajor[0]; var versionMinor =3D tempArrayMajor[1]; var versionRevision =3D descArray[3]; if (versionRevision =3D=3D "") { versionRevision =3D descArray[4]; } if (versionRevision[0] =3D=3D "d") { versionRevision =3D versionRevision.substring(1); } else if (versionRevision[0] =3D=3D "r") { versionRevision =3D versionRevision.substring(1); if (versionRevision.indexOf("d") > 0) { versionRevision =3D versionRevision.substring(0, = versionRevision.indexOf("d")); } } var flashVer =3D versionMajor + "." + versionMinor + "." + = versionRevision; } } // MSN/WebTV 2.6 supports Flash 4 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") !=3D = -1) flashVer =3D 4; // WebTV 2.5 supports Flash 3 else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") !=3D = -1) flashVer =3D 3; // older WebTV supports Flash 2 else if (navigator.userAgent.toLowerCase().indexOf("webtv") !=3D -1) = flashVer =3D 2; else if ( isIE && isWin && !isOpera ) { flashVer =3D ControlVersion(); }=09 return flashVer; } // When called with reqMajorVer, reqMinorVer, reqRevision returns true = if that version or greater is available function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision) { versionStr =3D GetSwfVer(); if (versionStr =3D=3D -1 ) { return false; } else if (versionStr !=3D 0) { if(isIE && isWin && !isOpera) { // Given "WIN 2,0,0,11" tempArray =3D versionStr.split(" "); // ["WIN", "2,0,0,11"] tempString =3D tempArray[1]; // "2,0,0,11" versionArray =3D tempString.split(","); // ['2', '0', '0', '11'] } else { versionArray =3D versionStr.split("."); } var versionMajor =3D versionArray[0]; var versionMinor =3D versionArray[1]; var versionRevision =3D versionArray[2]; // is the major.revision >=3D requested major.revision AND the = minor version >=3D requested minor if (versionMajor > parseFloat(reqMajorVer)) { return true; } else if (versionMajor =3D=3D parseFloat(reqMajorVer)) { if (versionMinor > parseFloat(reqMinorVer)) return true; else if (versionMinor =3D=3D parseFloat(reqMinorVer)) { if (versionRevision >=3D parseFloat(reqRevision)) return true; } } return false; } } function AC_AddExtension(src, ext) { if (src.indexOf('?') !=3D -1) return src.replace(/\?/, ext+'?');=20 else return src + ext; } function AC_Generateobj(objAttrs, params, embedAttrs)=20 {=20 var str =3D ''; if (isIE && isWin && !isOpera) { str +=3D ''; for (var i in params) { str +=3D ' = '; } str +=3D ''; } else { str +=3D ' '; } document.write(str); } function AC_FL_RunContent(){ var ret =3D=20 AC_GetArgs ( arguments, ".swf", "movie", = "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" , "application/x-shockwave-flash" ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); } function AC_SW_RunContent(){ var ret =3D=20 AC_GetArgs ( arguments, ".dcr", "src", = "clsid:166B1BCA-3F9C-11CF-8075-444553540000" , null ); AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs); } function AC_GetArgs(args, ext, srcParamName, classid, mimeType){ var ret =3D new Object(); ret.embedAttrs =3D new Object(); ret.params =3D new Object(); ret.objAttrs =3D new Object(); for (var i=3D0; i < args.length; i=3Di+2){ var currArg =3D args[i].toLowerCase(); =20 switch (currArg){=09 case "classid": break; case "pluginspage": ret.embedAttrs[args[i]] =3D args[i+1]; break; case "src": case "movie":=09 args[i+1] =3D AC_AddExtension(args[i+1], ext); ret.embedAttrs["src"] =3D args[i+1]; ret.params[srcParamName] =3D args[i+1]; break; case "onafterupdate": case "onbeforeupdate": case "onblur": case "oncellchange": case "onclick": case "ondblClick": case "ondrag": case "ondragend": case "ondragenter": case "ondragleave": case "ondragover": case "ondrop": case "onfinish": case "onfocus": case "onhelp": case "onmousedown": case "onmouseup": case "onmouseover": case "onmousemove": case "onmouseout": case "onkeypress": case "onkeydown": case "onkeyup": case "onload": case "onlosecapture": case "onpropertychange": case "onreadystatechange": case "onrowsdelete": case "onrowenter": case "onrowexit": case "onrowsinserted": case "onstart": case "onscroll": case "onbeforeeditfocus": case "onactivate": case "onbeforedeactivate": case "ondeactivate": case "type": case "codebase": case "id": ret.objAttrs[args[i]] =3D args[i+1]; break; case "width": case "height": case "align": case "vspace":=20 case "hspace": case "class": case "title": case "accesskey": case "name": case "tabindex": ret.embedAttrs[args[i]] =3D ret.objAttrs[args[i]] =3D args[i+1]; break; default: ret.embedAttrs[args[i]] =3D ret.params[args[i]] =3D args[i+1]; } } ret.objAttrs["classid"] =3D classid; if (mimeType) ret.embedAttrs["type"] =3D mimeType; return ret; } ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.awexp.com.au/irm/content/SpryAssets/xpath.js /* xpath.js - Revision: Spry Preview Release 1.4 */=0A= =0A= // Copyright (c) 2005, Google Inc.=0A= // All rights reserved.=0A= // =0A= // Redistribution and use in source and binary forms, with or without=0A= // modification, are permitted provided that the following conditions are=0A= // met:=0A= // =0A= // * Redistributions of source code must retain the above copyright=0A= // notice, this list of conditions and the following disclaimer.=0A= // =0A= // * Redistributions in binary form must reproduce the above copyright=0A= // notice, this list of conditions and the following disclaimer in the=0A= // documentation and/or other materials provided with the=0A= // distribution.=0A= // =0A= // * Neither the name of Google Inc. nor the names of its contributors=0A= // may be used to endorse or promote products derived from this=0A= // software without specific prior written permission.=0A= // =0A= // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS=0A= // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT=0A= // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR=0A= // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT=0A= // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,=0A= // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT=0A= // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,=0A= // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY=0A= // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT=0A= // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE=0A= // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.=0A= //=0A= // An XPath parser and evaluator written in JavaScript. The=0A= // implementation is complete except for functions handling=0A= // namespaces.=0A= //=0A= // Reference: [XPATH] XPath Specification=0A= // .=0A= //=0A= //=0A= // The API of the parser has several parts:=0A= //=0A= // 1. The parser function xpathParse() that takes a string and returns=0A= // an expession object.=0A= //=0A= // 2. The expression object that has an evaluate() method to evaluate the=0A= // XPath expression it represents. (It is actually a hierarchy of=0A= // objects that resembles the parse tree, but an application will call=0A= // evaluate() only on the top node of this hierarchy.)=0A= //=0A= // 3. The context object that is passed as an argument to the evaluate()=0A= // method, which represents the DOM context in which the expression is=0A= // evaluated.=0A= //=0A= // 4. The value object that is returned from evaluate() and represents=0A= // values of the different types that are defined by XPath (number,=0A= // string, boolean, and node-set), and allows to convert between them.=0A= //=0A= // These parts are near the top of the file, the functions and data=0A= // that are used internally follow after them.=0A= //=0A= //=0A= // TODO(mesch): add jsdoc comments. Use more coherent naming.=0A= //=0A= //=0A= // Author: Steffen Meschkat =0A= =0A= =0A= // The entry point for the parser.=0A= //=0A= // @param expr a string that contains an XPath expression.=0A= // @return an expression object that can be evaluated with an=0A= // expression context.=0A= =0A= function xpathParse(expr) {=0A= if (xpathdebug) {=0A= Log.write('XPath parse ' + expr);=0A= }=0A= xpathParseInit();=0A= =0A= var cached =3D xpathCacheLookup(expr);=0A= if (cached) {=0A= if (xpathdebug) {=0A= Log.write(' ... cached');=0A= }=0A= return cached;=0A= }=0A= =0A= // Optimize for a few common cases: simple attribute node tests=0A= // (@id), simple element node tests (page), variable references=0A= // ($address), numbers (4), multi-step path expressions where each=0A= // step is a plain element node test=0A= // (page/overlay/locations/location).=0A= =0A= if (expr.match(/^(\$|@)?\w+$/i)) {=0A= var ret =3D makeSimpleExpr(expr);=0A= xpathParseCache[expr] =3D ret;=0A= if (xpathdebug) {=0A= Log.write(' ... simple');=0A= }=0A= return ret;=0A= }=0A= =0A= if (expr.match(/^\w+(\/\w+)*$/i)) {=0A= var ret =3D makeSimpleExpr2(expr);=0A= xpathParseCache[expr] =3D ret;=0A= if (xpathdebug) {=0A= Log.write(' ... simple 2');=0A= }=0A= return ret;=0A= }=0A= =0A= var cachekey =3D expr; // expr is modified during parse=0A= if (xpathdebug) {=0A= Timer.start('XPath parse', cachekey);=0A= }=0A= =0A= var stack =3D [];=0A= var ahead =3D null;=0A= var previous =3D null;=0A= var done =3D false;=0A= =0A= var parse_count =3D 0;=0A= var lexer_count =3D 0;=0A= var reduce_count =3D 0;=0A= =0A= while (!done) {=0A= parse_count++;=0A= expr =3D expr.replace(/^\s*/, '');=0A= previous =3D ahead;=0A= ahead =3D null;=0A= =0A= var rule =3D null;=0A= var match =3D '';=0A= for (var i =3D 0; i < xpathTokenRules.length; ++i) {=0A= var result =3D xpathTokenRules[i].re.exec(expr);=0A= lexer_count++;=0A= if (result && result.length > 0 && result[0].length > = match.length) {=0A= rule =3D xpathTokenRules[i];=0A= match =3D result[0];=0A= break;=0A= }=0A= }=0A= =0A= // Special case: allow operator keywords to be element and=0A= // variable names.=0A= =0A= // NOTE(mesch): The parser resolves conflicts by looking ahead,=0A= // and this is the only case where we look back to=0A= // disambiguate. So this is indeed something different, and=0A= // looking back is usually done in the lexer (via states in the=0A= // general case, called "start conditions" in flex(1)). Also,the=0A= // conflict resolution in the parser is not as robust as it could=0A= // be, so I'd like to keep as much off the parser as possible (all=0A= // these precedence values should be computed from the grammar=0A= // rules and possibly associativity declarations, as in bison(1),=0A= // and not explicitly set.=0A= =0A= if (rule &&=0A= (rule =3D=3D TOK_DIV || =0A= rule =3D=3D TOK_MOD ||=0A= rule =3D=3D TOK_AND || =0A= rule =3D=3D TOK_OR) &&=0A= (!previous || =0A= previous.tag =3D=3D TOK_AT || =0A= previous.tag =3D=3D TOK_DSLASH || =0A= previous.tag =3D=3D TOK_SLASH ||=0A= previous.tag =3D=3D TOK_AXIS || =0A= previous.tag =3D=3D TOK_DOLLAR)) {=0A= rule =3D TOK_QNAME;=0A= }=0A= =0A= if (rule) {=0A= expr =3D expr.substr(match.length);=0A= if (xpathdebug) {=0A= Log.write('token: ' + match + ' -- ' + rule.label);=0A= }=0A= ahead =3D {=0A= tag: rule,=0A= match: match,=0A= prec: rule.prec ? rule.prec : 0, // || 0 is removed by the = compiler=0A= expr: makeTokenExpr(match)=0A= };=0A= =0A= } else {=0A= if (xpathdebug) {=0A= Log.write('DONE');=0A= }=0A= done =3D true;=0A= }=0A= =0A= while (xpathReduce(stack, ahead)) {=0A= reduce_count++;=0A= if (xpathdebug) {=0A= Log.write('stack: ' + stackToString(stack));=0A= }=0A= }=0A= }=0A= =0A= if (xpathdebug) {=0A= Log.write(stackToString(stack));=0A= }=0A= =0A= if (stack.length !=3D 1) {=0A= throw 'XPath parse error ' + cachekey + ':\n' + stackToString(stack);=0A= }=0A= =0A= var result =3D stack[0].expr;=0A= xpathParseCache[cachekey] =3D result;=0A= =0A= if (xpathdebug) {=0A= Timer.end('XPath parse', cachekey);=0A= }=0A= =0A= if (xpathdebug) {=0A= Log.write('XPath parse: ' + parse_count + ' / ' + =0A= lexer_count + ' / ' + reduce_count);=0A= }=0A= =0A= return result;=0A= }=0A= =0A= var xpathParseCache =3D {};=0A= =0A= function xpathCacheLookup(expr) {=0A= return xpathParseCache[expr];=0A= }=0A= =0A= function xpathReduce(stack, ahead) {=0A= var cand =3D null;=0A= =0A= if (stack.length > 0) {=0A= var top =3D stack[stack.length-1];=0A= var ruleset =3D xpathRules[top.tag.key];=0A= =0A= if (ruleset) {=0A= for (var i =3D 0; i < ruleset.length; ++i) {=0A= var rule =3D ruleset[i];=0A= var match =3D xpathMatchStack(stack, rule[1]);=0A= if (match.length) {=0A= cand =3D {=0A= tag: rule[0],=0A= rule: rule,=0A= match: match=0A= };=0A= cand.prec =3D xpathGrammarPrecedence(cand);=0A= break;=0A= }=0A= }=0A= }=0A= }=0A= =0A= var ret;=0A= if (cand && (!ahead || cand.prec > ahead.prec || =0A= (ahead.tag.left && cand.prec >=3D ahead.prec))) {=0A= for (var i =3D 0; i < cand.match.matchlength; ++i) {=0A= stack.pop();=0A= }=0A= =0A= if (xpathdebug) {=0A= Log.write('reduce ' + cand.tag.label + ' ' + cand.prec +=0A= ' ahead ' + (ahead ? ahead.tag.label + ' ' + ahead.prec = + =0A= (ahead.tag.left ? ' left' : '')=0A= : ' none '));=0A= }=0A= =0A= var matchexpr =3D mapExpr(cand.match, function(m) { return m.expr; = });=0A= cand.expr =3D cand.rule[3].apply(null, matchexpr);=0A= =0A= stack.push(cand);=0A= ret =3D true;=0A= =0A= } else {=0A= if (ahead) {=0A= if (xpathdebug) {=0A= Log.write('shift ' + ahead.tag.label + ' ' + ahead.prec + =0A= (ahead.tag.left ? ' left' : '') +=0A= ' over ' + (cand ? cand.tag.label + ' ' + =0A= cand.prec : ' none'));=0A= }=0A= stack.push(ahead);=0A= }=0A= ret =3D false;=0A= }=0A= return ret;=0A= }=0A= =0A= function xpathMatchStack(stack, pattern) {=0A= =0A= // NOTE(mesch): The stack matches for variable cardinality are=0A= // greedy but don't do backtracking. This would be an issue only=0A= // with rules of the form A* A, i.e. with an element with variable=0A= // cardinality followed by the same element. Since that doesn't=0A= // occur in the grammar at hand, all matches on the stack are=0A= // unambiguous.=0A= =0A= var S =3D stack.length;=0A= var P =3D pattern.length;=0A= var p, s;=0A= var match =3D [];=0A= match.matchlength =3D 0;=0A= var ds =3D 0;=0A= for (p =3D P - 1, s =3D S - 1; p >=3D 0 && s >=3D 0; --p, s -=3D ds) {=0A= ds =3D 0;=0A= var qmatch =3D [];=0A= if (pattern[p] =3D=3D Q_MM) {=0A= p -=3D 1;=0A= match.push(qmatch);=0A= while (s - ds >=3D 0 && stack[s - ds].tag =3D=3D pattern[p]) {=0A= qmatch.push(stack[s - ds]);=0A= ds +=3D 1;=0A= match.matchlength +=3D 1;=0A= }=0A= =0A= } else if (pattern[p] =3D=3D Q_01) {=0A= p -=3D 1;=0A= match.push(qmatch);=0A= while (s - ds >=3D 0 && ds < 2 && stack[s - ds].tag =3D=3D = pattern[p]) {=0A= qmatch.push(stack[s - ds]);=0A= ds +=3D 1;=0A= match.matchlength +=3D 1;=0A= }=0A= =0A= } else if (pattern[p] =3D=3D Q_1M) {=0A= p -=3D 1;=0A= match.push(qmatch);=0A= if (stack[s].tag =3D=3D pattern[p]) {=0A= while (s - ds >=3D 0 && stack[s - ds].tag =3D=3D pattern[p]) {=0A= qmatch.push(stack[s - ds]);=0A= ds +=3D 1;=0A= match.matchlength +=3D 1;=0A= }=0A= } else {=0A= return [];=0A= }=0A= =0A= } else if (stack[s].tag =3D=3D pattern[p]) {=0A= match.push(stack[s]);=0A= ds +=3D 1;=0A= match.matchlength +=3D 1;=0A= =0A= } else {=0A= return [];=0A= }=0A= =0A= reverseInplace(qmatch);=0A= qmatch.expr =3D mapExpr(qmatch, function(m) { return m.expr; });=0A= }=0A= =0A= reverseInplace(match);=0A= =0A= if (p =3D=3D -1) {=0A= return match;=0A= =0A= } else {=0A= return [];=0A= }=0A= }=0A= =0A= function xpathTokenPrecedence(tag) {=0A= return tag.prec || 2;=0A= }=0A= =0A= function xpathGrammarPrecedence(frame) {=0A= var ret =3D 0;=0A= =0A= if (frame.rule) { /* normal reduce */=0A= if (frame.rule.length >=3D 3 && frame.rule[2] >=3D 0) {=0A= ret =3D frame.rule[2];=0A= =0A= } else {=0A= for (var i =3D 0; i < frame.rule[1].length; ++i) {=0A= var p =3D xpathTokenPrecedence(frame.rule[1][i]);=0A= ret =3D Math.max(ret, p);=0A= }=0A= }=0A= } else if (frame.tag) { /* TOKEN match */=0A= ret =3D xpathTokenPrecedence(frame.tag);=0A= =0A= } else if (frame.length) { /* Q_ match */=0A= for (var j =3D 0; j < frame.length; ++j) {=0A= var p =3D xpathGrammarPrecedence(frame[j]);=0A= ret =3D Math.max(ret, p);=0A= }=0A= }=0A= =0A= return ret;=0A= }=0A= =0A= function stackToString(stack) {=0A= var ret =3D '';=0A= for (var i =3D 0; i < stack.length; ++i) {=0A= if (ret) {=0A= ret +=3D '\n';=0A= }=0A= ret +=3D stack[i].tag.label;=0A= }=0A= return ret;=0A= }=0A= =0A= =0A= // XPath expression evaluation context. An XPath context consists of a=0A= // DOM node, a list of DOM nodes that contains this node, a number=0A= // that represents the position of the single node in the list, and a=0A= // current set of variable bindings. (See XPath spec.)=0A= //=0A= // The interface of the expression context:=0A= //=0A= // Constructor -- gets the node, its position, the node set it=0A= // belongs to, and a parent context as arguments. The parent context=0A= // is used to implement scoping rules for variables: if a variable=0A= // is not found in the current context, it is looked for in the=0A= // parent context, recursively. Except for node, all arguments have=0A= // default values: default position is 0, default node set is the=0A= // set that contains only the node, and the default parent is null.=0A= //=0A= // Notice that position starts at 0 at the outside interface;=0A= // inside XPath expressions this shows up as position()=3D1.=0A= //=0A= // clone() -- creates a new context with the current context as=0A= // parent. If passed as argument to clone(), the new context has a=0A= // different node, position, or node set. What is not passed is=0A= // inherited from the cloned context.=0A= //=0A= // setVariable(name, expr) -- binds given XPath expression to the=0A= // name.=0A= //=0A= // getVariable(name) -- what the name says.=0A= //=0A= // setNode(node, position) -- sets the context to the new node and=0A= // its corresponding position. Needed to implement scoping rules for=0A= // variables in XPath. (A variable is visible to all subsequent=0A= // siblings, not only to its children.)=0A= =0A= function ExprContext(node, position, nodelist, parent) {=0A= this.node =3D node;=0A= this.position =3D position || 0;=0A= this.nodelist =3D nodelist || [ node ];=0A= this.variables =3D {};=0A= this.parent =3D parent || null;=0A= this.root =3D parent ? parent.root : node.ownerDocument;=0A= }=0A= =0A= ExprContext.prototype.clone =3D function(node, position, nodelist) {=0A= return new=0A= ExprContext(node || this.node,=0A= typeof position !=3D 'undefined' ? position : = this.position,=0A= nodelist || this.nodelist, this);=0A= };=0A= =0A= ExprContext.prototype.setVariable =3D function(name, value) {=0A= this.variables[name] =3D value;=0A= };=0A= =0A= ExprContext.prototype.getVariable =3D function(name) {=0A= if (typeof this.variables[name] !=3D 'undefined') {=0A= return this.variables[name];=0A= =0A= } else if (this.parent) {=0A= return this.parent.getVariable(name);=0A= =0A= } else {=0A= return null;=0A= }=0A= }=0A= =0A= ExprContext.prototype.setNode =3D function(node, position) {=0A= this.node =3D node;=0A= this.position =3D position;=0A= }=0A= =0A= =0A= // XPath expression values. They are what XPath expressions evaluate=0A= // to. Strangely, the different value types are not specified in the=0A= // XPath syntax, but only in the semantics, so they don't show up as=0A= // nonterminals in the grammar. Yet, some expressions are required to=0A= // evaluate to particular types, and not every type can be coerced=0A= // into every other type. Although the types of XPath values are=0A= // similar to the types present in JavaScript, the type coercion rules=0A= // are a bit peculiar, so we explicitly model XPath types instead of=0A= // mapping them onto JavaScript types. (See XPath spec.)=0A= //=0A= // The four types are:=0A= //=0A= // StringValue=0A= //=0A= // NumberValue=0A= //=0A= // BooleanValue=0A= //=0A= // NodeSetValue=0A= //=0A= // The common interface of the value classes consists of methods that=0A= // implement the XPath type coercion rules:=0A= //=0A= // stringValue() -- returns the value as a JavaScript String,=0A= //=0A= // numberValue() -- returns the value as a JavaScript Number,=0A= //=0A= // booleanValue() -- returns the value as a JavaScript Boolean,=0A= //=0A= // nodeSetValue() -- returns the value as a JavaScript Array of DOM=0A= // Node objects.=0A= //=0A= =0A= function StringValue(value) {=0A= this.value =3D value;=0A= this.type =3D 'string';=0A= }=0A= =0A= StringValue.prototype.stringValue =3D function() {=0A= return this.value;=0A= }=0A= =0A= StringValue.prototype.booleanValue =3D function() {=0A= return this.value.length > 0;=0A= }=0A= =0A= StringValue.prototype.numberValue =3D function() {=0A= return this.value - 0;=0A= }=0A= =0A= StringValue.prototype.nodeSetValue =3D function() {=0A= throw this + ' ' + Error().stack;=0A= }=0A= =0A= function BooleanValue(value) {=0A= this.value =3D value;=0A= this.type =3D 'boolean';=0A= }=0A= =0A= BooleanValue.prototype.stringValue =3D function() {=0A= return '' + this.value;=0A= }=0A= =0A= BooleanValue.prototype.booleanValue =3D function() {=0A= return this.value;=0A= }=0A= =0A= BooleanValue.prototype.numberValue =3D function() {=0A= return this.value ? 1 : 0;=0A= }=0A= =0A= BooleanValue.prototype.nodeSetValue =3D function() {=0A= throw this + ' ' + Error().stack;=0A= }=0A= =0A= function NumberValue(value) {=0A= this.value =3D value;=0A= this.type =3D 'number';=0A= }=0A= =0A= NumberValue.prototype.stringValue =3D function() {=0A= return '' + this.value;=0A= }=0A= =0A= NumberValue.prototype.booleanValue =3D function() {=0A= return !!this.value;=0A= }=0A= =0A= NumberValue.prototype.numberValue =3D function() {=0A= return this.value - 0;=0A= }=0A= =0A= NumberValue.prototype.nodeSetValue =3D function() {=0A= throw this + ' ' + Error().stack;=0A= }=0A= =0A= function NodeSetValue(value) {=0A= this.value =3D value;=0A= this.type =3D 'node-set';=0A= }=0A= =0A= NodeSetValue.prototype.stringValue =3D function() {=0A= if (this.value.length =3D=3D 0) {=0A= return '';=0A= } else {=0A= return xmlValue(this.value[0]);=0A= }=0A= }=0A= =0A= NodeSetValue.prototype.booleanValue =3D function() {=0A= return this.value.length > 0;=0A= }=0A= =0A= NodeSetValue.prototype.numberValue =3D function() {=0A= return this.stringValue() - 0;=0A= }=0A= =0A= NodeSetValue.prototype.nodeSetValue =3D function() {=0A= return this.value;=0A= };=0A= =0A= // XPath expressions. They are used as nodes in the parse tree and=0A= // possess an evaluate() method to compute an XPath value given an XPath=0A= // context. Expressions are returned from the parser. Teh set of=0A= // expression classes closely mirrors the set of non terminal symbols=0A= // in the grammar. Every non trivial nonterminal symbol has a=0A= // corresponding expression class.=0A= //=0A= // The common expression interface consists of the following methods:=0A= //=0A= // evaluate(context) -- evaluates the expression, returns a value.=0A= //=0A= // toString() -- returns the XPath text representation of the=0A= // expression (defined in xsltdebug.js).=0A= //=0A= // parseTree(indent) -- returns a parse tree representation of the=0A= // expression (defined in xsltdebug.js).=0A= =0A= function TokenExpr(m) {=0A= this.value =3D m;=0A= }=0A= =0A= TokenExpr.prototype.evaluate =3D function() {=0A= return new StringValue(this.value);=0A= };=0A= =0A= function LocationExpr() {=0A= this.absolute =3D false;=0A= this.steps =3D [];=0A= }=0A= =0A= LocationExpr.prototype.appendStep =3D function(s) {=0A= this.steps.push(s);=0A= }=0A= =0A= LocationExpr.prototype.prependStep =3D function(s) {=0A= var steps0 =3D this.steps;=0A= this.steps =3D [ s ];=0A= for (var i =3D 0; i < steps0.length; ++i) {=0A= this.steps.push(steps0[i]);=0A= }=0A= };=0A= =0A= LocationExpr.prototype.evaluate =3D function(ctx) {=0A= var start;=0A= if (this.absolute) {=0A= start =3D ctx.root;=0A= =0A= } else {=0A= start =3D ctx.node;=0A= }=0A= =0A= var nodes =3D [];=0A= xPathStep(nodes, this.steps, 0, start, ctx);=0A= return new NodeSetValue(nodes);=0A= };=0A= =0A= function xPathStep(nodes, steps, step, input, ctx) {=0A= var s =3D steps[step];=0A= var ctx2 =3D ctx.clone(input);=0A= var nodelist =3D s.evaluate(ctx2).nodeSetValue();=0A= =0A= for (var i =3D 0; i < nodelist.length; ++i) {=0A= if (step =3D=3D steps.length - 1) {=0A= nodes.push(nodelist[i]);=0A= } else {=0A= xPathStep(nodes, steps, step + 1, nodelist[i], ctx);=0A= }=0A= }=0A= }=0A= =0A= function StepExpr(axis, nodetest, predicate) {=0A= this.axis =3D axis;=0A= this.nodetest =3D nodetest;=0A= this.predicate =3D predicate || [];=0A= }=0A= =0A= StepExpr.prototype.appendPredicate =3D function(p) {=0A= this.predicate.push(p);=0A= }=0A= =0A= StepExpr.prototype.evaluate =3D function(ctx) {=0A= var input =3D ctx.node;=0A= var nodelist =3D [];=0A= =0A= // NOTE(mesch): When this was a switch() statement, it didn't work=0A= // in Safari/2.0. Not sure why though; it resulted in the JavaScript=0A= // console output "undefined" (without any line number or so).=0A= =0A= if (this.axis =3D=3D xpathAxis.ANCESTOR_OR_SELF) {=0A= nodelist.push(input);=0A= for (var n =3D input.parentNode; n; n =3D input.parentNode) {=0A= nodelist.push(n);=0A= }=0A= =0A= } else if (this.axis =3D=3D xpathAxis.ANCESTOR) {=0A= for (var n =3D input.parentNode; n; n =3D input.parentNode) {=0A= nodelist.push(n);=0A= }=0A= =0A= } else if (this.axis =3D=3D xpathAxis.ATTRIBUTE) {=0A= copyArray(nodelist, input.attributes);=0A= =0A= } else if (this.axis =3D=3D xpathAxis.CHILD) {=0A= copyArray(nodelist, input.childNodes);=0A= =0A= } else if (this.axis =3D=3D xpathAxis.DESCENDANT_OR_SELF) {=0A= nodelist.push(input);=0A= xpathCollectDescendants(nodelist, input);=0A= =0A= } else if (this.axis =3D=3D xpathAxis.DESCENDANT) {=0A= xpathCollectDescendants(nodelist, input);=0A= =0A= } else if (this.axis =3D=3D xpathAxis.FOLLOWING) {=0A= for (var n =3D input.parentNode; n; n =3D n.parentNode) {=0A= for (var nn =3D n.nextSibling; nn; nn =3D nn.nextSibling) {=0A= nodelist.push(nn);=0A= xpathCollectDescendants(nodelist, nn);=0A= }=0A= }=0A= =0A= } else if (this.axis =3D=3D xpathAxis.FOLLOWING_SIBLING) {=0A= for (var n =3D input.nextSibling; n; n =3D input.nextSibling) {=0A= nodelist.push(n);=0A= }=0A= =0A= } else if (this.axis =3D=3D xpathAxis.NAMESPACE) {=0A= alert('not implemented: axis namespace');=0A= =0A= } else if (this.axis =3D=3D xpathAxis.PARENT) {=0A= if (input.parentNode) {=0A= nodelist.push(input.parentNode);=0A= }=0A= =0A= } else if (this.axis =3D=3D xpathAxis.PRECEDING) {=0A= for (var n =3D input.parentNode; n; n =3D n.parentNode) {=0A= for (var nn =3D n.previousSibling; nn; nn =3D nn.previousSibling) {=0A= nodelist.push(nn);=0A= xpathCollectDescendantsReverse(nodelist, nn);=0A= }=0A= }=0A= =0A= } else if (this.axis =3D=3D xpathAxis.PRECEDING_SIBLING) {=0A= for (var n =3D input.previousSibling; n; n =3D = input.previousSibling) {=0A= nodelist.push(n);=0A= }=0A= =0A= } else if (this.axis =3D=3D xpathAxis.SELF) {=0A= nodelist.push(input);=0A= =0A= } else {=0A= throw 'ERROR -- NO SUCH AXIS: ' + this.axis;=0A= }=0A= =0A= // process node test=0A= var nodelist0 =3D nodelist;=0A= nodelist =3D [];=0A= for (var i =3D 0; i < nodelist0.length; ++i) {=0A= var n =3D nodelist0[i];=0A= if (this.nodetest.evaluate(ctx.clone(n, i, = nodelist0)).booleanValue()) {=0A= nodelist.push(n);=0A= }=0A= }=0A= =0A= // process predicates=0A= for (var i =3D 0; i < this.predicate.length; ++i) {=0A= var nodelist0 =3D nodelist;=0A= nodelist =3D [];=0A= for (var ii =3D 0; ii < nodelist0.length; ++ii) {=0A= var n =3D nodelist0[ii];=0A= if (this.predicate[i].evaluate(ctx.clone(n, ii, = nodelist0)).booleanValue()) {=0A= nodelist.push(n);=0A= }=0A= }=0A= }=0A= =0A= return new NodeSetValue(nodelist);=0A= };=0A= =0A= function NodeTestAny() {=0A= this.value =3D new BooleanValue(true);=0A= }=0A= =0A= NodeTestAny.prototype.evaluate =3D function(ctx) {=0A= return this.value;=0A= };=0A= =0A= function NodeTestElement() {}=0A= =0A= NodeTestElement.prototype.evaluate =3D function(ctx) {=0A= return new BooleanValue(ctx.node.nodeType =3D=3D DOM_ELEMENT_NODE);=0A= }=0A= =0A= function NodeTestText() {}=0A= =0A= NodeTestText.prototype.evaluate =3D function(ctx) {=0A= return new BooleanValue(ctx.node.nodeType =3D=3D DOM_TEXT_NODE);=0A= }=0A= =0A= function NodeTestComment() {}=0A= =0A= NodeTestComment.prototype.evaluate =3D function(ctx) {=0A= return new BooleanValue(ctx.node.nodeType =3D=3D DOM_COMMENT_NODE);=0A= }=0A= =0A= function NodeTestPI(target) {=0A= this.target =3D target;=0A= }=0A= =0A= NodeTestPI.prototype.evaluate =3D function(ctx) {=0A= return new=0A= BooleanValue(ctx.node.nodeType =3D=3D DOM_PROCESSING_INSTRUCTION_NODE = &&=0A= (!this.target || ctx.node.nodeName =3D=3D this.target));=0A= }=0A= =0A= function NodeTestNC(nsprefix) {=0A= this.regex =3D new RegExp("^" + nsprefix + ":");=0A= this.nsprefix =3D nsprefix;=0A= }=0A= =0A= NodeTestNC.prototype.evaluate =3D function(ctx) {=0A= var n =3D ctx.node;=0A= return new BooleanValue(this.regex.match(n.nodeName));=0A= }=0A= =0A= function NodeTestName(name) {=0A= this.name =3D name;=0A= }=0A= =0A= NodeTestName.prototype.evaluate =3D function(ctx) {=0A= var n =3D ctx.node;=0A= return new BooleanValue(n.nodeName =3D=3D this.name);=0A= }=0A= =0A= function PredicateExpr(expr) {=0A= this.expr =3D expr;=0A= }=0A= =0A= PredicateExpr.prototype.evaluate =3D function(ctx) {=0A= var v =3D this.expr.evaluate(ctx);=0A= if (v.type =3D=3D 'number') {=0A= // NOTE(mesch): Internally, position is represented starting with=0A= // 0, however in XPath position starts with 1. See functions=0A= // position() and last().=0A= return new BooleanValue(ctx.position =3D=3D v.numberValue() - 1);=0A= } else {=0A= return new BooleanValue(v.booleanValue());=0A= }=0A= };=0A= =0A= function FunctionCallExpr(name) {=0A= this.name =3D name;=0A= this.args =3D [];=0A= }=0A= =0A= FunctionCallExpr.prototype.appendArg =3D function(arg) {=0A= this.args.push(arg);=0A= };=0A= =0A= FunctionCallExpr.prototype.evaluate =3D function(ctx) {=0A= var fn =3D '' + this.name.value;=0A= var f =3D this.xpathfunctions[fn];=0A= if (f) {=0A= return f.call(this, ctx);=0A= } else {=0A= Log.write('XPath NO SUCH FUNCTION ' + fn);=0A= return new BooleanValue(false);=0A= }=0A= };=0A= =0A= FunctionCallExpr.prototype.xpathfunctions =3D {=0A= 'last': function(ctx) {=0A= assert(this.args.length =3D=3D 0);=0A= // NOTE(mesch): XPath position starts at 1.=0A= return new NumberValue(ctx.nodelist.length);=0A= },=0A= =0A= 'position': function(ctx) {=0A= assert(this.args.length =3D=3D 0);=0A= // NOTE(mesch): XPath position starts at 1.=0A= return new NumberValue(ctx.position + 1);=0A= },=0A= =0A= 'count': function(ctx) {=0A= assert(this.args.length =3D=3D 1);=0A= var v =3D this.args[0].evaluate(ctx);=0A= return new NumberValue(v.nodeSetValue().length);=0A= },=0A= =0A= 'id': function(ctx) {=0A= assert(this.args.length =3D=3D 1);=0A= var e =3D this.args.evaluate(ctx);=0A= var ret =3D [];=0A= var ids;=0A= if (e.type =3D=3D 'node-set') {=0A= ids =3D [];=0A= for (var i =3D 0; i < e.length; ++i) {=0A= var v =3D xmlValue(e[i]).split(/\s+/);=0A= for (var ii =3D 0; ii < v.length; ++ii) {=0A= ids.push(v[ii]);=0A= }=0A= }=0A= } else {=0A= ids =3D e.split(/\s+/);=0A= }=0A= var d =3D ctx.node.ownerDocument;=0A= for (var i =3D 0; i < ids.length; ++i) {=0A= var n =3D d.getElementById(ids[i]);=0A= if (n) {=0A= ret.push(n);=0A= }=0A= }=0A= return new NodeSetValue(ret);=0A= },=0A= =0A= 'local-name': function(ctx) {=0A= alert('not implmented yet: XPath function local-name()');=0A= },=0A= =0A= 'namespace-uri': function(ctx) {=0A= alert('not implmented yet: XPath function namespace-uri()');=0A= },=0A= =0A= 'name': function(ctx) {=0A= assert(this.args.length =3D=3D 1 || this.args.length =3D=3D 0);=0A= var n;=0A= if (this.args.length =3D=3D 0) {=0A= n =3D [ ctx.node ];=0A= } else {=0A= n =3D this.args[0].evaluate(ctx).nodeSetValue();=0A= }=0A= =0A= if (n.length =3D=3D 0) {=0A= return new StringValue('');=0A= } else {=0A= return new StringValue(n[0].nodeName);=0A= }=0A= },=0A= =0A= 'string': function(ctx) {=0A= assert(this.args.length =3D=3D 1 || this.args.length =3D=3D 0);=0A= if (this.args.length =3D=3D 0) {=0A= return new StringValue(new NodeSetValue([ ctx.node = ]).stringValue());=0A= } else {=0A= return new StringValue(this.args[0].evaluate(ctx).stringValue());=0A= }=0A= },=0A= =0A= 'concat': function(ctx) {=0A= var ret =3D '';=0A= for (var i =3D 0; i < this.args.length; ++i) {=0A= ret +=3D this.args[i].evaluate(ctx).stringValue();=0A= }=0A= return new StringValue(ret);=0A= },=0A= =0A= 'starts-with': function(ctx) {=0A= assert(this.args.length =3D=3D 2);=0A= var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A= var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A= return new BooleanValue(s0.indexOf(s1) =3D=3D 0);=0A= },=0A= =0A= 'contains': function(ctx) {=0A= assert(this.args.length =3D=3D 2);=0A= var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A= var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A= return new BooleanValue(s0.indexOf(s1) !=3D -1);=0A= },=0A= =0A= 'substring-before': function(ctx) {=0A= assert(this.args.length =3D=3D 2);=0A= var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A= var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A= var i =3D s0.indexOf(s1);=0A= var ret;=0A= if (i =3D=3D -1) {=0A= ret =3D '';=0A= } else {=0A= ret =3D s0.substr(0,i);=0A= }=0A= return new StringValue(ret);=0A= },=0A= =0A= 'substring-after': function(ctx) {=0A= assert(this.args.length =3D=3D 2);=0A= var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A= var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A= var i =3D s0.indexOf(s1);=0A= var ret;=0A= if (i =3D=3D -1) {=0A= ret =3D '';=0A= } else {=0A= ret =3D s0.substr(i + s1.length);=0A= }=0A= return new StringValue(ret);=0A= },=0A= =0A= 'substring': function(ctx) {=0A= // NOTE: XPath defines the position of the first character in a=0A= // string to be 1, in JavaScript this is 0 ([XPATH] Section 4.2).=0A= assert(this.args.length =3D=3D 2 || this.args.length =3D=3D 3);=0A= var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A= var s1 =3D this.args[1].evaluate(ctx).numberValue();=0A= var ret;=0A= if (this.args.length =3D=3D 2) {=0A= var i1 =3D Math.max(0, Math.round(s1) - 1);=0A= ret =3D s0.substr(i1);=0A= =0A= } else {=0A= var s2 =3D this.args[2].evaluate(ctx).numberValue();=0A= var i0 =3D Math.round(s1) - 1;=0A= var i1 =3D Math.max(0, i0);=0A= var i2 =3D Math.round(s2) - Math.max(0, -i0);=0A= ret =3D s0.substr(i1, i2);=0A= }=0A= return new StringValue(ret);=0A= },=0A= =0A= 'string-length': function(ctx) {=0A= var s;=0A= if (this.args.length > 0) {=0A= s =3D this.args[0].evaluate(ctx).stringValue();=0A= } else {=0A= s =3D new NodeSetValue([ ctx.node ]).stringValue();=0A= }=0A= return new NumberValue(s.length);=0A= },=0A= =0A= 'normalize-space': function(ctx) {=0A= var s;=0A= if (this.args.length > 0) {=0A= s =3D this.args[0].evaluate(ctx).stringValue();=0A= } else {=0A= s =3D new NodeSetValue([ ctx.node ]).stringValue();=0A= }=0A= s =3D s.replace(/^\s*/,'').replace(/\s*$/,'').replace(/\s+/g, ' ');=0A= return new StringValue(s);=0A= },=0A= =0A= 'translate': function(ctx) {=0A= assert(this.args.length =3D=3D 3);=0A= var s0 =3D this.args[0].evaluate(ctx).stringValue();=0A= var s1 =3D this.args[1].evaluate(ctx).stringValue();=0A= var s2 =3D this.args[2].evaluate(ctx).stringValue();=0A= =0A= for (var i =3D 0; i < s1.length; ++i) {=0A= s0 =3D s0.replace(new RegExp(s1.charAt(i), 'g'), s2.charAt(i));=0A= }=0A= return new StringValue(s0);=0A= },=0A= =0A= 'boolean': function(ctx) {=0A= assert(this.args.length =3D=3D 1);=0A= return new BooleanValue(this.args[0].evaluate(ctx).booleanValue());=0A= },=0A= =0A= 'not': function(ctx) {=0A= assert(this.args.length =3D=3D 1);=0A= var ret =3D !this.args[0].evaluate(ctx).booleanValue();=0A= return new BooleanValue(ret);=0A= },=0A= =0A= 'true': function(ctx) {=0A= assert(this.args.length =3D=3D 0);=0A= return new BooleanValue(true);=0A= },=0A= =0A= 'false': function(ctx) {=0A= assert(this.args.length =3D=3D 0);=0A= return new BooleanValue(false);=0A= },=0A= =0A= 'lang': function(ctx) {=0A= assert(this.args.length =3D=3D 1);=0A= var lang =3D this.args[0].evaluate(ctx).stringValue();=0A= var xmllang;=0A= var n =3D ctx.node;=0A= while (n && n !=3D n.parentNode /* just in case ... */) {=0A= xmllang =3D n.getAttribute('xml:lang');=0A= if (xmllang) {=0A= break;=0A= }=0A= n =3D n.parentNode;=0A= }=0A= if (!xmllang) {=0A= return new BooleanValue(false);=0A= } else {=0A= var re =3D new RegExp('^' + lang + '$', 'i');=0A= return new BooleanValue(xmllang.match(re) ||=0A= xmllang.replace(/_.*$/,'').match(re));=0A= }=0A= },=0A= =0A= 'number': function(ctx) {=0A= assert(this.args.length =3D=3D 1 || this.args.length =3D=3D 0);=0A= =0A= if (this.args.length =3D=3D 1) {=0A= return new NumberValue(this.args[0].evaluate(ctx).numberValue());=0A= } else {=0A= return new NumberValue(new NodeSetValue([ ctx.node = ]).numberValue());=0A= }=0A= },=0A= =0A= 'sum': function(ctx) {=0A= assert(this.args.length =3D=3D 1);=0A= var n =3D this.args[0].evaluate(ctx).nodeSetValue();=0A= var sum =3D 0;=0A= for (var i =3D 0; i < n.length; ++i) {=0A= sum +=3D xmlValue(n[i]) - 0;=0A= }=0A= return new NumberValue(sum);=0A= },=0A= =0A= 'floor': function(ctx) {=0A= assert(this.args.length =3D=3D 1);=0A= var num =3D this.args[0].evaluate(ctx).numberValue();=0A= return new NumberValue(Math.floor(num));=0A= },=0A= =0A= 'ceiling': function(ctx) {=0A= assert(this.args.length =3D=3D 1);=0A= var num =3D this.args[0].evaluate(ctx).numberValue();=0A= return new NumberValue(Math.ceil(num));=0A= },=0A= =0A= 'round': function(ctx) {=0A= assert(this.args.length =3D=3D 1);=0A= var num =3D this.args[0].evaluate(ctx).numberValue();=0A= return new NumberValue(Math.round(num));=0A= },=0A= =0A= // TODO(mesch): The following functions are custom. There is a=0A= // standard that defines how to add functions, which should be=0A= // applied here.=0A= =0A= 'ext-join': function(ctx) {=0A= assert(this.args.length =3D=3D 2);=0A= var nodes =3D this.args[0].evaluate(ctx).nodeSetValue();=0A= var delim =3D this.args[1].evaluate(ctx).stringValue();=0A= var ret =3D '';=0A= for (var i =3D 0; i < nodes.length; ++i) {=0A= if (ret) {=0A= ret +=3D delim;=0A= }=0A= ret +=3D xmlValue(nodes[i]);=0A= }=0A= return new StringValue(ret);=0A= },=0A= =0A= // ext-if() evaluates and returns its second argument, if the=0A= // boolean value of its first argument is true, otherwise it=0A= // evaluates and returns its third argument.=0A= =0A= 'ext-if': function(ctx) {=0A= assert(this.args.length =3D=3D 3);=0A= if (this.args[0].evaluate(ctx).booleanValue()) {=0A= return this.args[1].evaluate(ctx);=0A= } else {=0A= return this.args[2].evaluate(ctx);=0A= }=0A= },=0A= =0A= 'ext-sprintf': function(ctx) {=0A= assert(this.args.length >=3D 1);=0A= var args =3D [];=0A= for (var i =3D 0; i < this.args.length; ++i) {=0A= args.push(this.args[i].evaluate(ctx).stringValue());=0A= }=0A= return new StringValue(sprintf.apply(null, args));=0A= },=0A= =0A= // ext-cardinal() evaluates its single argument as a number, and=0A= // returns the current node that many times. It can be used in the=0A= // select attribute to iterate over an integer range.=0A= =0A= 'ext-cardinal': function(ctx) {=0A= assert(this.args.length >=3D 1);=0A= var c =3D this.args[0].evaluate(ctx).numberValue();=0A= var ret =3D [];=0A= for (var i =3D 0; i < c; ++i) {=0A= ret.push(ctx.node);=0A= }=0A= return new NodeSetValue(ret);=0A= }=0A= };=0A= =0A= function UnionExpr(expr1, expr2) {=0A= this.expr1 =3D expr1;=0A= this.expr2 =3D expr2;=0A= }=0A= =0A= UnionExpr.prototype.evaluate =3D function(ctx) {=0A= var nodes1 =3D this.expr1.evaluate(ctx).nodeSetValue();=0A= var nodes2 =3D this.expr2.evaluate(ctx).nodeSetValue();=0A= var I1 =3D nodes1.length;=0A= for (var i2 =3D 0; i2 < nodes2.length; ++i2) {=0A= for (var i1 =3D 0; i1 < I1; ++i1) {=0A= if (nodes1[i1] =3D=3D nodes2[i2]) {=0A= // break inner loop and continue outer loop, labels confuse=0A= // the js compiler, so we don't use them here.=0A= i1 =3D I1;=0A= }=0A= }=0A= nodes1.push(nodes2[i2]);=0A= }=0A= return new NodeSetValue(nodes2);=0A= };=0A= =0A= function PathExpr(filter, rel) {=0A= this.filter =3D filter;=0A= this.rel =3D rel;=0A= }=0A= =0A= PathExpr.prototype.evaluate =3D function(ctx) {=0A= var nodes =3D this.filter.evaluate(ctx).nodeSetValue();=0A= var nodes1 =3D [];=0A= for (var i =3D 0; i < nodes.length; ++i) {=0A= var nodes0 =3D this.rel.evaluate(ctx.clone(nodes[i], i, = nodes)).nodeSetValue();=0A= for (var ii =3D 0; ii < nodes0.length; ++ii) {=0A= nodes1.push(nodes0[ii]);=0A= }=0A= }=0A= return new NodeSetValue(nodes1);=0A= };=0A= =0A= function FilterExpr(expr, predicate) {=0A= this.expr =3D expr;=0A= this.predicate =3D predicate;=0A= }=0A= =0A= FilterExpr.prototype.evaluate =3D function(ctx) {=0A= var nodes =3D this.expr.evaluate(ctx).nodeSetValue();=0A= for (var i =3D 0; i < this.predicate.length; ++i) {=0A= var nodes0 =3D nodes;=0A= nodes =3D [];=0A= for (var j =3D 0; j < nodes0.length; ++j) {=0A= var n =3D nodes0[j];=0A= if (this.predicate[i].evaluate(ctx.clone(n, j, = nodes0)).booleanValue()) {=0A= nodes.push(n);=0A= }=0A= }=0A= }=0A= =0A= return new NodeSetValue(nodes);=0A= }=0A= =0A= function UnaryMinusExpr(expr) {=0A= this.expr =3D expr;=0A= }=0A= =0A= UnaryMinusExpr.prototype.evaluate =3D function(ctx) {=0A= return new NumberValue(-this.expr.evaluate(ctx).numberValue());=0A= };=0A= =0A= function BinaryExpr(expr1, op, expr2) {=0A= this.expr1 =3D expr1;=0A= this.expr2 =3D expr2;=0A= this.op =3D op;=0A= }=0A= =0A= BinaryExpr.prototype.evaluate =3D function(ctx) {=0A= var ret;=0A= switch (this.op.value) {=0A= case 'or':=0A= ret =3D new BooleanValue(this.expr1.evaluate(ctx).booleanValue() ||=0A= this.expr2.evaluate(ctx).booleanValue());=0A= break;=0A= =0A= case 'and':=0A= ret =3D new BooleanValue(this.expr1.evaluate(ctx).booleanValue() &&=0A= this.expr2.evaluate(ctx).booleanValue());=0A= break;=0A= =0A= case '+':=0A= ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() +=0A= this.expr2.evaluate(ctx).numberValue());=0A= break;=0A= =0A= case '-':=0A= ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() -=0A= this.expr2.evaluate(ctx).numberValue());=0A= break;=0A= =0A= case '*':=0A= ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() *=0A= this.expr2.evaluate(ctx).numberValue());=0A= break;=0A= =0A= case 'mod':=0A= ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() %=0A= this.expr2.evaluate(ctx).numberValue());=0A= break;=0A= =0A= case 'div':=0A= ret =3D new NumberValue(this.expr1.evaluate(ctx).numberValue() /=0A= this.expr2.evaluate(ctx).numberValue());=0A= break;=0A= =0A= case '=3D':=0A= ret =3D this.compare(ctx, function(x1, x2) { return x1 =3D=3D x2; = });=0A= break;=0A= =0A= case '!=3D':=0A= ret =3D this.compare(ctx, function(x1, x2) { return x1 !=3D x2; });=0A= break;=0A= =0A= case '<':=0A= ret =3D this.compare(ctx, function(x1, x2) { return x1 < x2; });=0A= break;=0A= =0A= case '<=3D':=0A= ret =3D this.compare(ctx, function(x1, x2) { return x1 <=3D x2; });=0A= break;=0A= =0A= case '>':=0A= ret =3D this.compare(ctx, function(x1, x2) { return x1 > x2; });=0A= break;=0A= =0A= case '>=3D':=0A= ret =3D this.compare(ctx, function(x1, x2) { return x1 >=3D x2; });=0A= break;=0A= =0A= default:=0A= alert('BinaryExpr.evaluate: ' + this.op.value);=0A= }=0A= return ret;=0A= };=0A= =0A= BinaryExpr.prototype.compare =3D function(ctx, cmp) {=0A= var v1 =3D this.expr1.evaluate(ctx);=0A= var v2 =3D this.expr2.evaluate(ctx);=0A= =0A= var ret;=0A= if (v1.type =3D=3D 'node-set' && v2.type =3D=3D 'node-set') {=0A= var n1 =3D v1.nodeSetValue();=0A= var n2 =3D v2.nodeSetValue();=0A= ret =3D false;=0A= for (var i1 =3D 0; i1 < n1.length; ++i1) {=0A= for (var i2 =3D 0; i2 < n2.length; ++i2) {=0A= if (cmp(xmlValue(n1[i1]), xmlValue(n2[i2]))) {=0A= ret =3D true;=0A= // Break outer loop. Labels confuse the jscompiler and we=0A= // don't use them.=0A= i2 =3D n2.length;=0A= i1 =3D n1.length;=0A= }=0A= }=0A= }=0A= =0A= } else if (v1.type =3D=3D 'node-set' || v2.type =3D=3D 'node-set') {=0A= =0A= if (v1.type =3D=3D 'number') {=0A= var s =3D v1.numberValue();=0A= var n =3D v2.nodeSetValue();=0A= =0A= ret =3D false;=0A= for (var i =3D 0; i < n.length; ++i) {=0A= var nn =3D xmlValue(n[i]) - 0;=0A= if (cmp(s, nn)) {=0A= ret =3D true;=0A= break;=0A= }=0A= }=0A= =0A= } else if (v2.type =3D=3D 'number') {=0A= var n =3D v1.nodeSetValue();=0A= var s =3D v2.numberValue();=0A= =0A= ret =3D false;=0A= for (var i =3D 0; i < n.length; ++i) {=0A= var nn =3D xmlValue(n[i]) - 0;=0A= if (cmp(nn, s)) {=0A= ret =3D true;=0A= break;=0A= }=0A= }=0A= =0A= } else if (v1.type =3D=3D 'string') {=0A= var s =3D v1.stringValue();=0A= var n =3D v2.nodeSetValue();=0A= =0A= ret =3D false;=0A= for (var i =3D 0; i < n.length; ++i) {=0A= var nn =3D xmlValue(n[i]);=0A= if (cmp(s, nn)) {=0A= ret =3D true;=0A= break;=0A= }=0A= }=0A= =0A= } else if (v2.type =3D=3D 'string') {=0A= var n =3D v1.nodeSetValue();=0A= var s =3D v2.stringValue();=0A= =0A= ret =3D false;=0A= for (var i =3D 0; i < n.length; ++i) {=0A= var nn =3D xmlValue(n[i]);=0A= if (cmp(nn, s)) {=0A= ret =3D true;=0A= break;=0A= }=0A= }=0A= =0A= } else {=0A= ret =3D cmp(v1.booleanValue(), v2.booleanValue());=0A= }=0A= =0A= } else if (v1.type =3D=3D 'boolean' || v2.type =3D=3D 'boolean') {=0A= ret =3D cmp(v1.booleanValue(), v2.booleanValue());=0A= =0A= } else if (v1.type =3D=3D 'number' || v2.type =3D=3D 'number') {=0A= ret =3D cmp(v1.numberValue(), v2.numberValue());=0A= =0A= } else {=0A= ret =3D cmp(v1.stringValue(), v2.stringValue());=0A= }=0A= =0A= return new BooleanValue(ret);=0A= }=0A= =0A= function LiteralExpr(value) {=0A= this.value =3D value;=0A= }=0A= =0A= LiteralExpr.prototype.evaluate =3D function(ctx) {=0A= return new StringValue(this.value);=0A= };=0A= =0A= function NumberExpr(value) {=0A= this.value =3D value;=0A= }=0A= =0A= NumberExpr.prototype.evaluate =3D function(ctx) {=0A= return new NumberValue(this.value);=0A= };=0A= =0A= function VariableExpr(name) {=0A= this.name =3D name;=0A= }=0A= =0A= VariableExpr.prototype.evaluate =3D function(ctx) {=0A= return ctx.getVariable(this.name);=0A= }=0A= =0A= // Factory functions for semantic values (i.e. Expressions) of the=0A= // productions in the grammar. When a production is matched to reduce=0A= // the current parse state stack, the function is called with the=0A= // semantic values of the matched elements as arguments, and returns=0A= // another semantic value. The semantic value is a node of the parse=0A= // tree, an expression object with an evaluate() method that evaluates = the=0A= // expression in an actual context. These factory functions are used=0A= // in the specification of the grammar rules, below.=0A= =0A= function makeTokenExpr(m) {=0A= return new TokenExpr(m);=0A= }=0A= =0A= function passExpr(e) {=0A= return e;=0A= }=0A= =0A= function makeLocationExpr1(slash, rel) {=0A= rel.absolute =3D true;=0A= return rel;=0A= }=0A= =0A= function makeLocationExpr2(dslash, rel) {=0A= rel.absolute =3D true;=0A= rel.prependStep(makeAbbrevStep(dslash.value));=0A= return rel;=0A= }=0A= =0A= function makeLocationExpr3(slash) {=0A= var ret =3D new LocationExpr();=0A= ret.appendStep(makeAbbrevStep('.'));=0A= ret.absolute =3D true;=0A= return ret;=0A= }=0A= =0A= function makeLocationExpr4(dslash) {=0A= var ret =3D new LocationExpr();=0A= ret.absolute =3D true;=0A= ret.appendStep(makeAbbrevStep(dslash.value));=0A= return ret;=0A= }=0A= =0A= function makeLocationExpr5(step) {=0A= var ret =3D new LocationExpr();=0A= ret.appendStep(step);=0A= return ret;=0A= }=0A= =0A= function makeLocationExpr6(rel, slash, step) {=0A= rel.appendStep(step);=0A= return rel;=0A= }=0A= =0A= function makeLocationExpr7(rel, dslash, step) {=0A= rel.appendStep(makeAbbrevStep(dslash.value));=0A= return rel;=0A= }=0A= =0A= function makeStepExpr1(dot) {=0A= return makeAbbrevStep(dot.value);=0A= }=0A= =0A= function makeStepExpr2(ddot) {=0A= return makeAbbrevStep(ddot.value);=0A= }=0A= =0A= function makeStepExpr3(axisname, axis, nodetest) {=0A= return new StepExpr(axisname.value, nodetest);=0A= }=0A= =0A= function makeStepExpr4(at, nodetest) {=0A= return new StepExpr('attribute', nodetest);=0A= }=0A= =0A= function makeStepExpr5(nodetest) {=0A= return new StepExpr('child', nodetest);=0A= }=0A= =0A= function makeStepExpr6(step, predicate) {=0A= step.appendPredicate(predicate);=0A= return step;=0A= }=0A= =0A= function makeAbbrevStep(abbrev) {=0A= switch (abbrev) {=0A= case '//':=0A= return new StepExpr('descendant-or-self', new NodeTestAny);=0A= =0A= case '.':=0A= return new StepExpr('self', new NodeTestAny);=0A= =0A= case '..':=0A= return new StepExpr('parent', new NodeTestAny);=0A= }=0A= }=0A= =0A= function makeNodeTestExpr1(asterisk) {=0A= return new NodeTestElement;=0A= }=0A= =0A= function makeNodeTestExpr2(ncname, colon, asterisk) {=0A= return new NodeTestNC(ncname.value);=0A= }=0A= =0A= function makeNodeTestExpr3(qname) {=0A= return new NodeTestName(qname.value);=0A= }=0A= =0A= function makeNodeTestExpr4(typeo, parenc) {=0A= var type =3D typeo.value.replace(/\s*\($/, '');=0A= switch(type) {=0A= case 'node':=0A= return new NodeTestAny;=0A= =0A= case 'text':=0A= return new NodeTestText;=0A= =0A= case 'comment':=0A= return new NodeTestComment;=0A= =0A= case 'processing-instruction':=0A= return new NodeTestPI;=0A= }=0A= }=0A= =0A= function makeNodeTestExpr5(typeo, target, parenc) {=0A= var type =3D typeo.replace(/\s*\($/, '');=0A= if (type !=3D 'processing-instruction') {=0A= throw type + ' ' + Error().stack;=0A= }=0A= return new NodeTestPI(target.value);=0A= }=0A= =0A= function makePredicateExpr(pareno, expr, parenc) {=0A= return new PredicateExpr(expr);=0A= }=0A= =0A= function makePrimaryExpr(pareno, expr, parenc) {=0A= return expr;=0A= }=0A= =0A= function makeFunctionCallExpr1(name, pareno, parenc) {=0A= return new FunctionCallExpr(name);=0A= }=0A= =0A= function makeFunctionCallExpr2(name, pareno, arg1, args, parenc) {=0A= var ret =3D new FunctionCallExpr(name);=0A= ret.appendArg(arg1);=0A= for (var i =3D 0; i < args.length; ++i) {=0A= ret.appendArg(args[i]);=0A= }=0A= return ret;=0A= }=0A= =0A= function makeArgumentExpr(comma, expr) {=0A= return expr;=0A= }=0A= =0A= function makeUnionExpr(expr1, pipe, expr2) {=0A= return new UnionExpr(expr1, expr2);=0A= }=0A= =0A= function makePathExpr1(filter, slash, rel) {=0A= return new PathExpr(filter, rel);=0A= }=0A= =0A= function makePathExpr2(filter, dslash, rel) {=0A= rel.prependStep(makeAbbrevStep(dslash.value));=0A= return new PathExpr(filter, rel);=0A= }=0A= =0A= function makeFilterExpr(expr, predicates) {=0A= if (predicates.length > 0) {=0A= return new FilterExpr(expr, predicates);=0A= } else {=0A= return expr;=0A= }=0A= }=0A= =0A= function makeUnaryMinusExpr(minus, expr) {=0A= return new UnaryMinusExpr(expr);=0A= }=0A= =0A= function makeBinaryExpr(expr1, op, expr2) {=0A= return new BinaryExpr(expr1, op, expr2);=0A= }=0A= =0A= function makeLiteralExpr(token) {=0A= // remove quotes from the parsed value:=0A= var value =3D token.value.substring(1, token.value.length - 1);=0A= return new LiteralExpr(value);=0A= }=0A= =0A= function makeNumberExpr(token) {=0A= return new NumberExpr(token.value);=0A= }=0A= =0A= function makeVariableReference(dollar, name) {=0A= return new VariableExpr(name.value);=0A= }=0A= =0A= // Used before parsing for optimization of common simple cases. See=0A= // the begin of xpathParse() for which they are.=0A= function makeSimpleExpr(expr) {=0A= if (expr.charAt(0) =3D=3D '$') {=0A= return new VariableExpr(expr.substr(1));=0A= } else if (expr.charAt(0) =3D=3D '@') {=0A= var a =3D new NodeTestName(expr.substr(1));=0A= var b =3D new StepExpr('attribute', a);=0A= var c =3D new LocationExpr();=0A= c.appendStep(b);=0A= return c;=0A= } else if (expr.match(/^[0-9]+$/)) {=0A= return new NumberExpr(expr);=0A= } else {=0A= var a =3D new NodeTestName(expr);=0A= var b =3D new StepExpr('child', a);=0A= var c =3D new LocationExpr();=0A= c.appendStep(b);=0A= return c;=0A= }=0A= }=0A= =0A= function makeSimpleExpr2(expr) {=0A= var steps =3D expr.split('/');=0A= var c =3D new LocationExpr();=0A= for (var i =3D 0; i < steps.length; i++) {=0A= var a =3D new NodeTestName(steps[i]);=0A= var b =3D new StepExpr('child', a);=0A= c.appendStep(b);=0A= }=0A= return c;=0A= }=0A= =0A= // The axes of XPath expressions.=0A= =0A= var xpathAxis =3D {=0A= ANCESTOR_OR_SELF: 'ancestor-or-self',=0A= ANCESTOR: 'ancestor',=0A= ATTRIBUTE: 'attribute',=0A= CHILD: 'child',=0A= DESCENDANT_OR_SELF: 'descendant-or-self',=0A= DESCENDANT: 'descendant',=0A= FOLLOWING_SIBLING: 'following-sibling',=0A= FOLLOWING: 'following',=0A= NAMESPACE: 'namespace',=0A= PARENT: 'parent',=0A= PRECEDING_SIBLING: 'preceding-sibling',=0A= PRECEDING: 'preceding',=0A= SELF: 'self'=0A= };=0A= =0A= var xpathAxesRe =3D [=0A= xpathAxis.ANCESTOR_OR_SELF,=0A= xpathAxis.ANCESTOR,=0A= xpathAxis.ATTRIBUTE,=0A= xpathAxis.CHILD,=0A= xpathAxis.DESCENDANT_OR_SELF,=0A= xpathAxis.DESCENDANT,=0A= xpathAxis.FOLLOWING_SIBLING,=0A= xpathAxis.FOLLOWING,=0A= xpathAxis.NAMESPACE,=0A= xpathAxis.PARENT,=0A= xpathAxis.PRECEDING_SIBLING,=0A= xpathAxis.PRECEDING,=0A= xpathAxis.SELF=0A= ].join('|');=0A= =0A= =0A= // The tokens of the language. The label property is just used for=0A= // generating debug output. The prec property is the precedence used=0A= // for shift/reduce resolution. Default precedence is 0 as a lookahead=0A= // token and 2 on the stack. TODO(mesch): this is certainly not=0A= // necessary and too complicated. Simplify this!=0A= =0A= // NOTE: tabular formatting is the big exception, but here it should=0A= // be OK.=0A= =0A= var TOK_PIPE =3D { label: "|", prec: 17, re: new RegExp("^\\|") };=0A= var TOK_DSLASH =3D { label: "//", prec: 19, re: new RegExp("^//") };=0A= var TOK_SLASH =3D { label: "/", prec: 30, re: new RegExp("^/") };=0A= var TOK_AXIS =3D { label: "::", prec: 20, re: new RegExp("^::") };=0A= var TOK_COLON =3D { label: ":", prec: 1000, re: new RegExp("^:") };=0A= var TOK_AXISNAME =3D { label: "[axis]", re: new RegExp('^(' + = xpathAxesRe + ')') };=0A= var TOK_PARENO =3D { label: "(", prec: 34, re: new RegExp("^\\(") };=0A= var TOK_PARENC =3D { label: ")", re: new RegExp("^\\)") };=0A= var TOK_DDOT =3D { label: "..", prec: 34, re: new RegExp("^\\.\\.") = };=0A= var TOK_DOT =3D { label: ".", prec: 34, re: new RegExp("^\\.") };=0A= var TOK_AT =3D { label: "@", prec: 34, re: new RegExp("^@") };=0A= =0A= var TOK_COMMA =3D { label: ",", re: new RegExp("^,") };=0A= =0A= var TOK_OR =3D { label: "or", prec: 10, re: new RegExp("^or\\b") = };=0A= var TOK_AND =3D { label: "and", prec: 11, re: new RegExp("^and\\b") = };=0A= var TOK_EQ =3D { label: "=3D", prec: 12, re: new RegExp("^=3D") = };=0A= var TOK_NEQ =3D { label: "!=3D", prec: 12, re: new RegExp("^!=3D") = };=0A= var TOK_GE =3D { label: ">=3D", prec: 13, re: new RegExp("^>=3D") = };=0A= var TOK_GT =3D { label: ">", prec: 13, re: new RegExp("^>") };=0A= var TOK_LE =3D { label: "<=3D", prec: 13, re: new RegExp("^<=3D") = };=0A= var TOK_LT =3D { label: "<", prec: 13, re: new RegExp("^<") };=0A= var TOK_PLUS =3D { label: "+", prec: 14, re: new RegExp("^\\+"), = left: true };=0A= var TOK_MINUS =3D { label: "-", prec: 14, re: new RegExp("^\\-"), = left: true };=0A= var TOK_DIV =3D { label: "div", prec: 15, re: new = RegExp("^div\\b"), left: true };=0A= var TOK_MOD =3D { label: "mod", prec: 15, re: new = RegExp("^mod\\b"), left: true };=0A= =0A= var TOK_BRACKO =3D { label: "[", prec: 32, re: new RegExp("^\\[") };=0A= var TOK_BRACKC =3D { label: "]", re: new RegExp("^\\]") };=0A= var TOK_DOLLAR =3D { label: "$", re: new RegExp("^\\$") };=0A= =0A= var TOK_NCNAME =3D { label: "[ncname]", re: new = RegExp('^[a-z][-\\w]*','i') };=0A= =0A= var TOK_ASTERISK =3D { label: "*", prec: 15, re: new RegExp("^\\*"), = left: true };=0A= var TOK_LITERALQ =3D { label: "[litq]", prec: 20, re: new = RegExp("^'[^\\']*'") };=0A= var TOK_LITERALQQ =3D {=0A= label: "[litqq]",=0A= prec: 20,=0A= re: new RegExp('^"[^\\"]*"')=0A= };=0A= =0A= var TOK_NUMBER =3D {=0A= label: "[number]",=0A= prec: 35,=0A= re: new RegExp('^\\d+(\\.\\d*)?') };=0A= =0A= var TOK_QNAME =3D {=0A= label: "[qname]",=0A= re: new RegExp('^([a-z][-\\w]*:)?[a-z][-\\w]*','i')=0A= };=0A= =0A= var TOK_NODEO =3D {=0A= label: "[nodetest-start]",=0A= re: new RegExp('^(processing-instruction|comment|text|node)\\(')=0A= };=0A= =0A= // The table of the tokens of our grammar, used by the lexer: first=0A= // column the tag, second column a regexp to recognize it in the=0A= // input, third column the precedence of the token, fourth column a=0A= // factory function for the semantic value of the token.=0A= //=0A= // NOTE: order of this list is important, because the first match=0A= // counts. Cf. DDOT and DOT, and AXIS and COLON.=0A= =0A= var xpathTokenRules =3D [=0A= TOK_DSLASH,=0A= TOK_SLASH,=0A= TOK_DDOT,=0A= TOK_DOT,=0A= TOK_AXIS,=0A= TOK_COLON,=0A= TOK_AXISNAME,=0A= TOK_NODEO,=0A= TOK_PARENO,=0A= TOK_PARENC,=0A= TOK_BRACKO,=0A= TOK_BRACKC,=0A= TOK_AT,=0A= TOK_COMMA,=0A= TOK_OR,=0A= TOK_AND,=0A= TOK_NEQ,=0A= TOK_EQ,=0A= TOK_GE,=0A= TOK_GT,=0A= TOK_LE,=0A= TOK_LT,=0A= TOK_PLUS,=0A= TOK_MINUS,=0A= TOK_ASTERISK,=0A= TOK_PIPE,=0A= TOK_MOD,=0A= TOK_DIV,=0A= TOK_LITERALQ,=0A= TOK_LITERALQQ,=0A= TOK_NUMBER,=0A= TOK_QNAME,=0A= TOK_NCNAME,=0A= TOK_DOLLAR=0A= ];=0A= =0A= // All the nonterminals of the grammar. The nonterminal objects are=0A= // identified by object identity; the labels are used in the debug=0A= // output only.=0A= var XPathLocationPath =3D { label: "LocationPath" };=0A= var XPathRelativeLocationPath =3D { label: "RelativeLocationPath" };=0A= var XPathAbsoluteLocationPath =3D { label: "AbsoluteLocationPath" };=0A= var XPathStep =3D { label: "Step" };=0A= var XPathNodeTest =3D { label: "NodeTest" };=0A= var XPathPredicate =3D { label: "Predicate" };=0A= var XPathLiteral =3D { label: "Literal" };=0A= var XPathExpr =3D { label: "Expr" };=0A= var XPathPrimaryExpr =3D { label: "PrimaryExpr" };=0A= var XPathVariableReference =3D { label: "Variablereference" };=0A= var XPathNumber =3D { label: "Number" };=0A= var XPathFunctionCall =3D { label: "FunctionCall" };=0A= var XPathArgumentRemainder =3D { label: "ArgumentRemainder" };=0A= var XPathPathExpr =3D { label: "PathExpr" };=0A= var XPathUnionExpr =3D { label: "UnionExpr" };=0A= var XPathFilterExpr =3D { label: "FilterExpr" };=0A= var XPathDigits =3D { label: "Digits" };=0A= =0A= var xpathNonTerminals =3D [=0A= XPathLocationPath,=0A= XPathRelativeLocationPath,=0A= XPathAbsoluteLocationPath,=0A= XPathStep,=0A= XPathNodeTest,=0A= XPathPredicate,=0A= XPathLiteral,=0A= XPathExpr,=0A= XPathPrimaryExpr,=0A= XPathVariableReference,=0A= XPathNumber,=0A= XPathFunctionCall,=0A= XPathArgumentRemainder,=0A= XPathPathExpr,=0A= XPathUnionExpr,=0A= XPathFilterExpr,=0A= XPathDigits=0A= ];=0A= =0A= // Quantifiers that are used in the productions of the grammar.=0A= var Q_01 =3D { label: "?" };=0A= var Q_MM =3D { label: "*" };=0A= var Q_1M =3D { label: "+" };=0A= =0A= // Tag for left associativity (right assoc is implied by undefined).=0A= var ASSOC_LEFT =3D true;=0A= =0A= // The productions of the grammar. Columns of the table:=0A= //=0A= // - target nonterminal,=0A= // - pattern,=0A= // - precedence,=0A= // - semantic value factory=0A= //=0A= // The semantic value factory is a function that receives parse tree=0A= // nodes from the stack frames of the matched symbols as arguments and=0A= // returns an a node of the parse tree. The node is stored in the top=0A= // stack frame along with the target object of the rule. The node in=0A= // the parse tree is an expression object that has an evaluate() method=0A= // and thus evaluates XPath expressions.=0A= //=0A= // The precedence is used to decide between reducing and shifting by=0A= // comparing the precendence of the rule that is candidate for=0A= // reducing with the precedence of the look ahead token. Precedence of=0A= // -1 means that the precedence of the tokens in the pattern is used=0A= // instead. TODO: It shouldn't be necessary to explicitly assign=0A= // precedences to rules.=0A= =0A= var xpathGrammarRules =3D=0A= [=0A= [ XPathLocationPath, [ XPathRelativeLocationPath ], 18,=0A= passExpr ],=0A= [ XPathLocationPath, [ XPathAbsoluteLocationPath ], 18,=0A= passExpr ],=0A= =0A= [ XPathAbsoluteLocationPath, [ TOK_SLASH, XPathRelativeLocationPath = ], 18, =0A= makeLocationExpr1 ],=0A= [ XPathAbsoluteLocationPath, [ TOK_DSLASH, XPathRelativeLocationPath = ], 18,=0A= makeLocationExpr2 ],=0A= =0A= [ XPathAbsoluteLocationPath, [ TOK_SLASH ], 0,=0A= makeLocationExpr3 ],=0A= [ XPathAbsoluteLocationPath, [ TOK_DSLASH ], 0,=0A= makeLocationExpr4 ],=0A= =0A= [ XPathRelativeLocationPath, [ XPathStep ], 31,=0A= makeLocationExpr5 ],=0A= [ XPathRelativeLocationPath,=0A= [ XPathRelativeLocationPath, TOK_SLASH, XPathStep ], 31,=0A= makeLocationExpr6 ],=0A= [ XPathRelativeLocationPath,=0A= [ XPathRelativeLocationPath, TOK_DSLASH, XPathStep ], 31,=0A= makeLocationExpr7 ],=0A= =0A= [ XPathStep, [ TOK_DOT ], 33,=0A= makeStepExpr1 ],=0A= [ XPathStep, [ TOK_DDOT ], 33,=0A= makeStepExpr2 ],=0A= [ XPathStep,=0A= [ TOK_AXISNAME, TOK_AXIS, XPathNodeTest ], 33,=0A= makeStepExpr3 ],=0A= [ XPathStep, [ TOK_AT, XPathNodeTest ], 33,=0A= makeStepExpr4 ],=0A= [ XPathStep, [ XPathNodeTest ], 33,=0A= makeStepExpr5 ],=0A= [ XPathStep, [ XPathStep, XPathPredicate ], 33,=0A= makeStepExpr6 ],=0A= =0A= [ XPathNodeTest, [ TOK_ASTERISK ], 33,=0A= makeNodeTestExpr1 ],=0A= [ XPathNodeTest, [ TOK_NCNAME, TOK_COLON, TOK_ASTERISK ], 33,=0A= makeNodeTestExpr2 ],=0A= [ XPathNodeTest, [ TOK_QNAME ], 33,=0A= makeNodeTestExpr3 ],=0A= [ XPathNodeTest, [ TOK_NODEO, TOK_PARENC ], 33,=0A= makeNodeTestExpr4 ],=0A= [ XPathNodeTest, [ TOK_NODEO, XPathLiteral, TOK_PARENC ], 33,=0A= makeNodeTestExpr5 ],=0A= =0A= [ XPathPredicate, [ TOK_BRACKO, XPathExpr, TOK_BRACKC ], 33,=0A= makePredicateExpr ],=0A= =0A= [ XPathPrimaryExpr, [ XPathVariableReference ], 33,=0A= passExpr ],=0A= [ XPathPrimaryExpr, [ TOK_PARENO, XPathExpr, TOK_PARENC ], 33,=0A= makePrimaryExpr ],=0A= [ XPathPrimaryExpr, [ XPathLiteral ], 30,=0A= passExpr ],=0A= [ XPathPrimaryExpr, [ XPathNumber ], 30,=0A= passExpr ],=0A= [ XPathPrimaryExpr, [ XPathFunctionCall ], 30,=0A= passExpr ],=0A= =0A= [ XPathFunctionCall, [ TOK_QNAME, TOK_PARENO, TOK_PARENC ], -1,=0A= makeFunctionCallExpr1 ],=0A= [ XPathFunctionCall,=0A= [ TOK_QNAME, TOK_PARENO, XPathExpr, XPathArgumentRemainder, Q_MM,=0A= TOK_PARENC ], -1,=0A= makeFunctionCallExpr2 ],=0A= [ XPathArgumentRemainder, [ TOK_COMMA, XPathExpr ], -1,=0A= makeArgumentExpr ],=0A= =0A= [ XPathUnionExpr, [ XPathPathExpr ], 20,=0A= passExpr ],=0A= [ XPathUnionExpr, [ XPathUnionExpr, TOK_PIPE, XPathPathExpr ], 20,=0A= makeUnionExpr ],=0A= =0A= [ XPathPathExpr, [ XPathLocationPath ], 20, =0A= passExpr ], =0A= [ XPathPathExpr, [ XPathFilterExpr ], 19, =0A= passExpr ], =0A= [ XPathPathExpr, =0A= [ XPathFilterExpr, TOK_SLASH, XPathRelativeLocationPath ], 20,=0A= makePathExpr1 ],=0A= [ XPathPathExpr,=0A= [ XPathFilterExpr, TOK_DSLASH, XPathRelativeLocationPath ], 20,=0A= makePathExpr2 ],=0A= =0A= [ XPathFilterExpr, [ XPathPrimaryExpr, XPathPredicate, Q_MM ], 20,=0A= makeFilterExpr ], =0A= =0A= [ XPathExpr, [ XPathPrimaryExpr ], 16,=0A= passExpr ],=0A= [ XPathExpr, [ XPathUnionExpr ], 16,=0A= passExpr ],=0A= =0A= [ XPathExpr, [ TOK_MINUS, XPathExpr ], -1,=0A= makeUnaryMinusExpr ],=0A= =0A= [ XPathExpr, [ XPathExpr, TOK_OR, XPathExpr ], -1,=0A= makeBinaryExpr ],=0A= [ XPathExpr, [ XPathExpr, TOK_AND, XPathExpr ], -1,=0A= makeBinaryExpr ],=0A= =0A= [ XPathExpr, [ XPathExpr, TOK_EQ, XPathExpr ], -1,=0A= makeBinaryExpr ],=0A= [ XPathExpr, [ XPathExpr, TOK_NEQ, XPathExpr ], -1,=0A= makeBinaryExpr ],=0A= =0A= [ XPathExpr, [ XPathExpr, TOK_LT, XPathExpr ], -1,=0A= makeBinaryExpr ],=0A= [ XPathExpr, [ XPathExpr, TOK_LE, XPathExpr ], -1,=0A= makeBinaryExpr ],=0A= [ XPathExpr, [ XPathExpr, TOK_GT, XPathExpr ], -1,=0A= makeBinaryExpr ],=0A= [ XPathExpr, [ XPathExpr, TOK_GE, XPathExpr ], -1,=0A= makeBinaryExpr ],=0A= =0A= [ XPathExpr, [ XPathExpr, TOK_PLUS, XPathExpr ], -1,=0A= makeBinaryExpr, ASSOC_LEFT ],=0A= [ XPathExpr, [ XPathExpr, TOK_MINUS, XPathExpr ], -1,=0A= makeBinaryExpr, ASSOC_LEFT ],=0A= =0A= [ XPathExpr, [ XPathExpr, TOK_ASTERISK, XPathExpr ], -1,=0A= makeBinaryExpr, ASSOC_LEFT ],=0A= [ XPathExpr, [ XPathExpr, TOK_DIV, XPathExpr ], -1,=0A= makeBinaryExpr, ASSOC_LEFT ],=0A= [ XPathExpr, [ XPathExpr, TOK_MOD, XPathExpr ], -1,=0A= makeBinaryExpr, ASSOC_LEFT ],=0A= =0A= [ XPathLiteral, [ TOK_LITERALQ ], -1,=0A= makeLiteralExpr ],=0A= [ XPathLiteral, [ TOK_LITERALQQ ], -1,=0A= makeLiteralExpr ],=0A= =0A= [ XPathNumber, [ TOK_NUMBER ], -1,=0A= makeNumberExpr ],=0A= =0A= [ XPathVariableReference, [ TOK_DOLLAR, TOK_QNAME ], 200,=0A= makeVariableReference ]=0A= ];=0A= =0A= // That function computes some optimizations of the above data=0A= // structures and will be called right here. It merely takes the=0A= // counter variables out of the global scope.=0A= =0A= var xpathRules =3D [];=0A= =0A= function xpathParseInit() {=0A= if (xpathRules.length) {=0A= return;=0A= }=0A= =0A= // Some simple optimizations for the xpath expression parser: sort=0A= // grammar rules descending by length, so that the longest match is=0A= // first found.=0A= =0A= xpathGrammarRules.sort(function(a,b) {=0A= var la =3D a[1].length;=0A= var lb =3D b[1].length;=0A= if (la < lb) {=0A= return 1;=0A= } else if (la > lb) {=0A= return -1;=0A= } else {=0A= return 0;=0A= }=0A= });=0A= =0A= var k =3D 1;=0A= for (var i =3D 0; i < xpathNonTerminals.length; ++i) {=0A= xpathNonTerminals[i].key =3D k++;=0A= }=0A= =0A= for (i =3D 0; i < xpathTokenRules.length; ++i) {=0A= xpathTokenRules[i].key =3D k++;=0A= }=0A= =0A= if (xpathdebug)=0A= Log.write('XPath parse INIT: ' + k + ' rules');=0A= =0A= // Another slight optimization: sort the rules into bins according=0A= // to the last element (observing quantifiers), so we can restrict=0A= // the match against the stack to the subest of rules that match the=0A= // top of the stack.=0A= //=0A= // TODO(mesch): What we actually want is to compute states as in=0A= // bison, so that we don't have to do any explicit and iterated=0A= // match against the stack.=0A= =0A= function push_(array, position, element) {=0A= if (!array[position]) {=0A= array[position] =3D [];=0A= }=0A= array[position].push(element);=0A= }=0A= =0A= for (i =3D 0; i < xpathGrammarRules.length; ++i) {=0A= var rule =3D xpathGrammarRules[i];=0A= var pattern =3D rule[1];=0A= =0A= for (var j =3D pattern.length - 1; j >=3D 0; --j) {=0A= if (pattern[j] =3D=3D Q_1M) {=0A= push_(xpathRules, pattern[j-1].key, rule);=0A= break;=0A= =0A= } else if (pattern[j] =3D=3D Q_MM || pattern[j] =3D=3D Q_01) {=0A= push_(xpathRules, pattern[j-1].key, rule);=0A= --j;=0A= =0A= } else {=0A= push_(xpathRules, pattern[j].key, rule);=0A= break;=0A= }=0A= }=0A= }=0A= =0A= if (xpathdebug)=0A= Log.write('XPath parse INIT: ' + xpathRules.length + ' rule bins');=0A= =0A= var sum =3D 0;=0A= mapExec(xpathRules, function(i) {=0A= if (i) {=0A= sum +=3D i.length;=0A= }=0A= });=0A= =0A= if (xpathdebug)=0A= Log.write('XPath parse INIT: ' + (sum / xpathRules.length) + ' average = bin size');=0A= }=0A= =0A= // Local utility functions that are used by the lexer or parser.=0A= =0A= function xpathCollectDescendants(nodelist, node) {=0A= for (var n =3D node.firstChild; n; n =3D n.nextSibling) {=0A= nodelist.push(n);=0A= arguments.callee(nodelist, n);=0A= }=0A= }=0A= =0A= function xpathCollectDescendantsReverse(nodelist, node) {=0A= for (var n =3D node.lastChild; n; n =3D n.previousSibling) {=0A= nodelist.push(n);=0A= arguments.callee(nodelist, n);=0A= }=0A= }=0A= =0A= =0A= // The entry point for the library: match an expression against a DOM=0A= // node. Returns an XPath value.=0A= function xpathDomEval(expr, node) {=0A= var expr1 =3D xpathParse(expr);=0A= var ret =3D expr1.evaluate(new ExprContext(node));=0A= return ret;=0A= }=0A= =0A= // Utility function to sort a list of nodes. Used by xsltSort() and=0A= // nxslSelect().=0A= function xpathSort(input, sort) {=0A= if (sort.length =3D=3D 0) {=0A= return;=0A= }=0A= =0A= var sortlist =3D [];=0A= =0A= for (var i =3D 0; i < input.nodelist.length; ++i) {=0A= var node =3D input.nodelist[i];=0A= var sortitem =3D { node: node, key: [] };=0A= var context =3D input.clone(node, 0, [ node ]);=0A= =0A= for (var j =3D 0; j < sort.length; ++j) {=0A= var s =3D sort[j];=0A= var value =3D s.expr.evaluate(context);=0A= =0A= var evalue;=0A= if (s.type =3D=3D 'text') {=0A= evalue =3D value.stringValue();=0A= } else if (s.type =3D=3D 'number') {=0A= evalue =3D value.numberValue();=0A= }=0A= sortitem.key.push({ value: evalue, order: s.order });=0A= }=0A= =0A= // Make the sort stable by adding a lowest priority sort by=0A= // id. This is very convenient and furthermore required by the=0A= // spec ([XSLT] - Section 10 Sorting).=0A= sortitem.key.push({ value: i, order: 'ascending' });=0A= =0A= sortlist.push(sortitem);=0A= }=0A= =0A= sortlist.sort(xpathSortByKey);=0A= =0A= var nodes =3D [];=0A= for (var i =3D 0; i < sortlist.length; ++i) {=0A= nodes.push(sortlist[i].node);=0A= }=0A= input.nodelist =3D nodes;=0A= input.setNode(nodes[0], 0);=0A= }=0A= =0A= =0A= // Sorts by all order criteria defined. According to the JavaScript=0A= // spec ([ECMA] Section 11.8.5), the compare operators compare strings=0A= // as strings and numbers as numbers.=0A= //=0A= // NOTE: In browsers which do not follow the spec, this breaks only in=0A= // the case that numbers should be sorted as strings, which is very=0A= // uncommon.=0A= =0A= function xpathSortByKey(v1, v2) {=0A= // NOTE: Sort key vectors of different length never occur in=0A= // xsltSort.=0A= =0A= for (var i =3D 0; i < v1.key.length; ++i) {=0A= var o =3D v1.key[i].order =3D=3D 'descending' ? -1 : 1;=0A= if (v1.key[i].value > v2.key[i].value) {=0A= return +1 * o;=0A= } else if (v1.key[i].value < v2.key[i].value) {=0A= return -1 * o;=0A= }=0A= }=0A= =0A= return 0;=0A= }=0A= =0A= =0A= // Copyright (c) 2005, Google Inc.=0A= // All rights reserved.=0A= // =0A= // Redistribution and use in source and binary forms, with or without=0A= // modification, are permitted provided that the following conditions are=0A= // met:=0A= // =0A= // * Redistributions of source code must retain the above copyright=0A= // notice, this list of conditions and the following disclaimer.=0A= // =0A= // * Redistributions in binary form must reproduce the above copyright=0A= // notice, this list of conditions and the following disclaimer in the=0A= // documentation and/or other materials provided with the=0A= // distribution.=0A= // =0A= // * Neither the name of Google Inc. nor the names of its contributors=0A= // may be used to endorse or promote products derived from this=0A= // software without specific prior written permission.=0A= // =0A= // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS=0A= // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT=0A= // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR=0A= // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT=0A= // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,=0A= // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT=0A= // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,=0A= // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY=0A= // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT=0A= // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE=0A= // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.=0A= //=0A= // Miscellania that support the ajaxslt implementation.=0A= //=0A= // Author: Steffen Meschkat =0A= //=0A= =0A= function el(i) {=0A= return document.getElementById(i);=0A= }=0A= =0A= function px(x) {=0A= return x + 'px';=0A= }=0A= =0A= // Split a string s at all occurrences of character c. This is like=0A= // the split() method of the string object, but IE omits empty=0A= // strings, which violates the invariant (s.split(x).join(x) =3D=3D s).=0A= function stringSplit(s, c) {=0A= var a =3D s.indexOf(c);=0A= if (a =3D=3D -1) {=0A= return [ s ];=0A= }=0A= =0A= var parts =3D [];=0A= parts.push(s.substr(0,a));=0A= while (a !=3D -1) {=0A= var a1 =3D s.indexOf(c, a + 1);=0A= if (a1 !=3D -1) {=0A= parts.push(s.substr(a + 1, a1 - a - 1));=0A= } else {=0A= parts.push(s.substr(a + 1));=0A= } =0A= a =3D a1;=0A= }=0A= =0A= return parts;=0A= }=0A= =0A= // Returns the text value if a node; for nodes without children this=0A= // is the nodeValue, for nodes with children this is the concatenation=0A= // of the value of all children.=0A= function xmlValue(node) {=0A= if (!node) {=0A= return '';=0A= }=0A= =0A= var ret =3D '';=0A= if (node.nodeType =3D=3D DOM_TEXT_NODE ||=0A= node.nodeType =3D=3D DOM_CDATA_SECTION_NODE ||=0A= node.nodeType =3D=3D DOM_ATTRIBUTE_NODE) {=0A= ret +=3D node.nodeValue;=0A= =0A= } else if (node.nodeType =3D=3D DOM_ELEMENT_NODE ||=0A= node.nodeType =3D=3D DOM_DOCUMENT_NODE ||=0A= node.nodeType =3D=3D DOM_DOCUMENT_FRAGMENT_NODE) {=0A= for (var i =3D 0; i < node.childNodes.length; ++i) {=0A= ret +=3D arguments.callee(node.childNodes[i]);=0A= }=0A= }=0A= return ret;=0A= }=0A= =0A= // Returns the representation of a node as XML text.=0A= function xmlText(node) {=0A= var ret =3D '';=0A= if (node.nodeType =3D=3D DOM_TEXT_NODE) {=0A= ret +=3D xmlEscapeText(node.nodeValue);=0A= =0A= } else if (node.nodeType =3D=3D DOM_ELEMENT_NODE) {=0A= ret +=3D '<' + node.nodeName;=0A= for (var i =3D 0; i < node.attributes.length; ++i) {=0A= var a =3D node.attributes[i];=0A= if (a && a.nodeName && a.nodeValue) {=0A= ret +=3D ' ' + a.nodeName;=0A= ret +=3D '=3D"' + xmlEscapeAttr(a.nodeValue) + '"';=0A= }=0A= }=0A= =0A= if (node.childNodes.length =3D=3D 0) {=0A= ret +=3D '/>';=0A= =0A= } else {=0A= ret +=3D '>';=0A= for (var i =3D 0; i < node.childNodes.length; ++i) {=0A= ret +=3D arguments.callee(node.childNodes[i]);=0A= }=0A= ret +=3D '';=0A= }=0A= =0A= } else if (node.nodeType =3D=3D DOM_DOCUMENT_NODE || =0A= node.nodeType =3D=3D DOM_DOCUMENT_FRAGMENT_NODE) {=0A= for (var i =3D 0; i < node.childNodes.length; ++i) {=0A= ret +=3D arguments.callee(node.childNodes[i]);=0A= }=0A= }=0A= =0A= return ret;=0A= }=0A= =0A= // Applies the given function to each element of the array.=0A= function mapExec(array, func) {=0A= for (var i =3D 0; i < array.length; ++i) {=0A= func(array[i]);=0A= }=0A= }=0A= =0A= // Returns an array that contains the return value of the given=0A= // function applied to every element of the input array.=0A= function mapExpr(array, func) {=0A= var ret =3D [];=0A= for (var i =3D 0; i < array.length; ++i) {=0A= ret.push(func(array[i]));=0A= }=0A= return ret;=0A= };=0A= =0A= // Reverses the given array in place.=0A= function reverseInplace(array) {=0A= for (var i =3D 0; i < array.length / 2; ++i) {=0A= var h =3D array[i];=0A= var ii =3D array.length - i - 1;=0A= array[i] =3D array[ii];=0A= array[ii] =3D h;=0A= }=0A= }=0A= =0A= // Shallow-copies an array.=0A= function copyArray(dst, src) { =0A= for (var i =3D 0; i < src.length; ++i) {=0A= dst.push(src[i]);=0A= }=0A= }=0A= =0A= function assert(b) {=0A= if (!b) {=0A= throw 'assertion failed';=0A= }=0A= }=0A= =0A= // Based on=0A= // = =0A= var DOM_ELEMENT_NODE =3D 1;=0A= var DOM_ATTRIBUTE_NODE =3D 2;=0A= var DOM_TEXT_NODE =3D 3;=0A= var DOM_CDATA_SECTION_NODE =3D 4;=0A= var DOM_ENTITY_REFERENCE_NODE =3D 5;=0A= var DOM_ENTITY_NODE =3D 6;=0A= var DOM_PROCESSING_INSTRUCTION_NODE =3D 7;=0A= var DOM_COMMENT_NODE =3D 8;=0A= var DOM_DOCUMENT_NODE =3D 9;=0A= var DOM_DOCUMENT_TYPE_NODE =3D 10;=0A= var DOM_DOCUMENT_FRAGMENT_NODE =3D 11;=0A= var DOM_NOTATION_NODE =3D 12;=0A= =0A= =0A= var xpathdebug =3D false; // trace xpath parsing=0A= var xsltdebug =3D false; // trace xslt processing=0A= =0A= =0A= // Escape XML special markup chracters: tag delimiter < > and entity=0A= // reference start delimiter &. The escaped string can be used in XML=0A= // text portions (i.e. between tags).=0A= function xmlEscapeText(s) {=0A= return s.replace(/&/g, '&').replace(//g, = '>');=0A= }=0A= =0A= // Escape XML special markup characters: tag delimiter < > entity=0A= // reference start delimiter & and quotes ". The escaped string can be=0A= // used in double quoted XML attribute value portions (i.e. in=0A= // attributes within start tags).=0A= function xmlEscapeAttr(s) {=0A= return xmlEscapeText(s).replace(/\"/g, '"');=0A= }=0A= =0A= // Escape markup in XML text, but don't touch entity references. The=0A= // escaped string can be used as XML text (i.e. between tags).=0A= function xmlEscapeTags(s) {=0A= return s.replace(//g, '>');=0A= }=0A= =0A= // An implementation of the debug log. =0A= =0A= var logging__ =3D true;=0A= =0A= function Log() {};=0A= =0A= Log.lines =3D [];=0A= =0A= Log.write =3D function(s) {=0A= if (logging__) {=0A= this.lines.push(xmlEscapeText(s));=0A= this.show();=0A= }=0A= };=0A= =0A= // Writes the given XML with every tag on a new line.=0A= Log.writeXML =3D function(xml) {=0A= if (logging__) {=0A= var s0 =3D xml.replace(/');=0A= this.lines.push(s2);=0A= this.show();=0A= }=0A= }=0A= =0A= // Writes without any escaping=0A= Log.writeRaw =3D function(s) {=0A= if (logging__) {=0A= this.lines.push(s);=0A= this.show();=0A= }=0A= }=0A= =0A= Log.clear =3D function() {=0A= if (logging__) {=0A= var l =3D this.div();=0A= l.innerHTML =3D '';=0A= this.lines =3D [];=0A= }=0A= }=0A= =0A= Log.show =3D function() {=0A= var l =3D this.div();=0A= l.innerHTML +=3D this.lines.join('
      ') + '
      ';=0A= this.lines =3D [];=0A= l.scrollTop =3D l.scrollHeight;=0A= }=0A= =0A= Log.div =3D function() {=0A= var l =3D document.getElementById('log');=0A= if (!l) {=0A= l =3D document.createElement('div');=0A= l.id =3D 'log';=0A= l.style.position =3D 'absolute';=0A= l.style.right =3D '5px';=0A= l.style.top =3D '5px';=0A= l.style.width =3D '250px';=0A= l.style.height =3D '150px';=0A= l.style.overflow =3D 'auto';=0A= l.style.backgroundColor =3D '#f0f0f0';=0A= l.style.border =3D '1px solid gray';=0A= l.style.fontSize =3D '10px';=0A= l.style.padding =3D '5px';=0A= document.body.appendChild(l);=0A= }=0A= return l;=0A= }=0A= =0A= =0A= function Timer() {}=0A= Timer.start =3D function() {}=0A= Timer.end =3D function() {}=0A= ------=_NextPart_000_0159_01C9C1C7.9ABA19B0 Content-Type: application/octet-stream Content-Transfer-Encoding: quoted-printable Content-Location: http://www.awexp.com.au/irm/content/SpryAssets/SpryData.js /* SpryData.js - Revision: Spry Preview Release 1.4 */=0A= =0A= // Copyright (c) 2006. Adobe Systems Incorporated.=0A= // All rights reserved.=0A= //=0A= // Redistribution and use in source and binary forms, with or without=0A= // modification, are permitted provided that the following conditions = are met:=0A= //=0A= // * Redistributions of source code must retain the above copyright = notice,=0A= // this list of conditions and the following disclaimer.=0A= // * Redistributions in binary form must reproduce the above copyright = notice,=0A= // this list of conditions and the following disclaimer in the = documentation=0A= // and/or other materials provided with the distribution.=0A= // * Neither the name of Adobe Systems Incorporated nor the names of = its=0A= // contributors may be used to endorse or promote products derived = from this=0A= // software without specific prior written permission.=0A= //=0A= // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS = "AS IS"=0A= // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, = THE=0A= // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR = PURPOSE=0A= // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS = BE=0A= // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR=0A= // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF=0A= // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR = BUSINESS=0A= // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER = IN=0A= // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR = OTHERWISE)=0A= // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED = OF THE=0A= // POSSIBILITY OF SUCH DAMAGE.=0A= =0A= var Spry; if (!Spry) Spry =3D {};=0A= =0A= //////////////////////////////////////////////////////////////////////=0A= //=0A= // Spry.Utils=0A= //=0A= //////////////////////////////////////////////////////////////////////=0A= =0A= if (!Spry.Utils) Spry.Utils =3D {};=0A= =0A= Spry.Utils.msProgIDs =3D ["MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", = "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];=0A= =0A= Spry.Utils.createXMLHttpRequest =3D function()=0A= {=0A= var req =3D null;=0A= try=0A= {=0A= if (window.XMLHttpRequest)=0A= req =3D new XMLHttpRequest();=0A= else if (window.ActiveXObject)=0A= {=0A= while (!req && Spry.Utils.msProgIDs.length)=0A= {=0A= try { req =3D new ActiveXObject(Spry.Utils.msProgIDs[0]); } catch = (e) { req =3D null; }=0A= if (!req)=0A= Spry.Utils.msProgIDs.splice(0, 1);=0A= }=0A= }=0A= }=0A= catch (e) { req =3D null; }=0A= =0A= if (!req)=0A= Spry.Debug.reportError("Failed to create an XMLHttpRequest object!" );=0A= =0A= return req;=0A= };=0A= =0A= Spry.Utils.loadURL =3D function(method, url, async, callback, opts)=0A= {=0A= var req =3D new Spry.Utils.loadURL.Request();=0A= req.method =3D method;=0A= req.url =3D url;=0A= req.async =3D async;=0A= req.successCallback =3D callback;=0A= Spry.Utils.setOptions(req, opts);=0A= =0A= try=0A= {=0A= req.xhRequest =3D Spry.Utils.createXMLHttpRequest();=0A= if (!req.xhRequest)=0A= return null;=0A= =0A= if (req.async)=0A= req.xhRequest.onreadystatechange =3D function() { = Spry.Utils.loadURL.callback(req); };=0A= =0A= req.xhRequest.open(req.method, req.url, req.async, req.username, = req.password);=0A= =0A= if (req.headers)=0A= {=0A= for (var name in req.headers)=0A= req.xhRequest.setRequestHeader(name, req.headers[name]);=0A= }=0A= =0A= req.xhRequest.send(req.postData);=0A= =0A= if (!req.async)=0A= Spry.Utils.loadURL.callback(req);=0A= }=0A= catch(e) { req =3D null; Spry.Debug.reportError("Exception caught while = loading " + url + ": " + e); }=0A= =0A= return req;=0A= };=0A= =0A= Spry.Utils.loadURL.callback =3D function(req)=0A= {=0A= if (!req || req.xhRequest.readyState !=3D 4)=0A= return;=0A= if (req.successCallback && (req.xhRequest.status =3D=3D 200 || = req.xhRequest.status =3D=3D 0))=0A= req.successCallback(req);=0A= else if (req.errorCallback)=0A= req.errorCallback(req);=0A= };=0A= =0A= Spry.Utils.loadURL.Request =3D function()=0A= {=0A= var props =3D Spry.Utils.loadURL.Request.props;=0A= var numProps =3D props.length;=0A= =0A= for (var i =3D 0; i < numProps; i++)=0A= this[props[i]] =3D null;=0A= =0A= this.method =3D "GET";=0A= this.async =3D true;=0A= this.headers =3D {};=0A= };=0A= =0A= Spry.Utils.loadURL.Request.props =3D [ "method", "url", "async", = "username", "password", "postData", "successCallback", "errorCallback", = "headers", "userData", "xhRequest" ];=0A= =0A= Spry.Utils.loadURL.Request.prototype.extractRequestOptions =3D = function(opts, undefineRequestProps)=0A= {=0A= if (!opts)=0A= return;=0A= =0A= var props =3D Spry.Utils.loadURL.Request.props;=0A= var numProps =3D props.length;=0A= =0A= for (var i =3D 0; i < numProps; i++)=0A= {=0A= var prop =3D props[i];=0A= if (opts[prop] !=3D undefined)=0A= {=0A= this[prop] =3D opts[prop];=0A= if (undefineRequestProps)=0A= opts[prop] =3D undefined;=0A= }=0A= }=0A= };=0A= =0A= Spry.Utils.loadURL.Request.prototype.clone =3D function()=0A= {=0A= var props =3D Spry.Utils.loadURL.Request.props;=0A= var numProps =3D props.length;=0A= var req =3D new Spry.Utils.loadURL.Request;=0A= for (var i =3D 0; i < numProps; i++)=0A= req[props[i]] =3D this[props[i]];=0A= if (this.headers)=0A= {=0A= req.headers =3D {};=0A= Spry.Utils.setOptions(req.headers, this.headers);=0A= }=0A= return req;=0A= };=0A= =0A= Spry.Utils.setInnerHTML =3D function(ele, str, preventScripts)=0A= {=0A= if (!ele)=0A= return;=0A= ele =3D $(ele);=0A= var scriptExpr =3D "]*>(.|\s|\n|\r)*?";=0A= ele.innerHTML =3D str.replace(new RegExp(scriptExpr, "img"), "");=0A= =0A= if (preventScripts)=0A= return;=0A= =0A= var matches =3D str.match(new RegExp(scriptExpr, "img"));=0A= if (matches)=0A= {=0A= var numMatches =3D matches.length;=0A= for (var i =3D 0; i < numMatches; i++)=0A= {=0A= var s =3D = matches[i].replace(/]*>[\s\r\n]*(<\!--)?|(-->)?[\s\r\n]*<\/scri= pt>/img, "");=0A= Spry.Utils.eval(s);=0A= }=0A= }=0A= };=0A= =0A= Spry.Utils.updateContent =3D function (ele, url, finishFunc, opts)=0A= {=0A= var method =3D (opts && opts.method) ? opts.method : "GET";=0A= Spry.Utils.loadURL(method, url, false, function(req)=0A= {=0A= Spry.Utils.setInnerHTML(ele, req.xhRequest.responseText);=0A= if (finishFunc)=0A= finishFunc(ele, url);=0A= }, opts);=0A= };=0A= =0A= Spry.Utils.addEventListener =3D function(element, eventType, handler, = capture)=0A= {=0A= try=0A= {=0A= element =3D $(element);=0A= if (element.addEventListener)=0A= element.addEventListener(eventType, handler, capture);=0A= else if (element.attachEvent)=0A= element.attachEvent("on" + eventType, handler);=0A= }=0A= catch (e) {}=0A= };=0A= =0A= Spry.Utils.removeEventListener =3D function(element, eventType, handler, = capture)=0A= {=0A= try=0A= {=0A= element =3D $(element);=0A= if (element.removeEventListener)=0A= element.removeEventListener(eventType, handler, capture);=0A= else if (element.detachEvent)=0A= element.detachEvent("on" + eventType, handler);=0A= }=0A= catch (e) {}=0A= };=0A= =0A= Spry.Utils.addLoadListener =3D function(handler)=0A= {=0A= if (typeof window.addEventListener !=3D 'undefined')=0A= window.addEventListener('load', handler, false);=0A= else if (typeof document.addEventListener !=3D 'undefined')=0A= document.addEventListener('load', handler, false);=0A= else if (typeof window.attachEvent !=3D 'undefined')=0A= window.attachEvent('onload', handler);=0A= };=0A= =0A= Spry.Utils.eval =3D function(str)=0A= {=0A= // Call this method from your JS function when=0A= // you don't want the JS expression to access or=0A= // interfere with any local variables in your JS=0A= // function.=0A= =0A= return eval(str);=0A= };=0A= =0A= Spry.Utils.escapeQuotesAndLineBreaks =3D function(str)=0A= {=0A= if (str)=0A= {=0A= str =3D str.replace(/\\/g, "\\\\");=0A= str =3D str.replace(/["']/g, "\\$&");=0A= str =3D str.replace(/\n/g, "\\n");=0A= str =3D str.replace(/\r/g, "\\r");=0A= }=0A= return str;=0A= };=0A= =0A= Spry.Utils.encodeEntities =3D function(str)=0A= {=0A= if (str && str.search(/[&<>"]/) !=3D -1)=0A= {=0A= str =3D str.replace(/&/g, "&");=0A= str =3D str.replace(//g, ">");=0A= str =3D str.replace(/"/g, """);=0A= }=0A= return str=0A= };=0A= =0A= Spry.Utils.decodeEntities =3D function(str)=0A= {=0A= var d =3D Spry.Utils.decodeEntities.div;=0A= if (!d)=0A= {=0A= d =3D document.createElement('div');=0A= Spry.Utils.decodeEntities.div =3D d;=0A= if (!d) return str;=0A= }=0A= d.innerHTML =3D str;=0A= if (d.childNodes.length =3D=3D 1 && d.firstChild.nodeType =3D=3D 3 /* = Node.TEXT_NODE */ && d.firstChild.nextSibling =3D=3D null)=0A= str =3D d.firstChild.data;=0A= else=0A= {=0A= // Hmmm, innerHTML processing of str produced content=0A= // we weren't expecting, so just replace entities we=0A= // expect folks will use in node attributes that contain=0A= // JavaScript.=0A= str =3D str.replace(/</, "<");=0A= str =3D str.replace(/>/, ">");=0A= str =3D str.replace(/"/, "\"");=0A= str =3D str.replace(/&/, "&");=0A= }=0A= return str;=0A= };=0A= =0A= Spry.Utils.fixupIETagAttributes =3D function(inStr)=0A= {=0A= var outStr =3D "";=0A= =0A= // Break the tag string into 3 pieces.=0A= =0A= var tagStart =3D inStr.match(/^<[^\s>]+\s*/)[0];=0A= var tagEnd =3D inStr.match(/\s*\/?>$/)[0];=0A= var tagAttrs =3D inStr.replace(/^<[^\s>]+\s*|\s*\/?>/g, "");=0A= =0A= // Write out the start of the tag.=0A= outStr +=3D tagStart;=0A= =0A= // If the tag has attributes, parse it out manually to avoid = accidentally fixing up=0A= // attributes that contain JavaScript expressions.=0A= =0A= if (tagAttrs)=0A= {=0A= var startIndex =3D 0;=0A= var endIndex =3D 0;=0A= =0A= while (startIndex < tagAttrs.length)=0A= {=0A= // Find the '=3D' char of the attribute.=0A= while (tagAttrs.charAt(endIndex) !=3D '=3D' && endIndex < = tagAttrs.length)=0A= ++endIndex;=0A= =0A= // If we are at the end of the string, just write out what we've=0A= // collected.=0A= =0A= if (endIndex >=3D tagAttrs.length)=0A= {=0A= outStr +=3D tagAttrs.substring(startIndex, endIndex);=0A= break;=0A= }=0A= =0A= // Step past the '=3D' character and write out what we've=0A= // collected so far.=0A= =0A= ++endIndex;=0A= outStr +=3D tagAttrs.substring(startIndex, endIndex);=0A= startIndex =3D endIndex;=0A= =0A= if (tagAttrs.charAt(endIndex) =3D=3D '"' || tagAttrs.charAt(endIndex) = =3D=3D "'")=0A= {=0A= // Attribute is quoted. Advance us past the quoted value!=0A= var savedIndex =3D endIndex++;=0A= while (endIndex < tagAttrs.length)=0A= {=0A= if (tagAttrs.charAt(endIndex) =3D=3D tagAttrs.charAt(savedIndex))=0A= {=0A= endIndex++;=0A= break;=0A= }=0A= else if (tagAttrs.charAt(endIndex) =3D=3D "\\")=0A= endIndex++;=0A= endIndex++;=0A= }=0A= =0A= outStr +=3D tagAttrs.substring(startIndex, endIndex);=0A= startIndex =3D endIndex;=0A= }=0A= else=0A= {=0A= // This attribute value wasn't quoted! Wrap it with quotes and=0A= // write out everything till we hit a space, or the end of the=0A= // string.=0A= =0A= outStr +=3D "\"";=0A= =0A= var sIndex =3D tagAttrs.slice(endIndex).search(/\s/);=0A= endIndex =3D (sIndex !=3D -1) ? (endIndex + sIndex) : = tagAttrs.length;=0A= outStr +=3D tagAttrs.slice(startIndex, endIndex); =0A= outStr +=3D "\""; =0A= startIndex =3D endIndex;=0A= }=0A= }=0A= }=0A= =0A= outStr +=3D tagEnd;=0A= =0A= // Write out the end of the tag.=0A= return outStr;=0A= }=0A= =0A= Spry.Utils.fixUpIEInnerHTML =3D function(inStr)=0A= {=0A= var outStr =3D "";=0A= =0A= // Create a regular expression that will match:=0A= // =0A= // ]]>=0A= // ]]> // Yet another workaround for an IE innerHTML bug.=0A= //=0A= // The idea here is that we only want to fix up attribute values on = tags that=0A= // are not in any comments or CDATA.=0A= =0A= var regexp =3D new = RegExp("<\\!--|<\\!\\[CDATA\\[|<\\w+[^<>]*>|-->|\\]\\](>|\>)", "g");=0A= var searchStartIndex =3D 0;=0A= var skipFixUp =3D 0;=0A= =0A= while (inStr.length)=0A= {=0A= var results =3D regexp.exec(inStr);=0A= if (!results || !results[0])=0A= {=0A= outStr +=3D inStr.substr(searchStartIndex, inStr.length - = searchStartIndex);=0A= break;=0A= }=0A= =0A= if (results.index !=3D searchStartIndex)=0A= {=0A= // We found a match but it's not at the start of the inStr.=0A= // Create a string token for everything that precedes the match.=0A= outStr +=3D inStr.substr(searchStartIndex, results.index - = searchStartIndex);=0A= }=0A= =0A= if (results[0] =3D=3D "" || results[0] =3D=3D "]]>" || = (skipFixUp && results[0] =3D=3D "]]>"))=0A= {=0A= --skipFixUp;=0A= outStr +=3D results[0];=0A= }=0A= else if (!skipFixUp && results[0].charAt(0) =3D=3D '<')=0A= outStr +=3D Spry.Utils.fixupIETagAttributes(results[0]);=0A= else=0A= outStr +=3D results[0];=0A= =0A= searchStartIndex =3D regexp.lastIndex;=0A= }=0A= =0A= return outStr;=0A= };=0A= =0A= Spry.Utils.stringToXMLDoc =3D function(str)=0A= {=0A= var xmlDoc =3D null;=0A= =0A= try=0A= {=0A= // Attempt to parse the string using the IE method.=0A= =0A= var xmlDOMObj =3D new ActiveXObject("Microsoft.XMLDOM");=0A= xmlDOMObj.async =3D false;=0A= xmlDOMObj.loadXML(str);=0A= xmlDoc =3D xmlDOMObj;=0A= }=0A= catch (e)=0A= {=0A= // The IE method didn't work. Try the Mozilla way.=0A= =0A= try=0A= {=0A= var domParser =3D new DOMParser;=0A= xmlDoc =3D domParser.parseFromString(str, 'text/xml');=0A= }=0A= catch (e)=0A= {=0A= Spry.Debug.reportError("Caught exception in = Spry.Utils.stringToXMLDoc(): " + e + "\n");=0A= xmlDoc =3D null;=0A= }=0A= }=0A= =0A= return xmlDoc;=0A= };=0A= =0A= Spry.Utils.serializeObject =3D function(obj)=0A= {=0A= // Create a JSON representation of a given object.=0A= =0A= var str =3D "";=0A= var firstItem =3D true;=0A= =0A= if (obj =3D=3D null || obj =3D=3D undefined)=0A= return str + obj;=0A= =0A= var objType =3D typeof obj;=0A= =0A= if (objType =3D=3D "number" || objType =3D=3D "boolean")=0A= str +=3D obj;=0A= else if (objType =3D=3D "string")=0A= str +=3D "\"" + Spry.Utils.escapeQuotesAndLineBreaks(obj) + "\"";=0A= else if (obj.constructor =3D=3D Array)=0A= {=0A= str +=3D "[";=0A= for (var i =3D 0; i < obj.length; i++)=0A= {=0A= if (!firstItem)=0A= str +=3D ", ";=0A= str +=3D Spry.Utils.serializeObject(obj[i]);=0A= firstItem =3D false;=0A= }=0A= str +=3D "]";=0A= }=0A= else if (objType =3D=3D "object")=0A= {=0A= str +=3D "{";=0A= for (var p in obj)=0A= {=0A= if (!firstItem)=0A= str +=3D ", ";=0A= str +=3D "\"" + p + "\": " + Spry.Utils.serializeObject(obj[p]);=0A= firstItem =3D false;=0A= }=0A= str +=3D "}";=0A= }=0A= return str;=0A= };=0A= =0A= Spry.Utils.getNodesByFunc =3D function(root, func)=0A= {=0A= var nodeStack =3D new Array;=0A= var resultArr =3D new Array;=0A= var node =3D root;=0A= =0A= while (node)=0A= {=0A= if (func(node))=0A= resultArr.push(node);=0A= =0A= if (node.hasChildNodes())=0A= {=0A= nodeStack.push(node);=0A= node =3D node.firstChild;=0A= }=0A= else=0A= {=0A= if (node =3D=3D root)=0A= node =3D null;=0A= else=0A= try { node =3D node.nextSibling; } catch (e) { node =3D null; };=0A= }=0A= =0A= while (!node && nodeStack.length > 0)=0A= {=0A= node =3D nodeStack.pop();=0A= if (node =3D=3D root)=0A= node =3D null;=0A= else=0A= try { node =3D node.nextSibling; } catch (e) { node =3D null; }=0A= }=0A= }=0A= =0A= if (nodeStack && nodeStack.length > 0)=0A= Spry.Debug.trace("-- WARNING: Spry.Utils.getNodesByFunc() failed to = traverse all nodes!\n");=0A= =0A= return resultArr;=0A= };=0A= =0A= Spry.Utils.addClassName =3D function(ele, className)=0A= {=0A= ele =3D $(ele);=0A= if (!ele || !className || (ele.className && ele.className.search(new = RegExp("\\b" + className + "\\b")) !=3D -1))=0A= return;=0A= ele.className +=3D (ele.className ? " " : "") + className;=0A= };=0A= =0A= Spry.Utils.removeClassName =3D function(ele, className)=0A= {=0A= ele =3D $(ele);=0A= if (!ele || !className || (ele.className && ele.className.search(new = RegExp("\\b" + className + "\\b")) =3D=3D -1))=0A= return;=0A= ele.className =3D ele.className.replace(new RegExp("\\s*\\b" + = className + "\\b", "g"), "");=0A= };=0A= =0A= Spry.Utils.getFirstChildWithNodeName =3D function(node, nodeName)=0A= {=0A= var child =3D node.firstChild;=0A= =0A= while (child)=0A= {=0A= if (child.nodeName =3D=3D nodeName)=0A= return child;=0A= child =3D child.nextSibling;=0A= } =0A= =0A= return null;=0A= };=0A= =0A= Spry.Utils.nodeContainsElementNode =3D function(node)=0A= {=0A= if (node)=0A= {=0A= node =3D node.firstChild;=0A= =0A= while (node)=0A= {=0A= if (node.nodeType =3D=3D 1 /* Node.ELEMENT_NODE */)=0A= return true;=0A= =0A= node =3D node.nextSibling;=0A= }=0A= }=0A= return false;=0A= };=0A= =0A= Spry.Utils.getNodeText =3D function(node)=0A= {=0A= var txt =3D "";=0A= =0A= if (!node)=0A= return;=0A= =0A= try=0A= {=0A= var child =3D node.firstChild;=0A= =0A= while (child)=0A= {=0A= try=0A= {=0A= if (child.nodeType =3D=3D 3 /* TEXT_NODE */)=0A= txt +=3D Spry.Utils.encodeEntities(child.data);=0A= else if (child.nodeType =3D=3D 4 /* CDATA_SECTION_NODE */)=0A= txt +=3D child.data;=0A= } catch (e) { Spry.Debug.reportError("Spry.Utils.getNodeText() = exception caught: " + e + "\n"); }=0A= =0A= child =3D child.nextSibling;=0A= }=0A= }=0A= catch (e) { Spry.Debug.reportError("Spry.Utils.getNodeText() exception = caught: " + e + "\n"); }=0A= =0A= return txt;=0A= };=0A= =0A= Spry.Utils.CreateObjectForNode =3D function(node)=0A= {=0A= if (!node)=0A= return null;=0A= =0A= var obj =3D null;=0A= var i =3D 0;=0A= var attr =3D null;=0A= =0A= try=0A= {=0A= for (i =3D 0; i < node.attributes.length; i++)=0A= {=0A= attr =3D node.attributes[i];=0A= if (attr && attr.nodeType =3D=3D 2 /* Node.ATTRIBUTE_NODE */)=0A= {=0A= if (!obj)=0A= {=0A= obj =3D new Object();=0A= if (!obj)=0A= {=0A= Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object = creation failed!");=0A= return null;=0A= }=0A= }=0A= =0A= obj["@" + attr.name] =3D attr.value;=0A= }=0A= }=0A= }=0A= catch (e)=0A= {=0A= Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught = exception while accessing attributes: " + e + "\n");=0A= }=0A= =0A= var child =3D node.firstChild;=0A= =0A= if (child && !child.nextSibling && child.nodeType !=3D 1 /* = Node.ELEMENT_NODE */)=0A= {=0A= // We have a single child and it's not an element. It must=0A= // be the text value for this node. Add it to the record set and=0A= // give it the column the same name as the node.=0A= =0A= if (!obj)=0A= {=0A= obj =3D new Object();=0A= if (!obj)=0A= {=0A= Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object = creation failed!");=0A= return null;=0A= }=0A= }=0A= =0A= obj[node.nodeName] =3D Spry.Utils.getNodeText(node);=0A= }=0A= =0A= while (child)=0A= {=0A= // Add the text value for each child element. Note that=0A= // We skip elements that have element children (sub-elements)=0A= // because we don't handle multi-level data sets right now.=0A= =0A= if (child.nodeType =3D=3D 1 /* Node.ELEMENT_NODE */)=0A= {=0A= if (!Spry.Utils.nodeContainsElementNode(child))=0A= {=0A= var txt =3D Spry.Utils.getNodeText(child);=0A= if (!obj)=0A= {=0A= obj =3D new Object();=0A= if (!obj)=0A= {=0A= Spry.Debug.reportError("Spry.Utils.CreateObjectForNode(): Object = creation failed!");=0A= return null;=0A= }=0A= }=0A= =0A= obj[child.nodeName] =3D txt;=0A= =0A= // Now add properties for any attributes on the child. The property=0A= // name will be of the form "/@".=0A= try=0A= {=0A= var namePrefix =3D child.nodeName + "/@";=0A= =0A= for (i =3D 0; i < child.attributes.length; i++)=0A= {=0A= attr =3D child.attributes[i];=0A= if (attr && attr.nodeType =3D=3D 2 /* Node.ATTRIBUTE_NODE */)=0A= obj[namePrefix + attr.name] =3D attr.value;=0A= }=0A= }=0A= catch (e)=0A= {=0A= Spry.Debug.reportError("Spry.Utils.CreateObjectForNode() caught = exception while accessing attributes: " + e + "\n");=0A= }=0A= =0A= }=0A= // else Spry.Debug.trace("WARNING: Skipping '" + child.nodeName + "' = node! Multi-level data sets are not supported right now!\n");=0A= }=0A= =0A= child =3D child.nextSibling;=0A= }=0A= =0A= return obj;=0A= };=0A= =0A= Spry.Utils.getRecordSetFromXMLDoc =3D function(xmlDoc, path)=0A= {=0A= if (!xmlDoc || !path)=0A= return null;=0A= =0A= var recordSet =3D new Object();=0A= recordSet.xmlDoc =3D xmlDoc;=0A= recordSet.xmlPath =3D path;=0A= recordSet.dataHash =3D new Object;=0A= recordSet.data =3D new Array;=0A= recordSet.getData =3D function() { return this.data; };=0A= =0A= // Use the XPath library to find the nodes that will=0A= // make up our data set. The result should be an array=0A= // of subtrees that we need to flatten.=0A= =0A= var ctx =3D new ExprContext(xmlDoc);=0A= var pathExpr =3D xpathParse(path);=0A= var e =3D pathExpr.evaluate(ctx);=0A= =0A= // XXX: Note that we should check the result type of the evaluation=0A= // just in case it's a boolean, string, or number value instead of=0A= // a node set.=0A= =0A= var nodeArray =3D e.nodeSetValue();=0A= =0A= var isDOMNodeArray =3D true;=0A= =0A= if (nodeArray && nodeArray.length > 0)=0A= isDOMNodeArray =3D nodeArray[0].nodeType !=3D 2 /* Node.ATTRIBUTE_NODE = */;=0A= =0A= var nextID =3D 0;=0A= =0A= // We now have the set of nodes that make up our data set=0A= // so process each one.=0A= =0A= for (var i =3D 0; i < nodeArray.length; i++)=0A= {=0A= var rowObj =3D null;=0A= =0A= if (isDOMNodeArray)=0A= rowObj =3D Spry.Utils.CreateObjectForNode(nodeArray[i]);=0A= else // Must be a Node.ATTRIBUTE_NODE array.=0A= {=0A= rowObj =3D new Object;=0A= rowObj["@" + nodeArray[i].name] =3D nodeArray[i].value;=0A= }=0A= =0A= if (rowObj)=0A= {=0A= // We want to make sure that every row has a unique ID and since we=0A= // we don't know which column, if any, in this recordSet is a unique=0A= // identifier, we generate a unique ID ourselves and store it under=0A= // the ds_RowID column in the row object.=0A= =0A= rowObj['ds_RowID'] =3D nextID++;=0A= recordSet.dataHash[rowObj['ds_RowID']] =3D rowObj;=0A= recordSet.data.push(rowObj);=0A= }=0A= }=0A= =0A= return recordSet;=0A= };=0A= =0A= Spry.Utils.setOptions =3D function(obj, optionsObj, ignoreUndefinedProps)=0A= {=0A= if (!optionsObj)=0A= return;=0A= =0A= for (var optionName in optionsObj)=0A= {=0A= if (ignoreUndefinedProps && optionsObj[optionName] =3D=3D undefined)=0A= continue;=0A= obj[optionName] =3D optionsObj[optionName];=0A= }=0A= };=0A= =0A= Spry.Utils.SelectionManager =3D {};=0A= Spry.Utils.SelectionManager.selectionGroups =3D new Object;=0A= =0A= Spry.Utils.SelectionManager.SelectionGroup =3D function()=0A= {=0A= this.selectedElements =3D new Array;=0A= };=0A= =0A= Spry.Utils.SelectionManager.SelectionGroup.prototype.select =3D = function(element, className, multiSelect)=0A= {=0A= var selObj =3D null;=0A= =0A= if (!multiSelect)=0A= {=0A= // Multiple selection is not enabled, so clear any=0A= // selected elements from our list.=0A= =0A= this.clearSelection();=0A= }=0A= else=0A= {=0A= // Multiple selection is enabled, so check to see if element=0A= // is already in the array. If it is, make sure the className=0A= // is the className that was passed in.=0A= =0A= for (var i =3D 0; i < this.selectedElements.length; i++)=0A= {=0A= selObj =3D this.selectedElements[i].element;=0A= =0A= if (selObj.element =3D=3D element)=0A= {=0A= if (selObj.className !=3D className)=0A= {=0A= Spry.Utils.removeClassName(element, selObj.className);=0A= Spry.Utils.addClassName(element, className);=0A= }=0A= return;=0A= }=0A= }=0A= }=0A= =0A= // Add the element to our list of selected elements.=0A= =0A= selObj =3D new Object;=0A= selObj.element =3D element;=0A= selObj.className =3D className;=0A= this.selectedElements.push(selObj);=0A= Spry.Utils.addClassName(element, className);=0A= };=0A= =0A= Spry.Utils.SelectionManager.SelectionGroup.prototype.unSelect =3D = function(element)=0A= {=0A= for (var i =3D 0; i < this.selectedElements.length; i++)=0A= {=0A= var selObj =3D this.selectedElements[i].element;=0A= =0A= if (selObj.element =3D=3D element)=0A= {=0A= Spry.Utils.removeClassName(selObj.element, selObj.className);=0A= return;=0A= }=0A= }=0A= };=0A= =0A= Spry.Utils.SelectionManager.SelectionGroup.prototype.clearSelection =3D = function()=0A= {=0A= var selObj =3D null;=0A= =0A= do=0A= {=0A= selObj =3D this.selectedElements.shift();=0A= if (selObj)=0A= Spry.Utils.removeClassName(selObj.element, selObj.className);=0A= }=0A= while (selObj);=0A= };=0A= =0A= Spry.Utils.SelectionManager.getSelectionGroup =3D = function(selectionGroupName)=0A= {=0A= if (!selectionGroupName)=0A= return null;=0A= =0A= var groupObj =3D = Spry.Utils.SelectionManager.selectionGroups[selectionGroupName];=0A= =0A= if (!groupObj)=0A= {=0A= groupObj =3D new Spry.Utils.SelectionManager.SelectionGroup();=0A= Spry.Utils.SelectionManager.selectionGroups[selectionGroupName] =3D = groupObj;=0A= }=0A= =0A= return groupObj;=0A= };=0A= =0A= Spry.Utils.SelectionManager.select =3D function(selectionGroupName, = element, className, multiSelect)=0A= {=0A= var groupObj =3D = Spry.Utils.SelectionManager.getSelectionGroup(selectionGroupName);=0A= =0A= if (!groupObj)=0A= return;=0A= =0A= groupObj.select(element, className, multiSelect);=0A= };=0A= =0A= Spry.Utils.SelectionManager.unSelect =3D function(selectionGroupName, = element)=0A= {=0A= var groupObj =3D = Spry.Utils.SelectionManager.getSelectionGroup(selectionGroupName);=0A= =0A= if (!groupObj)=0A= return;=0A= =0A= groupObj.unSelect(element, className);=0A= };=0A= =0A= Spry.Utils.SelectionManager.clearSelection =3D = function(selectionGroupName)=0A= {=0A= var groupObj =3D = Spry.Utils.SelectionManager.getSelectionGroup(selectionGroupName);=0A= =0A= if (!groupObj)=0A= return;=0A= =0A= groupObj.clearSelection();=0A= };=0A= =0A= //////////////////////////////////////////////////////////////////////=0A= //=0A= // Define Prototype's $() convenience function.=0A= //=0A= //////////////////////////////////////////////////////////////////////=0A= =0A= function $()=0A= {=0A= var elements =3D new Array();=0A= =0A= for (var i =3D 0; i < arguments.length; i++)=0A= {=0A= var element =3D arguments[i];=0A= if (typeof element =3D=3D 'string')=0A= element =3D document.getElementById(element);=0A= =0A= if (arguments.length =3D=3D 1)=0A= return element;=0A= =0A= elements.push(element);=0A= }=0A= =0A= return elements;=0A= }=0A= =0A= Spry.Utils.Notifier =3D function()=0A= {=0A= this.observers =3D [];=0A= this.suppressNotifications =3D 0;=0A= };=0A= =0A= Spry.Utils.Notifier.prototype.addObserver =3D function(observer)=0A= {=0A= if (!observer)=0A= return;=0A= =0A= // Make sure the observer isn't already on the list.=0A= =0A= var len =3D this.observers.length;=0A= for (var i =3D 0; i < len; i++)=0A= {=0A= if (this.observers[i] =3D=3D observer)=0A= return;=0A= }=0A= this.observers[len] =3D observer;=0A= };=0A= =0A= Spry.Utils.Notifier.prototype.removeObserver =3D function(observer)=0A= {=0A= if (!observer)=0A= return;=0A= =0A= for (var i =3D 0; i < this.observers.length; i++)=0A= {=0A= if (this.observers[i] =3D=3D observer)=0A= {=0A= this.observers.splice(i, 1);=0A= break;=0A= }=0A= }=0A= };=0A= =0A= Spry.Utils.Notifier.prototype.notifyObservers =3D function(methodName, = data)=0A= {=0A= if (!methodName)=0A= return;=0A= =0A= if (!this.suppressNotifications)=0A= {=0A= var len =3D this.observers.length;=0A= for (var i =3D 0; i < len; i++)=0A= {=0A= var obs =3D this.observers[i];=0A= if (obs)=0A= {=0A= if (typeof obs =3D=3D "function")=0A= obs(methodName, this, data);=0A= else if (obs[methodName])=0A= obs[methodName](this, data);=0A= }=0A= }=0A= }=0A= };=0A= =0A= Spry.Utils.Notifier.prototype.enableNotifications =3D function()=0A= {=0A= if (--this.suppressNotifications < 0)=0A= {=0A= this.suppressNotifications =3D 0;=0A= Spry.Debug.reportError("Unbalanced enableNotifications() call!\n");=0A= }=0A= };=0A= =0A= Spry.Utils.Notifier.prototype.disableNotifications =3D function()=0A= {=0A= ++this.suppressNotifications;=0A= };=0A= =0A= //////////////////////////////////////////////////////////////////////=0A= //=0A= // Spry.Debug=0A= //=0A= //////////////////////////////////////////////////////////////////////=0A= =0A= Spry.Debug =3D {};=0A= Spry.Debug.enableTrace =3D true;=0A= Spry.Debug.debugWindow =3D null;=0A= =0A= Spry.Debug.createDebugWindow =3D function()=0A= {=0A= if (!Spry.Debug.enableTrace || Spry.Debug.debugWindow)=0A= return;=0A= try=0A= {=0A= Spry.Debug.debugWindow =3D document.createElement("div");=0A= var div =3D Spry.Debug.debugWindow;=0A= div.style.fontSize =3D "12px";=0A= div.style.fontFamily =3D "console";=0A= div.style.position =3D "absolute";=0A= div.style.width =3D "400px";=0A= div.style.height =3D "300px";=0A= div.style.overflow =3D "auto";=0A= div.style.border =3D "solid 1px black";=0A= div.style.backgroundColor =3D "white";=0A= div.style.color =3D "black";=0A= div.style.bottom =3D "0px";=0A= div.style.right =3D "0px";=0A= // div.style.opacity =3D "0.5";=0A= // div.style.filter =3D "alpha(opacity=3D50)";=0A= div.setAttribute("id", "SpryDebugWindow");=0A= document.body.appendChild(Spry.Debug.debugWindow);=0A= }=0A= catch (e) {}=0A= };=0A= =0A= Spry.Debug.debugOut =3D function(str, bgColor)=0A= {=0A= if (!Spry.Debug.debugWindow)=0A= {=0A= Spry.Debug.createDebugWindow();=0A= if (!Spry.Debug.debugWindow)=0A= return;=0A= }=0A= =0A= var d =3D document.createElement("div");=0A= if (bgColor)=0A= d.style.backgroundColor =3D bgColor;=0A= d.innerHTML =3D str;=0A= Spry.Debug.debugWindow.appendChild(d); =0A= };=0A= =0A= Spry.Debug.trace =3D function(str)=0A= {=0A= Spry.Debug.debugOut(str);=0A= };=0A= =0A= Spry.Debug.reportError =3D function(str)=0A= {=0A= Spry.Debug.debugOut(str, "red");=0A= };=0A= =0A= //////////////////////////////////////////////////////////////////////=0A= //=0A= // Spry.Data=0A= //=0A= //////////////////////////////////////////////////////////////////////=0A= =0A= Spry.Data =3D {};=0A= Spry.Data.regionsArray =3D {};=0A= =0A= Spry.Data.initRegions =3D function(rootNode)=0A= {=0A= if (!rootNode)=0A= rootNode =3D document.body;=0A= =0A= var lastRegionFound =3D null;=0A= =0A= var regions =3D Spry.Utils.getNodesByFunc(rootNode, function(node)=0A= {=0A= try=0A= {=0A= if (node.nodeType !=3D 1 /* Node.ELEMENT_NODE */)=0A= return false;=0A= =0A= // Region elements must have an spryregion attribute with a=0A= // non-empty value. An id attribute is also required so we can=0A= // reference the region by name if necessary.=0A= =0A= var attrName =3D "spry:region";=0A= var attr =3D node.attributes.getNamedItem(attrName);=0A= if (!attr)=0A= {=0A= attrName =3D "spry:detailregion";=0A= attr =3D node.attributes.getNamedItem(attrName);=0A= }=0A= if (attr)=0A= {=0A= if (lastRegionFound)=0A= {=0A= var parent =3D node.parentNode;=0A= while (parent)=0A= {=0A= if (parent =3D=3D lastRegionFound)=0A= {=0A= Spry.Debug.reportError("Found a nested " + attrName + " in the = following markup. Nested regions are currently not supported.
      " =
      + Spry.Utils.encodeEntities(parent.innerHTML) + "
      ");=0A= return false;=0A= }=0A= parent =3D parent.parentNode;=0A= }=0A= }=0A= =0A= if (attr.value)=0A= {=0A= attr =3D node.attributes.getNamedItem("id");=0A= if (!attr || !attr.value)=0A= {=0A= // The node is missing an id attribute so add one.=0A= node.setAttribute("id", "spryregion" + = (++Spry.Data.initRegions.nextUniqueRegionID));=0A= }=0A= =0A= lastRegionFound =3D node;=0A= return true;=0A= }=0A= else=0A= Spry.Debug.reportError(attrName + " attributes require one or more = data set names as values!");=0A= }=0A= }=0A= catch(e) {}=0A= return false;=0A= });=0A= =0A= var name, dataSets, i;=0A= =0A= for (i =3D 0; i < regions.length; i++)=0A= {=0A= var rgn =3D regions[i];=0A= =0A= var isDetailRegion =3D false;=0A= =0A= // Get the region name.=0A= name =3D rgn.attributes.getNamedItem("id").value;=0A= =0A= attr =3D rgn.attributes.getNamedItem("spry:region");=0A= if (!attr)=0A= {=0A= attr =3D rgn.attributes.getNamedItem("spry:detailregion");=0A= isDetailRegion =3D true;=0A= }=0A= =0A= if (!attr.value)=0A= {=0A= Spry.Debug.reportError("spry:region and spry:detailregion attributes = require one or more data set names as values!");=0A= continue;=0A= }=0A= =0A= // Remove the spry:region or spry:detailregion attribute so it doesn't = appear in=0A= // the output generated by our processing of the dynamic region.=0A= rgn.attributes.removeNamedItem(attr.nodeName);=0A= =0A= // Remove the hiddenRegionCSS class from the rgn.=0A= Spry.Utils.removeClassName(rgn, = Spry.Data.Region.hiddenRegionClassName);=0A= =0A= // Get the DataSets that should be bound to the region.=0A= dataSets =3D Spry.Data.Region.strToDataSetsArray(attr.value);=0A= =0A= if (!dataSets.length)=0A= {=0A= Spry.Debug.reportError("spry:region or spry:detailregion attribute = has no data set!");=0A= continue;=0A= }=0A= =0A= var hasBehaviorAttributes =3D false;=0A= var hasSpryContent =3D false;=0A= var dataStr =3D "";=0A= =0A= var parent =3D null;=0A= var regionStates =3D {};=0A= var regionStateMap =3D {};=0A= =0A= // Check if there are any attributes on the region node that remap=0A= // the default states.=0A= =0A= attr =3D rgn.attributes.getNamedItem("spry:readystate");=0A= if (attr && attr.value)=0A= regionStateMap["ready"] =3D attr.value;=0A= attr =3D rgn.attributes.getNamedItem("spry:errorstate");=0A= if (attr && attr.value)=0A= regionStateMap["error"] =3D attr.value;=0A= attr =3D rgn.attributes.getNamedItem("spry:loadingstate");=0A= if (attr && attr.value)=0A= regionStateMap["loading"] =3D attr.value;=0A= =0A= // Find all of the processing instruction regions in the region.=0A= // Insert comments around the regions we find so we can identify them=0A= // easily when tokenizing the region html string.=0A= =0A= var piRegions =3D Spry.Utils.getNodesByFunc(rgn, function(node)=0A= {=0A= try=0A= {=0A= if (node.nodeType =3D=3D 1 /* ELEMENT_NODE */)=0A= {=0A= var attributes =3D node.attributes;=0A= var numPI =3D Spry.Data.Region.PI.orderedInstructions.length;=0A= var lastStartComment =3D null;=0A= var lastEndComment =3D null;=0A= =0A= for (var i =3D 0; i < numPI; i++)=0A= {=0A= var piName =3D Spry.Data.Region.PI.orderedInstructions[i];=0A= var attr =3D attributes.getNamedItem(piName);=0A= if (!attr)=0A= continue;=0A= =0A= var piDesc =3D Spry.Data.Region.PI.instructions[piName];=0A= var childrenOnly =3D (node =3D=3D rgn) ? true : = piDesc.childrenOnly;=0A= var openTag =3D piDesc.getOpenTag(node, piName);=0A= var closeTag =3D piDesc.getCloseTag(node, piName);=0A= =0A= if (childrenOnly)=0A= {=0A= var oComment =3D document.createComment(openTag);=0A= var cComment =3D document.createComment(closeTag)=0A= =0A= if (!lastStartComment)=0A= node.insertBefore(oComment, node.firstChild);=0A= else=0A= node.insertBefore(oComment, lastStartComment.nextSibling);=0A= lastStartComment =3D oComment;=0A= =0A= if (!lastEndComment)=0A= node.appendChild(cComment);=0A= else=0A= node.insertBefore(cComment, lastEndComment);=0A= lastEndComment =3D cComment;=0A= }=0A= else=0A= {=0A= var parent =3D node.parentNode;=0A= parent.insertBefore(document.createComment(openTag), node);=0A= parent.insertBefore(document.createComment(closeTag), = node.nextSibling);=0A= }=0A= =0A= // If this is a spry:state processing instruction, record the = state name=0A= // so we know that we should re-generate the region if we ever see = that state.=0A= =0A= if (piName =3D=3D "spry:state")=0A= regionStates[attr.value] =3D true;=0A= =0A= node.removeAttribute(piName);=0A= }=0A= =0A= if (Spry.Data.Region.enableBehaviorAttributes)=0A= {=0A= var bAttrs =3D Spry.Data.Region.behaviorAttrs;=0A= for (var behaviorAttrName in bAttrs)=0A= {=0A= var bAttr =3D attributes.getNamedItem(behaviorAttrName);=0A= if (bAttr)=0A= {=0A= hasBehaviorAttributes =3D true;=0A= if (bAttrs[behaviorAttrName].setup)=0A= bAttrs[behaviorAttrName].setup(node, bAttr.value);=0A= }=0A= }=0A= }=0A= }=0A= }=0A= catch(e) {}=0A= return false;=0A= });=0A= =0A= // Get the data in the region.=0A= dataStr =3D rgn.innerHTML;=0A= =0A= // Argh! IE has an innerHTML bug where it will remove the quotes = around any=0A= // attribute value that it thinks is a single word. This includes = removing quotes=0A= // around our data references which is problematic since a single data = reference=0A= // can be replaced with multiple words. If we are running in IE, we = have to call=0A= // fixUpIEInnerHTML to get around this problem.=0A= =0A= if (window.ActiveXObject && !Spry.Data.Region.disableIEInnerHTMLFixUp = && dataStr.search(/=3D\{/) !=3D -1)=0A= {=0A= if (Spry.Data.Region.debug)=0A= Spry.Debug.trace("
      Performing IE innerHTML fix up of Region: " = + name + "

      " + Spry.Utils.encodeEntities(dataStr));=0A= =0A= dataStr =3D Spry.Utils.fixUpIEInnerHTML(dataStr);=0A= }=0A= =0A= if (Spry.Data.Region.debug)=0A= Spry.Debug.trace("
      Region template markup for '" + name + "':

      " + Spry.Utils.encodeEntities(dataStr));=0A= =0A= if (!hasSpryContent)=0A= {=0A= // Clear the region.=0A= rgn.innerHTML =3D "";=0A= }=0A= =0A= // Create a Spry.Data.Region object for this region.=0A= var region =3D new Spry.Data.Region(rgn, name, isDetailRegion, = dataStr, dataSets, regionStates, regionStateMap, hasBehaviorAttributes);=0A= Spry.Data.regionsArray[region.name] =3D region;=0A= }=0A= =0A= Spry.Data.updateAllRegions();=0A= };=0A= =0A= Spry.Data.initRegions.nextUniqueRegionID =3D 0;=0A= =0A= Spry.Data.updateRegion =3D function(regionName)=0A= {=0A= if (!regionName || !Spry.Data.regionsArray || = !Spry.Data.regionsArray[regionName])=0A= return;=0A= =0A= try { Spry.Data.regionsArray[regionName].updateContent(); }=0A= catch(e) { Spry.Debug.reportError("Spry.Data.updateRegion(" + = regionName + ") caught an exception: " + e + "\n"); }=0A= };=0A= =0A= Spry.Data.getRegion =3D function(regionName)=0A= {=0A= return Spry.Data.regionsArray[regionName];=0A= };=0A= =0A= =0A= Spry.Data.updateAllRegions =3D function()=0A= {=0A= if (!Spry.Data.regionsArray)=0A= return;=0A= =0A= for (var regionName in Spry.Data.regionsArray)=0A= Spry.Data.updateRegion(regionName);=0A= };=0A= =0A= //////////////////////////////////////////////////////////////////////=0A= //=0A= // Spry.Data.DataSet=0A= //=0A= //////////////////////////////////////////////////////////////////////=0A= =0A= Spry.Data.DataSet =3D function()=0A= {=0A= Spry.Utils.Notifier.call(this);=0A= =0A= this.name =3D "";=0A= this.internalID =3D Spry.Data.DataSet.nextDataSetID++;=0A= this.curRowID =3D 0;=0A= this.data =3D null;=0A= this.unfilteredData =3D null;=0A= this.dataHash =3D null;=0A= this.columnTypes =3D new Object;=0A= this.filterFunc =3D null; // non-destructive filter function=0A= this.filterDataFunc =3D null; // destructive filter function=0A= =0A= this.distinctOnLoad =3D false;=0A= this.sortOnLoad =3D null;=0A= this.sortOrderOnLoad =3D "ascending";=0A= this.keepSorted =3D false;=0A= =0A= this.dataWasLoaded =3D false;=0A= this.pendingRequest =3D null;=0A= =0A= this.lastSortColumns =3D [];=0A= this.lastSortOrder =3D "";=0A= =0A= this.loadIntervalID =3D 0;=0A= };=0A= =0A= Spry.Data.DataSet.prototype =3D new Spry.Utils.Notifier();=0A= Spry.Data.DataSet.prototype.constructor =3D Spry.Data.DataSet;=0A= =0A= Spry.Data.DataSet.prototype.getData =3D function(unfiltered)=0A= {=0A= return (unfiltered && this.unfilteredData) ? this.unfilteredData : = this.data;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getUnfilteredData =3D function()=0A= {=0A= // XXX: Deprecated.=0A= return this.getData(true);=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getLoadDataRequestIsPending =3D function()=0A= {=0A= return this.pendingRequest !=3D null;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getDataWasLoaded =3D function()=0A= {=0A= return this.dataWasLoaded;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.loadData =3D function()=0A= {=0A= // The idea here is that folks using the base class DataSet directly=0A= // would change the data in the DataSet manually and then call = loadData()=0A= // to fire off an async notifications to say that it was ready for = consumption.=0A= //=0A= // Firing off data changed notificataions synchronously from this method=0A= // can wreak havoc with complicated master/detail regions that use data = sets=0A= // that have master/detail relationships with other data sets. Our data = set=0A= // logic already handles async data loading nicely so we use a timer to = fire=0A= // off the data changed notification to insure that it happens after = this=0A= // function is finished and the JS stack unwinds.=0A= //=0A= // Other classes that derive from this class and load data synchronously=0A= // inside their loadData() implementation should also fire off an async=0A= // notification in this same manner to avoid this same problem.=0A= =0A= var self =3D this;=0A= =0A= this.pendingRequest =3D new Object;=0A= this.dataWasLoaded =3D false;=0A= this.pendingRequest.timer =3D setTimeout(function()=0A= {=0A= self.pendingRequest =3D null;=0A= self.dataWasLoaded =3D true;=0A= =0A= if (self.filterDataFunc)=0A= self.filterData(self.filterDataFunc, true);=0A= =0A= if (self.distinctOnLoad)=0A= self.distinct();=0A= =0A= if (self.keepSorted && self.getSortColumn())=0A= self.sort(self.lastSortColumns, self.lastSortOrder)=0A= else if (self.sortOnLoad)=0A= self.sort(self.sortOnLoad, self.sortOrderOnLoad);=0A= =0A= if (self.filterFunc)=0A= self.filter(self.filterFunc, true);=0A= =0A= self.notifyObservers("onDataChanged");=0A= }, 0); =0A= };=0A= =0A= Spry.Data.DataSet.prototype.cancelLoadData =3D function()=0A= {=0A= if (this.pendingRequest && this.pendingRequest.timer)=0A= clearTimeout(this.pendingRequest.timer);=0A= this.pendingRequest =3D null;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getRowCount =3D function(unfiltered)=0A= {=0A= var rows =3D this.getData(unfiltered);=0A= return rows ? rows.length : 0;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getRowByID =3D function(rowID)=0A= {=0A= if (!this.data)=0A= return null;=0A= return this.dataHash[rowID];=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getRowByRowNumber =3D function(rowNumber, = unfiltered)=0A= {=0A= var rows =3D this.getData(unfiltered);=0A= if (rows && rowNumber >=3D 0 && rowNumber < rows.length)=0A= return rows[rowNumber];=0A= return null;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getCurrentRow =3D function()=0A= {=0A= return this.getRowByID(this.curRowID);=0A= };=0A= =0A= Spry.Data.DataSet.prototype.setCurrentRow =3D function(rowID)=0A= {=0A= if (this.curRowID =3D=3D rowID)=0A= return;=0A= =0A= var nData =3D { oldRowID: this.curRowID, newRowID: rowID };=0A= this.curRowID =3D rowID;=0A= this.notifyObservers("onCurrentRowChanged", nData);=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getRowNumber =3D function(row)=0A= {=0A= if (row && this.data && this.data.length)=0A= {=0A= var numRows =3D this.data.length;=0A= for (var i =3D 0; i < numRows; i++)=0A= {=0A= if (this.data[i] =3D=3D row)=0A= return i;=0A= }=0A= }=0A= =0A= return 0;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getCurrentRowNumber =3D function()=0A= {=0A= return this.getRowNumber(this.getCurrentRow());=0A= };=0A= =0A= Spry.Data.DataSet.prototype.setCurrentRowNumber =3D function(rowNumber)=0A= {=0A= if (!this.data || rowNumber >=3D this.data.length)=0A= {=0A= Spry.Debug.trace("Invalid row number: " + rowNumber + "\n");=0A= return;=0A= }=0A= =0A= var rowID =3D this.data[rowNumber]["ds_RowID"];=0A= =0A= if (rowID =3D=3D undefined || this.curRowID =3D=3D rowID)=0A= return;=0A= =0A= this.setCurrentRow(rowID);=0A= };=0A= =0A= Spry.Data.DataSet.prototype.findRowsWithColumnValues =3D = function(valueObj, firstMatchOnly, unfiltered)=0A= {=0A= var results =3D [];=0A= var rows =3D this.getData(unfiltered);=0A= if (rows)=0A= {=0A= var numRows =3D rows.length;=0A= for (var i =3D 0; i < numRows; i++)=0A= {=0A= var row =3D rows[i];=0A= var matched =3D true;=0A= =0A= for (var colName in valueObj)=0A= {=0A= if (valueObj[colName] !=3D row[colName])=0A= {=0A= matched =3D false;=0A= break;=0A= }=0A= }=0A= =0A= if (matched)=0A= {=0A= if (firstMatchOnly)=0A= return row;=0A= results.push(row);=0A= }=0A= }=0A= }=0A= =0A= return firstMatchOnly ? null : results;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.setColumnType =3D function(columnName, = columnType)=0A= {=0A= if (columnName)=0A= this.columnTypes[columnName] =3D columnType;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getColumnType =3D function(columnName)=0A= {=0A= if (this.columnTypes[columnName])=0A= return this.columnTypes[columnName];=0A= return "string";=0A= };=0A= =0A= Spry.Data.DataSet.prototype.distinct =3D function()=0A= {=0A= if (this.data)=0A= {=0A= var oldData =3D this.data;=0A= this.data =3D [];=0A= this.dataHash =3D {};=0A= =0A= var alreadySeenHash =3D {};=0A= var i =3D 0;=0A= =0A= for (var i =3D 0; i < oldData.length; i++)=0A= {=0A= var rec =3D oldData[i];=0A= var hashStr =3D "";=0A= for (var recField in rec)=0A= {=0A= if (recField !=3D "ds_RowID")=0A= {=0A= if (hashStr)=0A= hashStr +=3D ",";=0A= hashStr +=3D recField + ":" + "\"" + rec[recField] + "\"";=0A= }=0A= }=0A= if (!alreadySeenHash[hashStr])=0A= {=0A= this.data.push(rec);=0A= this.dataHash[rec['ds_RowID']] =3D rec;=0A= alreadySeenHash[hashStr] =3D true;=0A= }=0A= }=0A= }=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getSortColumn =3D function() {=0A= return (this.lastSortColumns && this.lastSortColumns.length > 0) ? = this.lastSortColumns[0] : "";=0A= };=0A= =0A= Spry.Data.DataSet.prototype.getSortOrder =3D function() {=0A= return this.lastSortOrder ? this.lastSortOrder : "";=0A= };=0A= =0A= Spry.Data.DataSet.prototype.sort =3D function(columnNames, sortOrder)=0A= {=0A= // columnNames can be either the name of a column to=0A= // sort on, or an array of column names, but it can't be=0A= // null/undefined.=0A= =0A= if (!columnNames)=0A= return;=0A= =0A= // If only one column name was specified for sorting, do a=0A= // secondary sort on ds_RowID so we get a stable sort order.=0A= =0A= if (typeof columnNames =3D=3D "string")=0A= columnNames =3D [ columnNames, "ds_RowID" ];=0A= else if (columnNames.length < 2 && columnNames[0] !=3D "ds_RowID")=0A= columnNames.push("ds_RowID");=0A= =0A= if (!sortOrder)=0A= sortOrder =3D "toggle";=0A= =0A= if (sortOrder =3D=3D "toggle")=0A= {=0A= if (this.lastSortColumns.length > 0 && this.lastSortColumns[0] =3D=3D = columnNames[0] && this.lastSortOrder =3D=3D "ascending")=0A= sortOrder =3D "descending";=0A= else=0A= sortOrder =3D "ascending";=0A= }=0A= =0A= if (sortOrder !=3D "ascending" && sortOrder !=3D "descending")=0A= {=0A= Spry.Debug.reportError("Invalid sort order type specified: " + = sortOrder + "\n");=0A= return;=0A= }=0A= =0A= var nData =3D {=0A= oldSortColumns: this.lastSortColumns,=0A= oldSortOrder: this.lastSortOrder,=0A= newSortColumns: columnNames,=0A= newSortOrder: sortOrder=0A= };=0A= this.notifyObservers("onPreSort", nData);=0A= =0A= var cname =3D columnNames[columnNames.length - 1];=0A= var sortfunc =3D Spry.Data.DataSet.prototype.sort.getSortFunc(cname, = this.getColumnType(cname), sortOrder);=0A= =0A= for (var i =3D columnNames.length - 2; i >=3D 0; i--)=0A= {=0A= cname =3D columnNames[i];=0A= sortfunc =3D = Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc(Spry.Data.DataSet= .prototype.sort.getSortFunc(cname, this.getColumnType(cname), = sortOrder), sortfunc);=0A= }=0A= =0A= if (this.unfilteredData)=0A= {=0A= this.unfilteredData.sort(sortfunc);=0A= if (this.filterFunc)=0A= this.filter(this.filterFunc, true);=0A= }=0A= else=0A= this.data.sort(sortfunc);=0A= =0A= this.lastSortColumns =3D columnNames.slice(0); // Copy the array.=0A= this.lastSortOrder =3D sortOrder;=0A= =0A= this.notifyObservers("onPostSort", nData);=0A= };=0A= =0A= Spry.Data.DataSet.prototype.sort.getSortFunc =3D function(prop, type, = order)=0A= {=0A= var sortfunc =3D null;=0A= if (type =3D=3D "number")=0A= {=0A= if (order =3D=3D "ascending")=0A= sortfunc =3D function(a, b){ return a[prop]-b[prop]; };=0A= else // order =3D=3D "descending"=0A= sortfunc =3D function(a, b){ return b[prop]-a[prop]; };=0A= }=0A= else if (type =3D=3D "date")=0A= {=0A= if (order =3D=3D "ascending")=0A= sortfunc =3D function(a, b)=0A= {=0A= var dA =3D a[prop];=0A= var dB =3D b[prop]; =0A= dA =3D dA ? (new Date(dA)) : 0;=0A= dB =3D dB ? (new Date(dB)) : 0;=0A= return dA - dB;=0A= };=0A= else // order =3D=3D "descending"=0A= sortfunc =3D function(a, b)=0A= {=0A= var dA =3D a[prop];=0A= var dB =3D b[prop]; =0A= dA =3D dA ? (new Date(dA)) : 0;=0A= dB =3D dB ? (new Date(dB)) : 0;=0A= return dB - dA;=0A= };=0A= }=0A= else // type =3D=3D "string"=0A= {=0A= if (order =3D=3D "ascending")=0A= sortfunc =3D function(a, b){=0A= var tA =3D a[prop].toString();=0A= var tB =3D b[prop].toString();=0A= var tA_l =3D tA.toLowerCase();=0A= var tB_l =3D tB.toLowerCase();=0A= var min_len =3D tA.length > tB.length ? tB.length : tA.length;=0A= =0A= for (var i=3D0; i < min_len; i++){=0A= var a_l_c =3D tA_l.charAt(i);=0A= var b_l_c =3D tB_l.charAt(i);=0A= var a_c =3D tA.charAt(i);=0A= var b_c =3D tB.charAt(i);=0A= if (a_l_c > b_l_c){=0A= return 1;=0A= }else if (a_l_c < b_l_c){=0A= return -1;=0A= }else if (a_c > b_c){=0A= return 1;=0A= }else if (a_c < b_c){=0A= return -1;=0A= }=0A= }=0A= if(tA.length =3D=3D tB.length){=0A= return 0;=0A= }else if (tA.length > tB.length){=0A= return 1;=0A= }else{=0A= return -1; =0A= }=0A= };=0A= else // order =3D=3D "descending"=0A= sortfunc =3D function(a, b){=0A= var tA =3D a[prop].toString();=0A= var tB =3D b[prop].toString();=0A= var tA_l =3D tA.toLowerCase();=0A= var tB_l =3D tB.toLowerCase();=0A= var min_len =3D tA.length > tB.length ? tB.length : tA.length;=0A= for (var i=3D0; i < min_len; i++){=0A= var a_l_c =3D tA_l.charAt(i);=0A= var b_l_c =3D tB_l.charAt(i);=0A= var a_c =3D tA.charAt(i);=0A= var b_c =3D tB.charAt(i);=0A= if (a_l_c > b_l_c){=0A= return -1;=0A= }else if (a_l_c < b_l_c){=0A= return 1;=0A= }else if (a_c > b_c){=0A= return -1;=0A= }else if (a_c < b_c){=0A= return 1;=0A= }=0A= }=0A= if(tA.length =3D=3D tB.length){=0A= return 0;=0A= }else if (tA.length > tB.length){=0A= return -1;=0A= }else{=0A= return 1; =0A= }=0A= }; =0A= }=0A= =0A= return sortfunc;=0A= };=0A= =0A= Spry.Data.DataSet.prototype.sort.buildSecondarySortFunc =3D = function(funcA, funcB)=0A= {=0A= return function(a, b)=0A= {=0A= var ret =3D funcA(a, b);=0A= if (ret =3D=3D 0)=0A= ret =3D funcB(a, b);=0A= return ret;=0A= };=0A= };=0A= =0A= Spry.Data.DataSet.prototype.filterData =3D function(filterFunc, = filterOnly)=0A= {=0A= // This is a destructive filter function.=0A= =0A= var dataChanged =3D false;=0A= =0A= if (!filterFunc)=0A= {=0A= // Caller wants to remove the filter.=0A= =0A= this.filterDataFunc =3D null;=0A= dataChanged =3D true;=0A= }=0A= else=0A= {=0A= this.filterDataFunc =3D filterFunc;=0A= =0A= if (this.dataWasLoaded && ((this.unfilteredData && = this.unfilteredData.length) || (this.data && this.data.length)))=0A= {=0A= if (this.unfilteredData)=0A= {=0A= this.data =3D this.unfilteredData;=0A= this.unfilteredData =3D null;=0A= }=0A= =0A= var oldData =3D this.data;=0A= this.data =3D [];=0A= this.dataHash =3D {};=0A= =0A= for (var i =3D 0; i < oldData.length; i++)=0A= {=0A= var newRow =3D filterFunc(this, oldData[i], i);=0A= if (newRow)=0A= {=0A= this.data.push(newRow);=0A= this.dataHash[newRow["ds_RowID"]] =3D newRow;=0A= }=0A= }=0A= =0A= dataChanged =3D true;=0A= }=0A= }=0A= =0A= if (dataChanged)=0A= {=0A= if (!filterOnly)=0A= {=0A= this.disableNotifications();=0A= if (this.filterFunc)=0A= this.filter(this.filterFunc, true);=0A= this.enableNotifications();=0A= }=0A= =0A= this.notifyObservers("onDataChanged");=0A= }=0A= };=0A= =0A= Spry.Data.DataSet.prototype.filter =3D function(filterFunc, filterOnly)=0A= {=0A= // This is a non-destructive filter function.=0A= =0A= var dataChanged =3D false;=0A= =0A= if (!filterFunc)=0A= {=0A= if (this.filterFunc && this.unfilteredData)=0A= {=0A= // Caller wants to remove the filter. Restore the unfiltered=0A= // data and trigger a data changed notification.=0A= =0A= this.data =3D this.unfilteredData;=0A= this.unfilteredData =3D null;=0A= this.filterFunc =3D null;=0A= dataChanged =3D true;=0A= }=0A= }=0A= else=0A= {=0A= this.filterFunc =3D filterFunc;=0A= =0A= if (this.dataWasLoaded && (this.unfilteredData || (this.data && = this.data.length)))=0A= {=0A= if (!this.unfilteredData)=0A= this.unfilteredData =3D this.data;=0A= =0A= var udata =3D this.unfilteredData;=0A= this.data =3D [];=0A= =0A= for (var i =3D 0; i < udata.length; i++)=0A= {=0A= var newRow =3D filterFunc(this, udata[i], i);=0A= =0A= if (newRow)=0A= this.data.push(newRow);=0A= }=0A= =0A= dataChanged =3D true;=0A= }=0A= }=0A= =0A= if (dataChanged)=0A= this.notifyObservers("onDataChanged");=0A= };=0A= =0A= Spry.Data.DataSet.prototype.startLoadInterval =3D function(interval)=0A= {=0A= this.stopLoadInterval();=0A= if (interval > 0)=0A= {=0A= var self =3D this;=0A= this.loadInterval =3D interval;=0A= this.loadIntervalID =3D setInterval(function() { self.loadData(); }, = interval);=0A= }=0A= };=0A= =0A= Spry.Data.DataSet.prototype.stopLoadInterval =3D function()=0A= {=0A= if (this.loadIntervalID)=0A= clearInterval(this.loadIntervalID);=0A= this.loadInterval =3D 0;=0A= this.loadIntervalID =3D null;=0A= };=0A= =0A= Spry.Data.DataSet.nextDataSetID =3D 0;=0A= =0A= //////////////////////////////////////////////////////////////////////=0A= //=0A= // Spry.Data.XMLDataSet=0A= //=0A= //////////////////////////////////////////////////////////////////////=0A= =0A= Spry.Data.XMLDataSet =3D function(dataSetURL, dataSetPath, = dataSetOptions)=0A= {=0A= // Call the constructor for our DataSet base class so that=0A= // our base class properties get defined. We'll call setOptions=0A= // manually after we set up our XMLDataSet properties.=0A= =0A= Spry.Data.DataSet.call(this);=0A= =0A= // XMLDataSet Properties:=0A= =0A= this.url =3D dataSetURL;=0A= this.xpath =3D dataSetPath;=0A= this.doc =3D null;=0A= this.dataSetsForDataRefStrings =3D new Array;=0A= this.hasDataRefStrings =3D false;=0A= this.useCache =3D true;=0A= =0A= // Create a loadURL request object to store any load options=0A= // the caller specified. We'll fill in the URL at the last minute=0A= // before we make the actual load request because our URL needs=0A= // to be processed at the last possible minute in case it contains=0A= // data references.=0A= =0A= this.requestInfo =3D new Spry.Utils.loadURL.Request();=0A= this.requestInfo.extractRequestOptions(dataSetOptions, true);=0A= =0A= // If the caller wants to use "POST" to fetch the data, but didn't=0A= // provide the content type, default to x-www-form-urlencoded.=0A= =0A= if (this.requestInfo.method =3D=3D "POST")=0A= {=0A= if (!this.requestInfo.headers)=0A= this.requestInfo.headers =3D {};=0A= if (!this.requestInfo.headers['Content-Type'])=0A= this.requestInfo.headers['Content-Type'] =3D = "application/x-www-form-urlencoded; charset=3DUTF-8";=0A= }=0A= =0A= Spry.Utils.setOptions(this, dataSetOptions, true);=0A= =0A= this.recalculateDataSetDependencies();=0A= =0A= if (this.loadInterval > 0)=0A= this.startLoadInterval(this.loadInterval);=0A= }; // End of Spry.Data.XMLDataSet() constructor.=0A= =0A= Spry.Data.XMLDataSet.prototype =3D new Spry.Data.DataSet();=0A= Spry.Data.XMLDataSet.prototype.constructor =3D Spry.Data.XMLDataSet;=0A= =0A= Spry.Data.XMLDataSet.prototype.recalculateDataSetDependencies =3D = function()=0A= {=0A= this.hasDataRefStrings =3D false;=0A= =0A= if (!this.url)=0A= return;=0A= =0A= // Clear all old callbacks that may have been registered.=0A= =0A= var i =3D 0;=0A= for (i =3D 0; i < this.dataSetsForDataRefStrings.length; i++)=0A= {=0A= var ds =3D this.dataSetsForDataRefStrings[i];=0A= if (ds)=0A= ds.removeObserver(this);=0A= }=0A= =0A= // Now run through the strings that may contain data references and = figure=0A= // out what data sets they require. Note that the data references in = these=0A= // strings must be fully qualified with a data set name. (ex: = {dsDataSetName::columnName})=0A= =0A= this.dataSetsForDataRefStrings =3D new Array();=0A= =0A= var regionStrs =3D [ this.url, this.xpath, this.requestInfo.postData ];=0A= =0A= // If postData exists, and is a string, we want to check it for data = refs.=0A= var postData =3D this.requestInfo.postData;=0A= if (postData && (typeof postData) =3D=3D "string")=0A= regionStrs.push(postData);=0A= =0A= var dsCount =3D 0;=0A= =0A= for (var n =3D 0; n < regionStrs.length; n++)=0A= {=0A= var tokens =3D Spry.Data.Region.getTokensFromStr(regionStrs[n]);=0A= =0A= for (i =3D 0; tokens && i < tokens.length; i++)=0A= {=0A= if (tokens[i].search(/{[^}:]+::[^}]+}/) !=3D -1)=0A= {=0A= var dsName =3D tokens[i].replace(/^\{|::.*\}/g, "");=0A= var ds =3D null;=0A= if (!this.dataSetsForDataRefStrings[dsName])=0A= {=0A= try { ds =3D eval(dsName); } catch (e) { ds =3D null; }=0A= =0A= if (dsName && ds)=0A= {=0A= // The dataSetsForDataRefStrings array serves as both an=0A= // array of data sets and a hash lookup by name.=0A= =0A= this.dataSetsForDataRefStrings[dsName] =3D ds;=0A= this.dataSetsForDataRefStrings[dsCount++] =3D ds;=0A= this.hasDataRefStrings =3D true;=0A= }=0A= }=0A= }=0A= }=0A= }=0A= =0A= // Set up observers on any data sets our URL depends on.=0A= =0A= for (i =3D 0; i < this.dataSetsForDataRefStrings.length; i++)=0A= {=0A= var ds =3D this.dataSetsForDataRefStrings[i];=0A= ds.addObserver(this);=0A= }=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.attemptLoadData =3D function()=0A= {=0A= // We only want to trigger a load when all of our data sets have data!=0A= for (var i =3D 0; i < this.dataSetsForDataRefStrings.length; i++)=0A= {=0A= var ds =3D this.dataSetsForDataRefStrings[i];=0A= if (ds.getLoadDataRequestIsPending() || !ds.getDataWasLoaded())=0A= return;=0A= }=0A= =0A= this.loadData();=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.onCurrentRowChanged =3D function(ds, data)=0A= {=0A= this.attemptLoadData();=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.onPostSort =3D function(ds, data)=0A= {=0A= this.attemptLoadData();=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.onDataChanged =3D function(ds, data)=0A= {=0A= this.attemptLoadData();=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.loadData =3D function()=0A= {=0A= if (!this.url || !this.xpath)=0A= return;=0A= =0A= this.cancelLoadData();=0A= =0A= var url =3D this.url;=0A= var postData =3D this.requestInfo.postData;=0A= =0A= if (this.hasDataRefStrings)=0A= {=0A= var allDataSetsReady =3D true;=0A= =0A= for (var i =3D 0; i < this.dataSetsForDataRefStrings.length; i++)=0A= {=0A= var ds =3D this.dataSetsForDataRefStrings[i];=0A= if (ds.getLoadDataRequestIsPending())=0A= allDataSetsReady =3D false;=0A= else if (!ds.getDataWasLoaded())=0A= {=0A= // Kick off the load of this data set!=0A= ds.loadData();=0A= allDataSetsReady =3D false;=0A= }=0A= }=0A= =0A= // If our data sets aren't ready, just return. We'll=0A= // get called back to load our data when they are all=0A= // done.=0A= =0A= if (!allDataSetsReady)=0A= return;=0A= =0A= url =3D Spry.Data.Region.processDataRefString(null, this.url, = this.dataSetsForDataRefStrings);=0A= if (!url)=0A= return;=0A= =0A= if (postData && (typeof postData) =3D=3D "string")=0A= postData =3D Spry.Data.Region.processDataRefString(null, postData, = this.dataSetsForDataRefStrings);=0A= }=0A= =0A= this.notifyObservers("onPreLoad");=0A= =0A= this.data =3D null;=0A= this.dataWasLoaded =3D false;=0A= this.unfilteredData =3D null;=0A= this.dataHash =3D null;=0A= this.curRowID =3D 0;=0A= =0A= // At this point the url should've been processed if it contained any=0A= // data references. Set the url of the requestInfo structure and pass it=0A= // to LoadManager.loadData().=0A= =0A= var req =3D this.requestInfo.clone();=0A= req.url =3D url;=0A= req.postData =3D postData;=0A= =0A= this.pendingRequest =3D new Object;=0A= this.pendingRequest.data =3D = Spry.Data.XMLDataSet.LoadManager.loadData(req, this, this.useCache);=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.cancelLoadData =3D function()=0A= {=0A= if (this.pendingRequest)=0A= {=0A= = Spry.Data.XMLDataSet.LoadManager.cancelLoadData(this.pendingRequest.data,= this);=0A= this.pendingRequest =3D null;=0A= }=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.getURL =3D function() { return this.url; = };=0A= Spry.Data.XMLDataSet.prototype.setURL =3D function(url, requestOptions)=0A= {=0A= if (this.url =3D=3D url)=0A= return;=0A= this.url =3D url;=0A= =0A= if (requestOptions)=0A= this.requestInfo.extractRequestOptions(requestOptions);=0A= =0A= this.cancelLoadData();=0A= this.recalculateDataSetDependencies();=0A= this.dataWasLoaded =3D false;=0A= };=0A= Spry.Data.XMLDataSet.prototype.getDocument =3D function() { return = this.doc; };=0A= Spry.Data.XMLDataSet.prototype.getXPath =3D function() { return = this.xpath; };=0A= Spry.Data.XMLDataSet.prototype.setXPath =3D function(path)=0A= {=0A= if (this.xpath !=3D path)=0A= {=0A= this.xpath =3D path;=0A= if (this.dataWasLoaded && this.doc)=0A= this.setDataFromDoc(this.doc);=0A= }=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.setDataFromDoc =3D function(doc)=0A= {=0A= this.pendingRequest =3D null;=0A= =0A= var rs =3D null;=0A= =0A= rs =3D Spry.Utils.getRecordSetFromXMLDoc(doc, = Spry.Data.Region.processDataRefString(null, this.xpath, = this.dataSetsForDataRefStrings));=0A= =0A= if (!rs)=0A= {=0A= Spry.Debug.reportError("Spry.Data.XMLDataSet.setDataFromDoc() failed = to create dataSet '" + this.name + "'for '" + this.xpath + "' - " + = this.url + "\n");=0A= return;=0A= }=0A= =0A= this.doc =3D rs.xmlDoc;=0A= this.data =3D rs.data;=0A= this.dataHash =3D rs.dataHash;=0A= this.dataWasLoaded =3D (this.doc !=3D null);=0A= =0A= // If there is a data filter installed, run it.=0A= =0A= if (this.filterDataFunc)=0A= this.filterData(this.filterDataFunc, true);=0A= =0A= // If the distinct flag was set, run through all the records in the = recordset=0A= // and toss out any that are duplicates.=0A= =0A= if (this.distinctOnLoad)=0A= this.distinct();=0A= =0A= // If sortOnLoad was set, sort the data based on the columns=0A= // specified in sortOnLoad.=0A= =0A= if (this.keepSorted && this.getSortColumn())=0A= this.sort(this.lastSortColumns, this.lastSortOrder)=0A= else if (this.sortOnLoad)=0A= this.sort(this.sortOnLoad, this.sortOrderOnLoad);=0A= =0A= // If there is a view filter installed, run it.=0A= =0A= if (this.filterFunc)=0A= this.filter(this.filterFunc, true);=0A= =0A= // The default "current" row is the first row of the data set.=0A= if (this.data && this.data.length > 0)=0A= this.curRowID =3D this.data[0]['ds_RowID'];=0A= else=0A= this.curRowID =3D 0;=0A= =0A= this.notifyObservers("onPostLoad");=0A= this.notifyObservers("onDataChanged");=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.onRequestResponse =3D = function(cachedRequest, req)=0A= {=0A= this.setDataFromDoc(cachedRequest.doc);=0A= };=0A= =0A= Spry.Data.XMLDataSet.prototype.onRequestError =3D = function(cachedRequest, req)=0A= {=0A= this.notifyObservers("onLoadError", req);=0A= // = Spry.Debug.reportError("Spry.Data.XMLDataSet.LoadManager.CachedRequest.lo= adDataCallback(" + req.xhRequest.status + ") failed to load: " + req.url = + "\n");=0A= };=0A= =0A= Spry.Data.XMLDataSet.LoadManager =3D {};=0A= Spry.Data.XMLDataSet.LoadManager.cache =3D [];=0A= =0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest =3D function(reqInfo)=0A= {=0A= Spry.Utils.Notifier.call(this);=0A= =0A= this.reqInfo =3D reqInfo;=0A= this.doc =3D null;=0A= this.timer =3D null;=0A= this.state =3D = Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED;=0A= };=0A= =0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype =3D new = Spry.Utils.Notifier();=0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.constructor =3D = Spry.Data.XMLDataSet.LoadManager.CachedRequest;=0A= =0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED =3D 1;=0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED =3D 2;=0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_FAILED =3D 3;=0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL =3D 4;=0A= =0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.loadDataCallback= =3D function(req)=0A= {=0A= if (req.xhRequest.readyState !=3D 4)=0A= return;=0A= =0A= var xmlDoc =3D req.xhRequest.responseXML;=0A= =0A= if (req.xhRequest.status !=3D 200)=0A= {=0A= if (req.xhRequest.status =3D=3D 0)=0A= {=0A= // The page that is attempting to load data was probably loaded with=0A= // a file:// url. Mozilla based browsers will actually provide the = complete DOM=0A= // tree for the data, but IE provides an empty document node so try = to parse=0A= // the xml text manually to create a dom tree we can use.=0A= =0A= if (req.xhRequest.responseText && (!xmlDoc || !xmlDoc.firstChild))=0A= xmlDoc =3D Spry.Utils.stringToXMLDoc(req.xhRequest.responseText);=0A= }=0A= }=0A= =0A= if (!xmlDoc || !xmlDoc.firstChild || xmlDoc.firstChild.nodeName =3D=3D = "parsererror")=0A= {=0A= this.state =3D = Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_FAILED;=0A= this.notifyObservers("onRequestError", req);=0A= this.observers.length =3D 0; // Clear the observers list.=0A= return;=0A= }=0A= =0A= this.doc =3D xmlDoc;=0A= this.state =3D = Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL;=0A= =0A= // Notify all of the cached request's observers!=0A= this.notifyObservers("onRequestResponse", req);=0A= =0A= // Clear the observers list.=0A= this.observers.length =3D 0;=0A= };=0A= =0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.loadData =3D = function()=0A= {=0A= // IE will synchronously fire our loadDataCallback() during the call=0A= // to an async Spry.Utils.loadURL() if the data for the url is already=0A= // in the browser's local cache. This can wreak havoc with complicated = master/detail=0A= // regions that use data sets that have master/detail relationships = with other=0A= // data sets. Our data set logic already handles async data loading = nicely so we=0A= // use a timer to fire off the async Spry.Utils.loadURL() call to = insure that any=0A= // data loading happens asynchronously after this function is finished.=0A= =0A= var self =3D this;=0A= this.cancelLoadData();=0A= this.doc =3D null;=0A= this.state =3D = Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED;=0A= =0A= var reqInfo =3D this.reqInfo.clone();=0A= reqInfo.successCallback =3D function(req) { self.loadDataCallback(req); = };=0A= reqInfo.errorCallback =3D reqInfo.successCallback;=0A= =0A= this.timer =3D setTimeout(function()=0A= {=0A= self.timer =3D null;=0A= Spry.Utils.loadURL(reqInfo.method, reqInfo.url, reqInfo.async, = reqInfo.successCallback, reqInfo);=0A= }, 0); =0A= };=0A= =0A= Spry.Data.XMLDataSet.LoadManager.CachedRequest.prototype.cancelLoadData = =3D function()=0A= {=0A= if (this.state =3D=3D = Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED)=0A= {=0A= if (this.timer)=0A= {=0A= this.timer.clearTimeout();=0A= this.timer =3D null;=0A= }=0A= =0A= this.doc =3D null;=0A= this.state =3D = Spry.Data.XMLDataSet.LoadManager.CachedRequest.NOT_LOADED;=0A= }=0A= };=0A= =0A= Spry.Data.XMLDataSet.LoadManager.getCacheKey =3D function(reqInfo)=0A= {=0A= return reqInfo.method + "::" + reqInfo.url + "::" + reqInfo.postData + = "::" + reqInfo.username;=0A= };=0A= =0A= Spry.Data.XMLDataSet.LoadManager.loadData =3D function(reqInfo, ds, = useCache)=0A= {=0A= if (!reqInfo)=0A= return null;=0A= =0A= var cacheObj =3D null;=0A= var cacheKey =3D null;=0A= =0A= if (useCache)=0A= {=0A= cacheKey =3D Spry.Data.XMLDataSet.LoadManager.getCacheKey(reqInfo);=0A= cacheObj =3D Spry.Data.XMLDataSet.LoadManager.cache[cacheKey];=0A= }=0A= =0A= if (cacheObj)=0A= {=0A= if (cacheObj.state =3D=3D = Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_REQUESTED)=0A= {=0A= if (ds)=0A= cacheObj.addObserver(ds);=0A= return cacheObj;=0A= }=0A= else if (cacheObj.state =3D=3D = Spry.Data.XMLDataSet.LoadManager.CachedRequest.LOAD_SUCCESSFUL)=0A= {=0A= // Data is already cached so if we have a data set, trigger an async = call=0A= // that tells it to load its data.=0A= if (ds)=0A= setTimeout(function() { ds.setDataFromDoc(cacheObj.doc); }, 0);=0A= return cacheObj;=0A= }=0A= }=0A= =0A= // We're either loading this url for the first time, or an error = occurred when=0A= // we last tried to load it, or the caller requested a forced load.=0A= =0A= if (!cacheObj)=0A= {=0A= cacheObj =3D new = Spry.Data.XMLDataSet.LoadManager.CachedRequest(reqInfo);=0A= if (useCache)=0A= {=0A= Spry.Data.XMLDataSet.LoadManager.cache[cacheKey] =3D cacheObj;=0A= =0A= // Add an observer that will remove the cacheObj from the cache=0A= // if there is a load request failure.=0A= cacheObj.addObserver({ onRequestError: function() { = Spry.Data.XMLDataSet.LoadManager.cache[cacheKey] =3D undefined; }});=0A= }=0A= }=0A= =0A= if (ds)=0A= cacheObj.addObserver(ds);=0A= =0A= cacheObj.loadData();=0A= =0A= return cacheObj;=0A= };=0A= =0A= Spry.Data.XMLDataSet.LoadManager.cancelLoadData =3D function(cacheObj, = ds)=0A= {=0A= if (cacheObj)=0A= {=0A= if (ds)=0A= cacheObj.removeObserver(ds);=0A= else=0A= cacheObj.cancelLoadData();=0A= }=0A= };=0A= =0A= //////////////////////////////////////////////////////////////////////=0A= //=0A= // Spry.Data.Region=0A= //=0A= //////////////////////////////////////////////////////////////////////=0A= =0A= Spry.Data.Region =3D function(regionNode, name, isDetailRegion, data, = dataSets, regionStates, regionStateMap, hasBehaviorAttributes)=0A= {=0A= this.regionNode =3D regionNode;=0A= this.name =3D name;=0A= this.isDetailRegion =3D isDetailRegion;=0A= this.data =3D data;=0A= this.dataSets =3D dataSets;=0A= this.hasBehaviorAttributes =3D hasBehaviorAttributes;=0A= this.tokens =3D null;=0A= this.currentState =3D null;=0A= this.states =3D { ready: true };=0A= this.stateMap =3D {};=0A= =0A= Spry.Utils.setOptions(this.states, regionStates);=0A= Spry.Utils.setOptions(this.stateMap, regionStateMap);=0A= =0A= // Add the region as an observer to the dataSet!=0A= for (var i =3D 0; i < this.dataSets.length; i++)=0A= {=0A= var ds =3D this.dataSets[i];=0A= =0A= try =0A= {=0A= if (ds)=0A= ds.addObserver(this);=0A= }=0A= catch(e) { Spry.Debug.reportError("Failed to add '" + this.name + "' = as a dataSet observer!\n"); }=0A= }=0A= }; // End of Spry.Data.Region() constructor.=0A= =0A= Spry.Data.Region.hiddenRegionClassName =3D "SpryHiddenRegion";=0A= Spry.Data.Region.evenRowClassName =3D "even";=0A= Spry.Data.Region.oddRowClassName =3D "odd";=0A= Spry.Data.Region.notifiers =3D {};=0A= Spry.Data.Region.evalScripts =3D true;=0A= =0A= Spry.Data.Region.addObserver =3D function(regionID, observer)=0A= {=0A= var n =3D Spry.Data.Region.notifiers[regionID];=0A= if (!n)=0A= {=0A= n =3D new Spry.Utils.Notifier();=0A= Spry.Data.Region.notifiers[regionID] =3D n;=0A= }=0A= n.addObserver(observer);=0A= };=0A= =0A= Spry.Data.Region.removeObserver =3D function(regionID, observer)=0A= {=0A= var n =3D Spry.Data.Region.notifiers[regionID];=0A= if (n)=0A= n.removeObserver(observer);=0A= };=0A= =0A= Spry.Data.Region.notifyObservers =3D function(methodName, region, data)=0A= {=0A= var n =3D Spry.Data.Region.notifiers[region.name];=0A= if (n)=0A= {=0A= var dataObj =3D {};=0A= if (data && typeof data =3D=3D "object")=0A= dataObj =3D data;=0A= else=0A= dataObj.data =3D data;=0A= =0A= dataObj.region =3D region;=0A= dataObj.regionID =3D region.name;=0A= dataObj.regionNode =3D region.regionNode;=0A= =0A= n.notifyObservers(methodName, dataObj);=0A= }=0A= };=0A= =0A= Spry.Data.Region.RS_Error =3D 0x01;=0A= Spry.Data.Region.RS_LoadingData =3D 0x02;=0A= Spry.Data.Region.RS_PreUpdate =3D 0x04;=0A= Spry.Data.Region.RS_PostUpdate =3D 0x08;=0A= =0A= Spry.Data.Region.prototype.getState =3D function()=0A= {=0A= return this.currentState;=0A= };=0A= =0A= Spry.Data.Region.prototype.mapState =3D function(stateName, newStateName)=0A= {=0A= this.stateMap[stateName] =3D newStateName;=0A= };=0A= =0A= Spry.Data.Region.prototype.getMappedState =3D function(stateName)=0A= {=0A= var mappedState =3D this.stateMap[stateName];=0A= return mappedState ? mappedState : stateName;=0A= };=0A= =0A= Spry.Data.Region.prototype.setState =3D function(stateName, = suppressNotfications)=0A= {=0A= var stateObj =3D { state: stateName, mappedState: = this.getMappedState(stateName) };=0A= if (!suppressNotfications)=0A= Spry.Data.Region.notifyObservers("onPreStateChange", this, stateObj);=0A= =0A= this.currentState =3D stateObj.mappedState ? stateObj.mappedState : = stateName;=0A= =0A= // If the region has content that is specific to this=0A= // state, regenerate the region so that its markup is updated.=0A= =0A= if (this.states[stateName])=0A= {=0A= if (!suppressNotfications)=0A= Spry.Data.Region.notifyObservers("onPreUpdate", this, { state: = this.currentState });=0A= =0A= // Make the region transform the xml data. The result is=0A= // a string that we need to parse and insert into the document.=0A= var str =3D this.transform();=0A= =0A= // Clear out any previous transformed content.=0A= // this.clearContent();=0A= =0A= if (Spry.Data.Region.debug)=0A= Spry.Debug.trace("
      Generated region markup for '" + this.name + = "':

      " + Spry.Utils.encodeEntities(str));=0A= =0A= // Now insert the new transformed content into the document.=0A= Spry.Utils.setInnerHTML(this.regionNode, str, = !Spry.Data.Region.evalScripts);=0A= =0A= // Now run through the content looking for attributes=0A= // that tell us what behaviors to attach to each element.=0A= if (this.hasBehaviorAttributes)=0A= this.attachBehaviors();=0A= =0A= if (!suppressNotfications)=0A= Spry.Data.Region.notifyObservers("onPostUpdate", this, { state: = this.currentState });=0A= }=0A= =0A= if (!suppressNotfications)=0A= Spry.Data.Region.notifyObservers("onPostStateChange", this, stateObj);=0A= };=0A= =0A= Spry.Data.Region.prototype.getDataSets =3D function()=0A= {=0A= return this.dataSets;=0A= };=0A= =0A= Spry.Data.Region.prototype.addDataSet =3D function(aDataSet)=0A= {=0A= if (!aDataSet)=0A= return;=0A= =0A= if (!this.dataSets)=0A= this.dataSets =3D new Array;=0A= =0A= // Check to see if the data set is already in our list.=0A= =0A= for (var i =3D 0; i < this.dataSets.length; i++)=0A= {=0A= if (this.dataSets[i] =3D=3D aDataSet)=0A= return; // It's already in our list!=0A= }=0A= =0A= this.dataSets.push(aDataSet);=0A= aDataSet.addObserver(this);=0A= };=0A= =0A= Spry.Data.Region.prototype.removeDataSet =3D function(aDataSet)=0A= {=0A= if (!aDataSet || this.dataSets)=0A= return;=0A= =0A= for (var i =3D 0; i < this.dataSets.length; i++)=0A= {=0A= if (this.dataSets[i] =3D=3D aDataSet)=0A= {=0A= this.dataSets.splice(i, 1);=0A= aDataSet.removeObserver(this);=0A= return;=0A= }=0A= }=0A= };=0A= =0A= Spry.Data.Region.prototype.onPreLoad =3D function(dataSet)=0A= {=0A= if (this.currentState !=3D "loading")=0A= this.setState("loading");=0A= };=0A= =0A= Spry.Data.Region.prototype.onLoadError =3D function(dataSet)=0A= {=0A= if (this.currentState !=3D "error")=0A= this.setState("error");=0A= Spry.Data.Region.notifyObservers("onError", this);=0A= };=0A= =0A= Spry.Data.Region.prototype.onCurrentRowChanged =3D function(dataSet, = data)=0A= {=0A= if (this.isDetailRegion)=0A= this.updateContent();=0A= };=0A= =0A= Spry.Data.Region.prototype.onPostSort =3D function(dataSet, data)=0A= {=0A= this.updateContent();=0A= };=0A= =0A= Spry.Data.Region.prototype.onDataChanged =3D function(dataSet, data)=0A= {=0A= this.updateContent();=0A= };=0A= =0A= Spry.Data.Region.enableBehaviorAttributes =3D true;=0A= Spry.Data.Region.behaviorAttrs =3D {};=0A= =0A= Spry.Data.Region.behaviorAttrs["spry:select"] =3D=0A= {=0A= attach: function(rgn, node, value)=0A= {=0A= var selectGroupName =3D null;=0A= try { selectGroupName =3D = node.attributes.getNamedItem("spry:selectgroup").value; } catch (e) {}=0A= if (!selectGroupName)=0A= selectGroupName =3D "default";=0A= =0A= Spry.Utils.addEventListener(node, "click", function(event) { = Spry.Utils.SelectionManager.select(selectGroupName, node, value); }, = false);=0A= =0A= if (node.attributes.getNamedItem("spry:selected"))=0A= Spry.Utils.SelectionManager.select(selectGroupName, node, value);=0A= }=0A= };=0A= =0A= Spry.Data.Region.behaviorAttrs["spry:hover"] =3D=0A= {=0A= attach: function(rgn, node, value)=0A= {=0A= Spry.Utils.addEventListener(node, "mouseover", function(event){ = Spry.Utils.addClassName(node, value); }, false);=0A= Spry.Utils.addEventListener(node, "mouseout", function(event){ = Spry.Utils.removeClassName(node, value); }, false);=0A= }=0A= };=0A= =0A= Spry.Data.Region.setUpRowNumberForEvenOddAttr =3D function(node, attr, = value, rowNumAttrName)=0A= {=0A= // The format for the spry:even and spry:odd attributes are as follows:=0A= //=0A= //
      =0A= //=0A= // The dataSetName is optional, and if not specified, the first data set=0A= // listed for the region is used.=0A= //=0A= // cssEvenClassName and cssOddClassName are required and *must* be = specified. They can be=0A= // any user defined CSS class name.=0A= =0A= if (!value)=0A= {=0A= Spry.Debug.showError("The " + attr + " attribute requires a CSS class = name as its value!");=0A= node.attributes.removeNamedItem(attr);=0A= return;=0A= }=0A= =0A= var dsName =3D "";=0A= var valArr =3D value.split(/\s/);=0A= if (valArr.length > 1)=0A= {=0A= // Extract out the data set name and reset the attribute so=0A= // that it only contains the CSS class name to use.=0A= =0A= dsName =3D valArr[0];=0A= node.setAttribute(attr, valArr[1]);=0A= }=0A= =0A= // Tag the node with an attribute that will allow us to fetch the row=0A= // number used when it is written out during the re-generation process.=0A= =0A= node.setAttribute(rowNumAttrName, "{" + (dsName ? (dsName + "::") : "") = + "ds_RowNumber}");=0A= };=0A= =0A= Spry.Data.Region.behaviorAttrs["spry:even"] =3D=0A= {=0A= setup: function(node, value)=0A= {=0A= Spry.Data.Region.setUpRowNumberForEvenOddAttr(node, "spry:even", = value, "spryevenrownumber");=0A= },=0A= =0A= attach: function(rgn, node, value)=0A= {=0A= if (value)=0A= {=0A= rowNumAttr =3D node.attributes.getNamedItem("spryevenrownumber");=0A= if (rowNumAttr && rowNumAttr.value)=0A= {=0A= var rowNum =3D parseInt(rowNumAttr.value);=0A= if (rowNum % 2)=0A= Spry.Utils.addClassName(node, value);=0A= }=0A= }=0A= node.removeAttribute("spry:even");=0A= node.removeAttribute("spryevenrownumber");=0A= }=0A= };=0A= =0A= Spry.Data.Region.behaviorAttrs["spry:odd"] =3D=0A= {=0A= setup: function(node, value)=0A= {=0A= Spry.Data.Region.setUpRowNumberForEvenOddAttr(node, "spry:odd", value, = "spryoddrownumber");=0A= },=0A= =0A= attach: function(rgn, node, value)=0A= {=0A= if (value)=0A= {=0A= rowNumAttr =3D node.attributes.getNamedItem("spryoddrownumber");=0A= if (rowNumAttr && rowNumAttr.value)=0A= {=0A= var rowNum =3D parseInt(rowNumAttr.value);=0A= if (rowNum % 2 =3D=3D 0)=0A= Spry.Utils.addClassName(node, value);=0A= }=0A= }=0A= node.removeAttribute("spry:odd");=0A= node.removeAttribute("spryoddrownumber");=0A= }=0A= };=0A= =0A= Spry.Data.Region.setRowAttrClickHandler =3D function(node, dsName, = rowAttr, funcName)=0A= {=0A= if (dsName)=0A= {=0A= var ds =3D null;=0A= try { ds =3D Spry.Utils.eval(dsName); } catch(e) { ds =3D null; };=0A= if (ds)=0A= {=0A= rowIDAttr =3D node.attributes.getNamedItem(rowAttr);=0A= if (rowIDAttr)=0A= {=0A= var rowAttrVal =3D rowIDAttr.value;=0A= if (rowAttrVal)=0A= Spry.Utils.addEventListener(node, "click", function(event){ = ds[funcName](rowAttrVal); }, false);=0A= }=0A= }=0A= }=0A= };=0A= =0A= Spry.Data.Region.behaviorAttrs["spry:setrow"] =3D=0A= {=0A= setup: function(node, value)=0A= {=0A= if (!value)=0A= {=0A= Spry.Debug.reportError("The spry:setrow attribute requires a data set = name as its value!");=0A= node.removeAttribute("spry:setrow");=0A= return;=0A= }=0A= =0A= // Tag the node with an attribute that will allow us to fetch the id = of the=0A= // row used when it is written out during the re-generation process.=0A= =0A= node.setAttribute("spryrowid", "{" + value + "::ds_RowID}");=0A= },=0A= =0A= attach: function(rgn, node, value)=0A= {=0A= Spry.Data.Region.setRowAttrClickHandler(node, value, "spryrowid", = "setCurrentRow");=0A= node.removeAttribute("spry:setrow");=0A= node.removeAttribute("spryrowid");=0A= }=0A= };=0A= =0A= Spry.Data.Region.behaviorAttrs["spry:setrownumber"] =3D=0A= {=0A= setup: function(node, value)=0A= {=0A= if (!value)=0A= {=0A= Spry.Debug.reportError("The spry:setrownumber attribute requires a = data set name as its value!");=0A= node.removeAttribute("spry:setrownumber");=0A= return;=0A= }=0A= =0A= // Tag the node with an attribute that will allow us to fetch the row = number=0A= // of the row used when it is written out during the re-generation = process.=0A= =0A= node.setAttribute("spryrownumber", "{" + value + "::ds_RowID}");=0A= },=0A= =0A= attach: function(rgn, node, value)=0A= {=0A= Spry.Data.Region.setRowAttrClickHandler(node, value, "spryrownumber", = "setCurrentRowNumber");=0A= node.removeAttribute("spry:setrownumber");=0A= node.removeAttribute("spryrownumber");=0A= }=0A= };=0A= =0A= Spry.Data.Region.behaviorAttrs["spry:sort"] =3D=0A= {=0A= attach: function(rgn, node, value)=0A= {=0A= if (!value)=0A= return;=0A= =0A= // The format of a spry:sort attribute is as follows:=0A= //=0A= //
      =0A= //=0A= // The dataSetName and sortOrderName are optional, but when specified, = they=0A= // must appear in the order mentioned above. If the dataSetName is not = specified,=0A= // the first data set listed for the region is used. If the = sortOrderName is not=0A= // specified, the sort defaults to "toggle".=0A= //=0A= // The user *must* specify at least one column name.=0A= =0A= var ds =3D rgn.getDataSets()[0];=0A= var sortOrder =3D "toggle";=0A= =0A= var colArray =3D value.split(/\s/);=0A= if (colArray.length > 1)=0A= {=0A= // Check the first string in the attribute to see if a data set was=0A= // specified. If so, make sure we use it for the sort.=0A= =0A= try=0A= {=0A= var specifiedDS =3D eval(colArray[0]);=0A= if (specifiedDS && (typeof specifiedDS) =3D=3D "object")=0A= {=0A= ds =3D specifiedDS;=0A= colArray.shift();=0A= }=0A= =0A= } catch(e) {}=0A= =0A= // Check to see if the last string in the attribute is the name of=0A= // a sort order. If so, use that sort order during the sort.=0A= =0A= if (colArray.length > 1)=0A= {=0A= var str =3D colArray[colArray.length - 1];=0A= if (str =3D=3D "ascending" || str =3D=3D "descending" || str =3D=3D = "toggle")=0A= {=0A= sortOrder =3D str;=0A= colArray.pop();=0A= }=0A= }=0A= }=0A= =0A= // If we have a data set and some column names, add a non-destructive=0A= // onclick handler that will perform a toggle sort on the data set.=0A= =0A= if (ds && colArray.length > 0)=0A= Spry.Utils.addEventListener(node, "click", function(event){ = ds.sort(colArray, sortOrder); }, false);=0A= =0A= node.removeAttribute("spry:sort");=0A= }=0A= };=0A= =0A= Spry.Data.Region.prototype.attachBehaviors =3D function()=0A= {=0A= var rgn =3D this;=0A= Spry.Utils.getNodesByFunc(this.regionNode, function(node)=0A= {=0A= if (!node || node.nodeType !=3D 1 /* Node.ELEMENT_NODE */)=0A= return false;=0A= try=0A= {=0A= var bAttrs =3D Spry.Data.Region.behaviorAttrs;=0A= for (var bAttrName in bAttrs)=0A= {=0A= var attr =3D node.attributes.getNamedItem(bAttrName);=0A= if (attr)=0A= {=0A= var behavior =3D bAttrs[bAttrName];=0A= if (behavior && behavior.attach)=0A= behavior.attach(rgn, node, attr.value);=0A= }=0A= }=0A= } catch(e) {}=0A= =0A= return false;=0A= });=0A= };=0A= =0A= Spry.Data.Region.prototype.updateContent =3D function()=0A= {=0A= var allDataSetsReady =3D true;=0A= =0A= var dsArray =3D this.getDataSets();=0A= =0A= if (!dsArray || dsArray.length < 1)=0A= {=0A= Spry.Debug.reportError("updateContent(): Region '" + this.name + "' = has no data set!\n");=0A= return;=0A= }=0A= =0A= for (var i =3D 0; i < dsArray.length; i++)=0A= {=0A= var ds =3D dsArray[i];=0A= =0A= if (ds)=0A= {=0A= if (ds.getLoadDataRequestIsPending())=0A= allDataSetsReady =3D false;=0A= else if (!ds.getDataWasLoaded())=0A= {=0A= // Kick off the loading of the data if it hasn't happened yet.=0A= ds.loadData();=0A= allDataSetsReady =3D false;=0A= }=0A= }=0A= }=0A= =0A= if (!allDataSetsReady)=0A= {=0A= Spry.Data.Region.notifyObservers("onLoadingData", this);=0A= =0A= // Just return, this method will get called again automatically=0A= // as each data set load completes!=0A= return;=0A= }=0A= =0A= this.setState("ready");=0A= };=0A= =0A= Spry.Data.Region.prototype.clearContent =3D function()=0A= {=0A= this.regionNode.innerHTML =3D "";=0A= };=0A= =0A= Spry.Data.Region.processContentPI =3D function(inStr)=0A= {=0A= var outStr =3D "";=0A= var regexp =3D //mg;=0A= var searchStartIndex =3D 0;=0A= var processingContentTag =3D 0;=0A= =0A= while (inStr.length)=0A= {=0A= var results =3D regexp.exec(inStr);=0A= if (!results || !results[0])=0A= {=0A= outStr +=3D inStr.substr(searchStartIndex, inStr.length - = searchStartIndex);=0A= break;=0A= }=0A= =0A= if (!processingContentTag && results.index !=3D searchStartIndex)=0A= {=0A= // We found a match but it's not at the start of the inStr.=0A= // Create a string token for everything that precedes the match.=0A= outStr +=3D inStr.substr(searchStartIndex, results.index - = searchStartIndex);=0A= }=0A= =0A= if (results[0].search(/<\//) !=3D -1)=0A= {=0A= --processingContentTag;=0A= if (processingContentTag)=0A= Spry.Debug.reportError("Nested spry:content regions are not = allowed!\n");=0A= }=0A= else=0A= {=0A= ++processingContentTag;=0A= var dataRefStr =3D results[0].replace(/.*\bdataref=3D"/, "");=0A= outStr +=3D dataRefStr.replace(/".*$/, "");=0A= }=0A= =0A= searchStartIndex =3D regexp.lastIndex;=0A= }=0A= =0A= return outStr;=0A= }=0A= =0A= Spry.Data.Region.prototype.tokenizeData =3D function(dataStr)=0A= {=0A= // If there is no data, there's nothing to do.=0A= if (!dataStr)=0A= return null;=0A= =0A= var rootToken =3D new = Spry.Data.Region.Token(Spry.Data.Region.Token.LIST_TOKEN, null, null, = null);=0A= var tokenStack =3D new Array;=0A= var parseStr =3D Spry.Data.Region.processContentPI(dataStr);=0A= =0A= tokenStack.push(rootToken);=0A= =0A= // Create a regular expression that will match one of the following:=0A= //=0A= // =0A= // =0A= // {valueReference}=0A= var regexp =3D = /((){0,1})|((\{|%7[bB])[^\}\s%]+(\= }|%7[dD]))/mg;=0A= var searchStartIndex =3D 0;=0A= =0A= while(parseStr.length)=0A= {=0A= var results =3D regexp.exec(parseStr);=0A= var token =3D null;=0A= =0A= if (!results || !results[0])=0A= {=0A= // If we get here, the rest of the parseStr should be=0A= // just a plain string. Create a token for it and then=0A= // break out of the list.=0A= var str =3D parseStr.substr(searchStartIndex, parseStr.length - = searchStartIndex);=0A= token =3D new = Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN, null, str, = str);=0A= tokenStack[tokenStack.length - 1].addChild(token);=0A= break;=0A= }=0A= =0A= if (results.index !=3D searchStartIndex)=0A= {=0A= // We found a match but it's not at the start of the parseStr.=0A= // Create a string token for everything that precedes the match.=0A= var str =3D parseStr.substr(searchStartIndex, results.index - = searchStartIndex);=0A= token =3D new = Spry.Data.Region.Token(Spry.Data.Region.Token.STRING_TOKEN, null, str, = str);=0A= tokenStack[tokenStack.length - 1].addChild(token);=0A= }=0A= =0A= // We found a string that needs to be turned into a token. Create a = token=0A= // for it and then update parseStr for the next iteration.=0A= if (results[0].search(/^({|%7[bB])/) !=3D -1 /* results[0].charAt(0) = =3D=3D '{' */)=0A= {=0A= var valueName =3D results[0];=0A= var regionStr =3D results[0];=0A= =0A= // Strip off brace and url encode brace chars inside the valueName.=0A= =0A= valueName =3D valueName.replace(/^({|%7[bB])/, "");=0A= valueName =3D valueName.replace(/(}|%7[dD])$/, "");=0A= =0A= // Check to see if our value begins with the name of a data set.=0A= // For example: {dataSet:tokenValue}. If it is, we need to save=0A= // the data set name so we know which data set to use to get the=0A= // value for the token during the region transform.=0A= =0A= var dataSetName =3D null;=0A= var splitArray =3D valueName.split(/::/);=0A= =0A= if (splitArray.length > 1)=0A= {=0A= dataSetName =3D splitArray[0];=0A= valueName =3D splitArray[1];=0A= }=0A= =0A= // Convert any url encoded braces to regular brace chars.=0A= =0A= regionStr =3D regionStr.replace(/^%7[bB]/, "{");=0A= regionStr =3D regionStr.replace(/%7[dD]$/, "}");=0A= =0A= // Now create a token for the placeholder.=0A= =0A= token =3D new = Spry.Data.Region.Token(Spry.Data.Region.Token.VALUE_TOKEN, dataSetName, = valueName, new String(regionStr));=0A= tokenStack[tokenStack.length - 1].addChild(token);=0A= }=0A= else if (results[0].charAt(0) =3D=3D '<')=0A= {=0A= // Extract out the name of the processing instruction.=0A= var piName =3D results[0].replace(/^(){0,1}|\s.*$/, "");=0A= =0A= if (results[0].search(/<\//) !=3D -1 /* results[0].charAt(1) =3D=3D = '/' */)=0A= {=0A= // We found a processing instruction close tag. Pop the top of the=0A= // token stack!=0A= //=0A= // XXX: We need to make sure that the close tag name matches the one=0A= // on the top of the token stack!=0A= if (tokenStack[tokenStack.length - 1].tokenType !=3D = Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN)=0A= {=0A= Spry.Debug.reportError("Invalid processing instruction close tag: " = + piName + " -- " + results[0] + "\n");=0A= return null;=0A= }=0A= =0A= tokenStack.pop();=0A= }=0A= else=0A= {=0A= // Create the processing instruction token, add it as a child of the = token=0A= // at the top of the token stack, and then push it on the stack so = that it=0A= // becomes the parent of any tokens between it and its close tag.=0A= =0A= var piDesc =3D Spry.Data.Region.PI.instructions[piName];=0A= =0A= if (piDesc)=0A= {=0A= var dataSet =3D null;=0A= =0A= var selectedDataSetName =3D "";=0A= if (results[0].search(/^.*\bselect=3D\"/) !=3D -1)=0A= {=0A= selectedDataSetName =3D results[0].replace(/^.*\bselect=3D\"/, "");=0A= selectedDataSetName =3D selectedDataSetName.replace(/".*$/, "");=0A= =0A= if (selectedDataSetName)=0A= {=0A= try=0A= {=0A= dataSet =3D eval(selectedDataSetName);=0A= }=0A= catch (e)=0A= {=0A= Spry.Debug.reportError("Caught exception in tokenizeData() while = trying to retrieve data set (" + selectedDataSetName + "): " + e + "\n");=0A= dataSet =3D null;=0A= selectedDataSetName =3D "";=0A= }=0A= }=0A= }=0A= =0A= // Check if the repeat has a test attribute.=0A= var jsExpr =3D null;=0A= if (results[0].search(/^.*\btest=3D\"/) !=3D -1)=0A= {=0A= jsExpr =3D results[0].replace(/^.*\btest=3D\"/, "");=0A= jsExpr =3D jsExpr.replace(/".*$/, "");=0A= jsExpr =3D Spry.Utils.decodeEntities(jsExpr);=0A= }=0A= =0A= // Check if the instruction has a state name specified.=0A= var regionState =3D null;=0A= if (results[0].search(/^.*\bname=3D\"/) !=3D -1)=0A= {=0A= regionState =3D results[0].replace(/^.*\bname=3D\"/, "");=0A= regionState =3D regionState.replace(/".*$/, "");=0A= regionState =3D Spry.Utils.decodeEntities(regionState);=0A= }=0A= =0A= var piData =3D new Spry.Data.Region.Token.PIData(piName, = selectedDataSetName, jsExpr, regionState);=0A= =0A= token =3D new = Spry.Data.Region.Token(Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKE= N, dataSet, piData, new String(results[0]));=0A= =0A= tokenStack[tokenStack.length - 1].addChild(token);=0A= tokenStack.push(token);=0A= }=0A= else=0A= {=0A= Spry.Debug.reportError("Unsupported region processing instruction: = " + results[0] + "\n");=0A= return null;=0A= }=0A= }=0A= }=0A= else=0A= {=0A= Spry.Debug.reportError("Invalid region token: " + results[0] + "\n");=0A= return null;=0A= }=0A= =0A= searchStartIndex =3D regexp.lastIndex;=0A= }=0A= =0A= return rootToken;=0A= };=0A= =0A= Spry.Data.Region.prototype.processTokenChildren =3D function(token, = processContext)=0A= {=0A= // The use of an array to gather the strings returned from processing=0A= // the child tokens is actually a performance enhancement for IE.=0A= // The original code:=0A= //=0A= // for (var i =3D 0; i < token.children.length; i++)=0A= // outputStr +=3D this.processTokens(token.children[i], = processContext);=0A= //=0A= // seemed to cause an n-square problem in IE. Using an array with=0A= // a final join reduced one of our test cases (SelectExample.html) from = over=0A= // a minute to about 15 seconds.=0A= =0A= var strArr =3D [ "" ];=0A= var len =3D token.children.length;=0A= var children =3D token.children;=0A= =0A= for (var i =3D 0; i < len; i++)=0A= strArr.push(this.processTokens(children[i], processContext));=0A= =0A= return strArr.join("");=0A= };=0A= =0A= Spry.Data.Region.prototype.processTokens =3D function(token, = processContext)=0A= {=0A= if (!processContext)=0A= {=0A= processContext =3D new Spry.Data.Region.ProcessingContext(this);=0A= if (!processContext)=0A= return "";=0A= }=0A= =0A= var outputStr =3D "";=0A= var i =3D 0;=0A= =0A= switch(token.tokenType)=0A= {=0A= case Spry.Data.Region.Token.LIST_TOKEN:=0A= outputStr +=3D this.processTokenChildren(token, processContext);=0A= break;=0A= case Spry.Data.Region.Token.STRING_TOKEN:=0A= outputStr +=3D token.data;=0A= break;=0A= case Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN:=0A= if (token.data.name =3D=3D "spry:repeat")=0A= {=0A= var dataSet =3D null;=0A= =0A= if (token.dataSet)=0A= dataSet =3D token.dataSet;=0A= else=0A= dataSet =3D this.dataSets[0];=0A= =0A= if (dataSet)=0A= {=0A= var dsContext =3D processContext.getDataSetContext(dataSet);=0A= if (!dsContext)=0A= {=0A= Spry.Debug.reportError("processTokens() failed to get a data set = context!\n");=0A= break;=0A= }=0A= =0A= var numRows =3D dsContext.getNumRows();=0A= var dataSetRows =3D dataSet.getData();=0A= dsContext.pushState();=0A= =0A= for (i =3D 0; i < numRows; i++)=0A= {=0A= dsContext.setRowIndex(i);=0A= var testVal =3D true;=0A= if (token.data.jsExpr)=0A= {=0A= var jsExpr =3D = Spry.Data.Region.processDataRefString(processContext, token.data.jsExpr, = null, true);=0A= try { testVal =3D Spry.Utils.eval(jsExpr); }=0A= catch(e)=0A= {=0A= Spry.Debug.trace("Caught exception in = Spry.Data.Region.prototype.processTokens while evaluating: " + jsExpr + = "\n Exception:" + e + "\n");=0A= testVal =3D true;=0A= }=0A= }=0A= =0A= if (testVal)=0A= outputStr +=3D this.processTokenChildren(token, processContext);=0A= }=0A= =0A= dsContext.popState();=0A= }=0A= }=0A= else if (token.data.name =3D=3D "spry:if")=0A= {=0A= var testVal =3D true;=0A= =0A= if (token.data.jsExpr)=0A= {=0A= var jsExpr =3D = Spry.Data.Region.processDataRefString(processContext, token.data.jsExpr, = null, true);=0A= =0A= try { testVal =3D Spry.Utils.eval(jsExpr); }=0A= catch(e)=0A= {=0A= Spry.Debug.trace("Caught exception in = Spry.Data.Region.prototype.processTokens while evaluating: " + jsExpr + = "\n Exception:" + e + "\n");=0A= testVal =3D true;=0A= }=0A= }=0A= =0A= if (testVal)=0A= outputStr +=3D this.processTokenChildren(token, processContext);=0A= }=0A= else if (token.data.name =3D=3D "spry:choose")=0A= {=0A= var defaultChild =3D null;=0A= var childToProcess =3D null;=0A= var testVal =3D false;=0A= var j =3D 0;=0A= =0A= // All of the children of the spry:choose token should be of the = type spry:when or spry:default.=0A= // Run through all of the spry:when children and see if any of their = test expressions return true.=0A= // If one does, then process its children tokens. If none of the = test expressions return true,=0A= // process the spry:default token's children, if it exists.=0A= =0A= for (j =3D 0; j < token.children.length; j++)=0A= {=0A= var child =3D token.children[j];=0A= if (child.tokenType =3D=3D = Spry.Data.Region.Token.PROCESSING_INSTRUCTION_TOKEN)=0A= {=0A= if (child.data.name =3D=3D "spry:when")=0A= {=0A= if (child.data.jsExpr)=0A= {=0A= var jsExpr =3D = Spry.Data.Region.processDataRefString(processContext, child.data.jsExpr, = null, true);=0A= try { testVal =3D Spry.Utils.eval(jsExpr); }=0A= catch(e)=0A= {=0A= Spry.Debug.trace("Caught exception in = Spry.Data.Region.prototype.processTokens while evaluating: " + jsExpr + = "\n Exception:" + e + "\n");=0A= testVal =3D false;=0A= }=0A= =0A= if (testVal)=0A= {=0A= childToProcess =3D child;=0A= break;=0A= }=0A= }=0A= }=0A= else if (child.data.name =3D=3D "spry:default")=0A= defaultChild =3D child;=0A= }=0A= }=0A= =0A= // If we didn't find a match, use the token for the default case.=0A= =0A= if (!childToProcess && defaultChild)=0A= childToProcess =3D defaultChild;=0A= =0A= if (childToProcess)=0A= outputStr +=3D this.processTokenChildren(childToProcess, = processContext);=0A= }=0A= else if (token.data.name =3D=3D "spry:state")=0A= {=0A= var testVal =3D true;=0A= =0A= if (!token.data.regionState || token.data.regionState =3D=3D = this.currentState)=0A= outputStr +=3D this.processTokenChildren(token, processContext);=0A= }=0A= else=0A= {=0A= Spry.Debug.reportError("processTokens(): Unknown processing = instruction: " + token.data.name + "\n");=0A= return "";=0A= }=0A= break;=0A= case Spry.Data.Region.Token.VALUE_TOKEN:=0A= =0A= var dataSet =3D token.dataSet;=0A= if (!dataSet && this.dataSets && this.dataSets.length > 0 && = this.dataSets[0])=0A= {=0A= // No dataSet was specified by the token, so use whatever the first=0A= // data set specified in the region.=0A= =0A= dataSet =3D this.dataSets[0];=0A= }=0A= if (!dataSet)=0A= {=0A= Spry.Debug.reportError("processTokens(): Value reference has no data = set specified: " + token.regionStr + "\n");=0A= return "";=0A= }=0A= =0A= var dsContext =3D processContext.getDataSetContext(dataSet);=0A= if (!dsContext)=0A= {=0A= Spry.Debug.reportError("processTokens: Failed to get a data set = context!\n");=0A= return "";=0A= }=0A= =0A= var ds =3D dsContext.getDataSet();=0A= =0A= if (token.data =3D=3D "ds_RowNumber")=0A= outputStr +=3D dsContext.getRowIndex();=0A= else if (token.data =3D=3D "ds_RowNumberPlus1")=0A= outputStr +=3D (dsContext.getRowIndex() + 1);=0A= else if (token.data =3D=3D "ds_RowCount")=0A= outputStr +=3D dsContext.getNumRows();=0A= else if (token.data =3D=3D "ds_UnfilteredRowCount")=0A= outputStr +=3D dsContext.getNumRows(true);=0A= else if (token.data =3D=3D "ds_CurrentRowNumber")=0A= outputStr +=3D ds.getRowNumber(ds.getCurrentRow());=0A= else if (token.data =3D=3D "ds_CurrentRowID")=0A= outputStr +=3D ds.curRowID;=0A= else if (token.data =3D=3D "ds_EvenOddRow")=0A= outputStr +=3D (dsContext.getRowIndex() % 2) ? = Spry.Data.Region.evenRowClassName : Spry.Data.Region.oddRowClassName;=0A= else if (token.data =3D=3D "ds_SortOrder")=0A= outputStr +=3D ds.getSortOrder();=0A= else if (token.data =3D=3D "ds_SortColumn")=0A= outputStr +=3D ds.getSortColumn();=0A= else=0A= {=0A= var curDataSetRow =3D dsContext.getCurrentRow();=0A= if (curDataSetRow)=0A= outputStr +=3D curDataSetRow[token.data];=0A= }=0A= break;=0A= default:=0A= Spry.Debug.reportError("processTokens(): Invalid token type: " + = token.regionStr + "\n");=0A= break;=0A= }=0A= =0A= return outputStr;=0A= };=0A= =0A= Spry.Data.Region.prototype.transform =3D function()=0A= {=0A= if (this.data && !this.tokens)=0A= this.tokens =3D this.tokenizeData(this.data);=0A= =0A= if (!this.tokens)=0A= return "";=0A= =0A= return this.processTokens(this.tokens, null);=0A= };=0A= =0A= Spry.Data.Region.PI =3D {};=0A= Spry.Data.Region.PI.instructions =3D {};=0A= =0A= Spry.Data.Region.PI.buildOpenTagForValueAttr =3D function(ele, piName, = attrName)=0A= {=0A= if (!ele || !piName)=0A= return "";=0A= =0A= var jsExpr =3D "";=0A= =0A= try=0A= {=0A= var testAttr =3D ele.attributes.getNamedItem(piName);=0A= if (testAttr && testAttr.value)=0A= jsExpr =3D Spry.Utils.encodeEntities(testAttr.value);=0A= }=0A= catch (e) { jsExpr =3D ""; }=0A= =0A= if (!jsExpr)=0A= {=0A= Spry.Debug.reportError(piName + " attribute requires a JavaScript = expression that returns true or false!\n");=0A= return "";=0A= }=0A= =0A= return "<" + Spry.Data.Region.PI.instructions[piName].tagName + " " + = attrName +"=3D\"" + jsExpr + "\">";=0A= };=0A= =0A= Spry.Data.Region.PI.buildOpenTagForTest =3D function(ele, piName)=0A= {=0A= return Spry.Data.Region.PI.buildOpenTagForValueAttr(ele, piName, = "test");=0A= };=0A= =0A= Spry.Data.Region.PI.buildOpenTagForState =3D function(ele, piName)=0A= {=0A= return Spry.Data.Region.PI.buildOpenTagForValueAttr(ele, piName, = "name");=0A= };=0A= =0A= Spry.Data.Region.PI.buildOpenTagForRepeat =3D function(ele, piName)=0A= {=0A= if (!ele || !piName)=0A= return "";=0A= =0A= var selectAttrStr =3D "";=0A= =0A= try=0A= {=0A= var selectAttr =3D ele.attributes.getNamedItem(piName);=0A= if (selectAttr && selectAttr.value)=0A= {=0A= selectAttrStr =3D selectAttr.value;=0A= selectAttrStr =3D selectAttrStr.replace(/\s/g, "");=0A= }=0A= }=0A= catch (e) { selectAttrStr =3D ""; }=0A= =0A= if (!selectAttrStr)=0A= {=0A= Spry.Debug.reportError(piName + " attribute requires a data set = name!\n");=0A= return "";=0A= }=0A= =0A= var testAttrStr =3D "";=0A= =0A= try=0A= {=0A= var testAttr =3D ele.attributes.getNamedItem("spry:test");=0A= if (testAttr)=0A= {=0A= if (testAttr.value)=0A= testAttrStr =3D " test=3D\"" + = Spry.Utils.encodeEntities(testAttr.value) + "\"";=0A= ele.attributes.removeNamedItem(testAttr.nodeName);=0A= }=0A= }=0A= catch (e) { testAttrStr =3D ""; }=0A= =0A= return "<" + Spry.Data.Region.PI.instructions[piName].tagName + " = select=3D\"" + selectAttrStr + "\"" + testAttrStr + ">";=0A= };=0A= =0A= Spry.Data.Region.PI.buildOpenTagForContent =3D function(ele, piName)=0A= {=0A= if (!ele || !piName)=0A= return "";=0A= =0A= var dataRefStr =3D "";=0A= =0A= try=0A= {=0A= var contentAttr =3D ele.attributes.getNamedItem(piName);=0A= if (contentAttr && contentAttr.value)=0A= dataRefStr =3D Spry.Utils.encodeEntities(contentAttr.value);=0A= }=0A= catch (e) { dataRefStr =3D ""; }=0A= =0A= if (!dataRefStr)=0A= {=0A= Spry.Debug.reportError(piName + " attribute requires a data = reference!\n");=0A= return "";=0A= }=0A= =0A= return "<" + Spry.Data.Region.PI.instructions[piName].tagName + " = dataref=3D\"" + dataRefStr + "\">";=0A= };=0A= =0A= Spry.Data.Region.PI.buildOpenTag =3D function(ele, piName)=0A= {=0A= return "<" + Spry.Data.Region.PI.instructions[piName].tagName + ">";=0A= };=0A= =0A= Spry.Data.Region.PI.buildCloseTag =3D function(ele, piName)=0A= {=0A= return "";=0A= };=0A= =0A= Spry.Data.Region.PI.instructions["spry:state"] =3D { tagName: = "spry:state", childrenOnly: false, getOpenTag: = Spry.Data.Region.PI.buildOpenTagForState, getCloseTag: = Spry.Data.Region.PI.buildCloseTag };=0A= Spry.Data.Region.PI.instructions["spry:if"] =3D { tagName: "spry:if", = childrenOnly: false, getOpenTag: = Spry.Data.Region.PI.buildOpenTagForTest, getCloseTag: = Spry.Data.Region.PI.buildCloseTag };=0A= Spry.Data.Region.PI.instructions["spry:repeat"] =3D { tagName: = "spry:repeat", childrenOnly: false, getOpenTag: = Spry.Data.Region.PI.buildOpenTagForRepeat, getCloseTag: = Spry.Data.Region.PI.buildCloseTag };=0A= Spry.Data.Region.PI.instructions["spry:repeatchildren"] =3D { tagName: = "spry:repeat", childrenOnly: true, getOpenTag: = Spry.Data.Region.PI.buildOpenTagForRepeat, getCloseTag: = Spry.Data.Region.PI.buildCloseTag };=0A= Spry.Data.Region.PI.instructions["spry:choose"] =3D { tagName: = "spry:choose", childrenOnly: true, getOpenTag: = Spry.Data.Region.PI.buildOpenTag, getCloseTag: = Spry.Data.Region.PI.buildCloseTag };=0A= Spry.Data.Region.PI.instructions["spry:when"] =3D { tagName: = "spry:when", childrenOnly: false, getOpenTag: = Spry.Data.Region.PI.buildOpenTagForTest, getCloseTag: = Spry.Data.Region.PI.buildCloseTag };=0A= Spry.Data.Region.PI.instructions["spry:default"] =3D { tagName: = "spry:default", childrenOnly: false, getOpenTag: = Spry.Data.Region.PI.buildOpenTag, getCloseTag: = Spry.Data.Region.PI.buildCloseTag };=0A= Spry.Data.Region.PI.instructions["spry:content"] =3D { tagName: = "spry:content", childrenOnly: true, getOpenTag: = Spry.Data.Region.PI.buildOpenTagForContent, getCloseTag: = Spry.Data.Region.PI.buildCloseTag };=0A= =0A= Spry.Data.Region.PI.orderedInstructions =3D [ "spry:state", "spry:if", = "spry:repeat", "spry:repeatchildren", "spry:choose", "spry:when", = "spry:default", "spry:content" ];=0A= =0A= Spry.Data.Region.getTokensFromStr =3D function(str)=0A= {=0A= // XXX: This will need to be modified if we support=0A= // tokens that use javascript between the braces!=0A= if (!str)=0A= return null;=0A= return str.match(/{[^}]+}/g);=0A= };=0A= =0A= Spry.Data.Region.processDataRefString =3D function(processingContext, = regionStr, dataSetsToUse, isJSExpr)=0A= {=0A= if (!regionStr)=0A= return "";=0A= =0A= if (!processingContext && !dataSetsToUse)=0A= return regionStr;=0A= =0A= var resultStr =3D "";=0A= var re =3D new RegExp("\\{([^\\}:]+::)?[^\\}]+\\}", "g");=0A= var startSearchIndex =3D 0;=0A= =0A= while (startSearchIndex < regionStr.length)=0A= {=0A= var reArray =3D re.exec(regionStr);=0A= if (!reArray || !reArray[0])=0A= {=0A= resultStr +=3D regionStr.substr(startSearchIndex, regionStr.length - = startSearchIndex);=0A= return resultStr;=0A= }=0A= =0A= if (reArray.index !=3D startSearchIndex)=0A= resultStr +=3D regionStr.substr(startSearchIndex, reArray.index - = startSearchIndex);=0A= =0A= var dsName =3D "";=0A= if (reArray[0].search(/^\{[^}:]+::/) !=3D -1)=0A= dsName =3D reArray[0].replace(/^\{|::.*/g, "");=0A= =0A= var fieldName =3D reArray[0].replace(/^\{|.*::|\}/g, "");=0A= var row =3D null;=0A= =0A= if (processingContext)=0A= {=0A= var dsContext =3D processingContext.getDataSetContext(dsName);=0A= =0A= if (fieldName =3D=3D "ds_RowNumber")=0A= {=0A= resultStr +=3D dsContext.getRowIndex();=0A= row =3D null;=0A= }=0A= else if (fieldName =3D=3D "ds_RowNumberPlus1")=0A= {=0A= resultStr +=3D (dsContext.getRowIndex() + 1);=0A= row =3D null;=0A= }=0A= else if (fieldName =3D=3D "ds_RowCount")=0A= {=0A= resultStr +=3D dsContext.getNumRows();=0A= row =3D null;=0A= }=0A= else if (fieldName =3D=3D "ds_UnfilteredRowCount")=0A= {=0A= resultStr +=3D dsContext.getNumRows(true);=0A= row =3D null;=0A= }=0A= else if (fieldName =3D=3D "ds_CurrentRowNumber")=0A= {=0A= var ds =3D dsContext.getDataSet();=0A= resultStr +=3D ds.getRowNumber(ds.getCurrentRow());=0A= row =3D null;=0A= }=0A= else if (f