STLExtract 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1967) hide show
  1. data/.gitignore +14 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE.txt +22 -0
  4. data/README.md +66 -0
  5. data/Rakefile +2 -0
  6. data/STLExtract-0.0.1.gem +0 -0
  7. data/STLExtract.gemspec +23 -0
  8. data/Slic3r/Linux/bin/slic3r +0 -0
  9. data/Slic3r/Linux/dll/libGLU.so +1 -0
  10. data/Slic3r/Linux/dll/libGLU.so.1 +1 -0
  11. data/Slic3r/Linux/dll/libGLU.so.1.3.08004 +0 -0
  12. data/Slic3r/Linux/dll/libperl.so +0 -0
  13. data/Slic3r/Linux/dll/libwx_baseu-2.9.so +1 -0
  14. data/Slic3r/Linux/dll/libwx_baseu-2.9.so.3 +1 -0
  15. data/Slic3r/Linux/dll/libwx_baseu-2.9.so.3.0.0 +0 -0
  16. data/Slic3r/Linux/dll/libwx_baseu_net-2.9.so +1 -0
  17. data/Slic3r/Linux/dll/libwx_baseu_net-2.9.so.3 +1 -0
  18. data/Slic3r/Linux/dll/libwx_baseu_net-2.9.so.3.0.0 +0 -0
  19. data/Slic3r/Linux/dll/libwx_gtk2u_adv-2.9.so +1 -0
  20. data/Slic3r/Linux/dll/libwx_gtk2u_adv-2.9.so.3 +1 -0
  21. data/Slic3r/Linux/dll/libwx_gtk2u_adv-2.9.so.3.0.0 +0 -0
  22. data/Slic3r/Linux/dll/libwx_gtk2u_core-2.9.so +1 -0
  23. data/Slic3r/Linux/dll/libwx_gtk2u_core-2.9.so.3 +1 -0
  24. data/Slic3r/Linux/dll/libwx_gtk2u_core-2.9.so.3.0.0 +0 -0
  25. data/Slic3r/Linux/dll/libwx_gtk2u_gl-2.9.so +1 -0
  26. data/Slic3r/Linux/dll/libwx_gtk2u_gl-2.9.so.3 +1 -0
  27. data/Slic3r/Linux/dll/libwx_gtk2u_gl-2.9.so.3.0.0 +0 -0
  28. data/Slic3r/Linux/dll/libwx_gtk2u_html-2.9.so +1 -0
  29. data/Slic3r/Linux/dll/libwx_gtk2u_html-2.9.so.3 +1 -0
  30. data/Slic3r/Linux/dll/libwx_gtk2u_html-2.9.so.3.0.0 +0 -0
  31. data/Slic3r/Linux/lib/std/Authen/SASL.pm +130 -0
  32. data/Slic3r/Linux/lib/std/Authen/SASL/CRAM_MD5.pm +18 -0
  33. data/Slic3r/Linux/lib/std/Authen/SASL/EXTERNAL.pm +18 -0
  34. data/Slic3r/Linux/lib/std/Authen/SASL/Perl.pm +344 -0
  35. data/Slic3r/Linux/lib/std/Authen/SASL/Perl/ANONYMOUS.pm +93 -0
  36. data/Slic3r/Linux/lib/std/Authen/SASL/Perl/CRAM_MD5.pm +105 -0
  37. data/Slic3r/Linux/lib/std/Authen/SASL/Perl/DIGEST_MD5.pm +877 -0
  38. data/Slic3r/Linux/lib/std/Authen/SASL/Perl/EXTERNAL.pm +97 -0
  39. data/Slic3r/Linux/lib/std/Authen/SASL/Perl/GSSAPI.pm +375 -0
  40. data/Slic3r/Linux/lib/std/Authen/SASL/Perl/LOGIN.pm +216 -0
  41. data/Slic3r/Linux/lib/std/Authen/SASL/Perl/PLAIN.pm +182 -0
  42. data/Slic3r/Linux/lib/std/B.pm +1202 -0
  43. data/Slic3r/Linux/lib/std/B/Deparse.pm +4900 -0
  44. data/Slic3r/Linux/lib/std/CPAN/Config.pm +55 -0
  45. data/Slic3r/Linux/lib/std/Cava/Global.pm +20 -0
  46. data/Slic3r/Linux/lib/std/Cava/Project.pm +19 -0
  47. data/Slic3r/Linux/lib/std/Class/Accessor.pm +744 -0
  48. data/Slic3r/Linux/lib/std/Class/Method/Modifiers.pm +481 -0
  49. data/Slic3r/Linux/lib/std/Class/Struct.pm +636 -0
  50. data/Slic3r/Linux/lib/std/Class/XSAccessor.pm +326 -0
  51. data/Slic3r/Linux/lib/std/Class/XSAccessor/Heavy.pm +76 -0
  52. data/Slic3r/Linux/lib/std/Compress/Raw/Bzip2.pm +361 -0
  53. data/Slic3r/Linux/lib/std/Compress/Raw/Zlib.pm +1429 -0
  54. data/Slic3r/Linux/lib/std/Config.pm +110 -0
  55. data/Slic3r/Linux/lib/std/Config_git.pl +12 -0
  56. data/Slic3r/Linux/lib/std/Config_heavy.pl +1355 -0
  57. data/Slic3r/Linux/lib/std/Crypt/CBC.pm +1050 -0
  58. data/Slic3r/Linux/lib/std/Crypt/SSLeay.pm +457 -0
  59. data/Slic3r/Linux/lib/std/Crypt/SSLeay/CTX.pm +4 -0
  60. data/Slic3r/Linux/lib/std/Crypt/SSLeay/Conn.pm +4 -0
  61. data/Slic3r/Linux/lib/std/Crypt/SSLeay/Err.pm +4 -0
  62. data/Slic3r/Linux/lib/std/Crypt/SSLeay/MainContext.pm +42 -0
  63. data/Slic3r/Linux/lib/std/Crypt/SSLeay/X509.pm +26 -0
  64. data/Slic3r/Linux/lib/std/Cwd.pm +855 -0
  65. data/Slic3r/Linux/lib/std/Data/Dumper.pm +1306 -0
  66. data/Slic3r/Linux/lib/std/Data/UUID.pm +204 -0
  67. data/Slic3r/Linux/lib/std/Devel/GlobalDestruction.pm +110 -0
  68. data/Slic3r/Linux/lib/std/Digest/HMAC.pm +120 -0
  69. data/Slic3r/Linux/lib/std/Digest/HMAC_MD5.pm +71 -0
  70. data/Slic3r/Linux/lib/std/Digest/MD5.pm +376 -0
  71. data/Slic3r/Linux/lib/std/Digest/SHA.pm +701 -0
  72. data/Slic3r/Linux/lib/std/Digest/base.pm +100 -0
  73. data/Slic3r/Linux/lib/std/Encode.pm +977 -0
  74. data/Slic3r/Linux/lib/std/Encode/Alias.pm +384 -0
  75. data/Slic3r/Linux/lib/std/Encode/Byte.pm +120 -0
  76. data/Slic3r/Linux/lib/std/Encode/CJKConstants.pm +66 -0
  77. data/Slic3r/Linux/lib/std/Encode/CN.pm +74 -0
  78. data/Slic3r/Linux/lib/std/Encode/CN/HZ.pm +198 -0
  79. data/Slic3r/Linux/lib/std/Encode/Config.pm +170 -0
  80. data/Slic3r/Linux/lib/std/Encode/EBCDIC.pm +45 -0
  81. data/Slic3r/Linux/lib/std/Encode/Encoder.pm +253 -0
  82. data/Slic3r/Linux/lib/std/Encode/Encoding.pm +360 -0
  83. data/Slic3r/Linux/lib/std/Encode/GSM0338.pm +292 -0
  84. data/Slic3r/Linux/lib/std/Encode/Guess.pm +355 -0
  85. data/Slic3r/Linux/lib/std/Encode/JP.pm +95 -0
  86. data/Slic3r/Linux/lib/std/Encode/JP/H2Z.pm +176 -0
  87. data/Slic3r/Linux/lib/std/Encode/JP/JIS7.pm +165 -0
  88. data/Slic3r/Linux/lib/std/Encode/KR.pm +69 -0
  89. data/Slic3r/Linux/lib/std/Encode/KR/2022_KR.pm +81 -0
  90. data/Slic3r/Linux/lib/std/Encode/Locale.pm +348 -0
  91. data/Slic3r/Linux/lib/std/Encode/MIME/Header.pm +242 -0
  92. data/Slic3r/Linux/lib/std/Encode/MIME/Header/ISO_2022_JP.pm +131 -0
  93. data/Slic3r/Linux/lib/std/Encode/MIME/Name.pm +94 -0
  94. data/Slic3r/Linux/lib/std/Encode/Symbol.pm +44 -0
  95. data/Slic3r/Linux/lib/std/Encode/TW.pm +75 -0
  96. data/Slic3r/Linux/lib/std/Encode/Unicode.pm +270 -0
  97. data/Slic3r/Linux/lib/std/Encode/Unicode/UTF7.pm +130 -0
  98. data/Slic3r/Linux/lib/std/Errno.pm +282 -0
  99. data/Slic3r/Linux/lib/std/Fcntl.pm +186 -0
  100. data/Slic3r/Linux/lib/std/File/Basename.pm +402 -0
  101. data/Slic3r/Linux/lib/std/File/Glob.pm +437 -0
  102. data/Slic3r/Linux/lib/std/File/GlobMapper.pm +679 -0
  103. data/Slic3r/Linux/lib/std/File/Listing.pm +435 -0
  104. data/Slic3r/Linux/lib/std/File/Path.pm +981 -0
  105. data/Slic3r/Linux/lib/std/File/Spec.pm +339 -0
  106. data/Slic3r/Linux/lib/std/File/Spec/Cygwin.pm +160 -0
  107. data/Slic3r/Linux/lib/std/File/Spec/Epoc.pm +79 -0
  108. data/Slic3r/Linux/lib/std/File/Spec/Functions.pm +130 -0
  109. data/Slic3r/Linux/lib/std/File/Spec/Mac.pm +786 -0
  110. data/Slic3r/Linux/lib/std/File/Spec/OS2.pm +276 -0
  111. data/Slic3r/Linux/lib/std/File/Spec/Unix.pm +595 -0
  112. data/Slic3r/Linux/lib/std/File/Spec/VMS.pm +679 -0
  113. data/Slic3r/Linux/lib/std/File/Spec/Win32.pm +446 -0
  114. data/Slic3r/Linux/lib/std/File/Temp.pm +2452 -0
  115. data/Slic3r/Linux/lib/std/File/stat.pm +345 -0
  116. data/Slic3r/Linux/lib/std/FileHandle.pm +262 -0
  117. data/Slic3r/Linux/lib/std/Filter/Util/Call.pm +498 -0
  118. data/Slic3r/Linux/lib/std/FindBin.pm +209 -0
  119. data/Slic3r/Linux/lib/std/Getopt/Long.pm +2693 -0
  120. data/Slic3r/Linux/lib/std/Growl/GNTP.pm +595 -0
  121. data/Slic3r/Linux/lib/std/HTML/Entities.pm +483 -0
  122. data/Slic3r/Linux/lib/std/HTML/HeadParser.pm +310 -0
  123. data/Slic3r/Linux/lib/std/HTML/Parser.pm +1240 -0
  124. data/Slic3r/Linux/lib/std/HTTP/Config.pm +436 -0
  125. data/Slic3r/Linux/lib/std/HTTP/Cookies.pm +781 -0
  126. data/Slic3r/Linux/lib/std/HTTP/Cookies/Netscape.pm +114 -0
  127. data/Slic3r/Linux/lib/std/HTTP/Date.pm +388 -0
  128. data/Slic3r/Linux/lib/std/HTTP/Headers.pm +849 -0
  129. data/Slic3r/Linux/lib/std/HTTP/Headers/Util.pm +199 -0
  130. data/Slic3r/Linux/lib/std/HTTP/Message.pm +1107 -0
  131. data/Slic3r/Linux/lib/std/HTTP/Negotiate.pm +528 -0
  132. data/Slic3r/Linux/lib/std/HTTP/Request.pm +242 -0
  133. data/Slic3r/Linux/lib/std/HTTP/Request/Common.pm +514 -0
  134. data/Slic3r/Linux/lib/std/HTTP/Response.pm +638 -0
  135. data/Slic3r/Linux/lib/std/HTTP/Status.pm +267 -0
  136. data/Slic3r/Linux/lib/std/I18N/Langinfo.pm +191 -0
  137. data/Slic3r/Linux/lib/std/IO.pm +68 -0
  138. data/Slic3r/Linux/lib/std/IO/Compress/Adapter/Bzip2.pm +162 -0
  139. data/Slic3r/Linux/lib/std/IO/Compress/Adapter/Deflate.pm +165 -0
  140. data/Slic3r/Linux/lib/std/IO/Compress/Base.pm +981 -0
  141. data/Slic3r/Linux/lib/std/IO/Compress/Base/Common.pm +956 -0
  142. data/Slic3r/Linux/lib/std/IO/Compress/Bzip2.pm +758 -0
  143. data/Slic3r/Linux/lib/std/IO/Compress/Deflate.pm +930 -0
  144. data/Slic3r/Linux/lib/std/IO/Compress/Gzip.pm +1242 -0
  145. data/Slic3r/Linux/lib/std/IO/Compress/Gzip/Constants.pm +148 -0
  146. data/Slic3r/Linux/lib/std/IO/Compress/RawDeflate.pm +1017 -0
  147. data/Slic3r/Linux/lib/std/IO/Compress/Zlib/Constants.pm +77 -0
  148. data/Slic3r/Linux/lib/std/IO/Compress/Zlib/Extra.pm +198 -0
  149. data/Slic3r/Linux/lib/std/IO/Dir.pm +248 -0
  150. data/Slic3r/Linux/lib/std/IO/File.pm +204 -0
  151. data/Slic3r/Linux/lib/std/IO/Handle.pm +646 -0
  152. data/Slic3r/Linux/lib/std/IO/Pipe.pm +257 -0
  153. data/Slic3r/Linux/lib/std/IO/Seekable.pm +128 -0
  154. data/Slic3r/Linux/lib/std/IO/Select.pm +387 -0
  155. data/Slic3r/Linux/lib/std/IO/Socket.pm +540 -0
  156. data/Slic3r/Linux/lib/std/IO/Socket/INET.pm +464 -0
  157. data/Slic3r/Linux/lib/std/IO/Socket/SSL.pm +2456 -0
  158. data/Slic3r/Linux/lib/std/IO/Socket/UNIX.pm +143 -0
  159. data/Slic3r/Linux/lib/std/IO/Uncompress/Adapter/Bunzip2.pm +112 -0
  160. data/Slic3r/Linux/lib/std/IO/Uncompress/Adapter/Inflate.pm +158 -0
  161. data/Slic3r/Linux/lib/std/IO/Uncompress/Base.pm +1483 -0
  162. data/Slic3r/Linux/lib/std/IO/Uncompress/Bunzip2.pm +858 -0
  163. data/Slic3r/Linux/lib/std/IO/Uncompress/Gunzip.pm +1111 -0
  164. data/Slic3r/Linux/lib/std/IO/Uncompress/Inflate.pm +982 -0
  165. data/Slic3r/Linux/lib/std/IO/Uncompress/RawInflate.pm +1110 -0
  166. data/Slic3r/Linux/lib/std/Import/Into.pm +289 -0
  167. data/Slic3r/Linux/lib/std/LWP.pm +667 -0
  168. data/Slic3r/Linux/lib/std/LWP/Authen/Basic.pm +65 -0
  169. data/Slic3r/Linux/lib/std/LWP/Authen/Digest.pm +68 -0
  170. data/Slic3r/Linux/lib/std/LWP/Authen/Ntlm.pm +180 -0
  171. data/Slic3r/Linux/lib/std/LWP/ConnCache.pm +313 -0
  172. data/Slic3r/Linux/lib/std/LWP/MediaTypes.pm +280 -0
  173. data/Slic3r/Linux/lib/std/LWP/MemberMixin.pm +44 -0
  174. data/Slic3r/Linux/lib/std/LWP/Protocol.pm +291 -0
  175. data/Slic3r/Linux/lib/std/LWP/Protocol/GHTTP.pm +73 -0
  176. data/Slic3r/Linux/lib/std/LWP/Protocol/cpan.pm +72 -0
  177. data/Slic3r/Linux/lib/std/LWP/Protocol/data.pm +52 -0
  178. data/Slic3r/Linux/lib/std/LWP/Protocol/file.pm +146 -0
  179. data/Slic3r/Linux/lib/std/LWP/Protocol/ftp.pm +543 -0
  180. data/Slic3r/Linux/lib/std/LWP/Protocol/gopher.pm +213 -0
  181. data/Slic3r/Linux/lib/std/LWP/Protocol/http.pm +501 -0
  182. data/Slic3r/Linux/lib/std/LWP/Protocol/https.pm +132 -0
  183. data/Slic3r/Linux/lib/std/LWP/Protocol/loopback.pm +26 -0
  184. data/Slic3r/Linux/lib/std/LWP/Protocol/mailto.pm +183 -0
  185. data/Slic3r/Linux/lib/std/LWP/Protocol/nntp.pm +145 -0
  186. data/Slic3r/Linux/lib/std/LWP/Protocol/nogo.pm +24 -0
  187. data/Slic3r/Linux/lib/std/LWP/UserAgent.pm +1859 -0
  188. data/Slic3r/Linux/lib/std/List/Util.pm +433 -0
  189. data/Slic3r/Linux/lib/std/MIME/Base64.pm +188 -0
  190. data/Slic3r/Linux/lib/std/MIME/QuotedPrint.pm +114 -0
  191. data/Slic3r/Linux/lib/std/Mail/Address.pm +273 -0
  192. data/Slic3r/Linux/lib/std/Mail/Header.pm +637 -0
  193. data/Slic3r/Linux/lib/std/Mail/Internet.pm +546 -0
  194. data/Slic3r/Linux/lib/std/Mail/Mailer.pm +215 -0
  195. data/Slic3r/Linux/lib/std/Mail/Util.pm +149 -0
  196. data/Slic3r/Linux/lib/std/Math/BigFloat.pm +4493 -0
  197. data/Slic3r/Linux/lib/std/Math/BigFloat/Trace.pm +58 -0
  198. data/Slic3r/Linux/lib/std/Math/BigInt.pm +5284 -0
  199. data/Slic3r/Linux/lib/std/Math/BigInt/Calc.pm +2970 -0
  200. data/Slic3r/Linux/lib/std/Math/BigInt/CalcEmu.pm +329 -0
  201. data/Slic3r/Linux/lib/std/Math/BigInt/FastCalc.pm +112 -0
  202. data/Slic3r/Linux/lib/std/Math/BigInt/Trace.pm +47 -0
  203. data/Slic3r/Linux/lib/std/Math/Complex.pm +2093 -0
  204. data/Slic3r/Linux/lib/std/Math/Libm.pm +199 -0
  205. data/Slic3r/Linux/lib/std/Math/PlanePath.pm +2211 -0
  206. data/Slic3r/Linux/lib/std/Math/PlanePath/ArchimedeanChords.pm +686 -0
  207. data/Slic3r/Linux/lib/std/Math/PlanePath/Base/Digits.pm +389 -0
  208. data/Slic3r/Linux/lib/std/Math/PlanePath/Base/Generic.pm +242 -0
  209. data/Slic3r/Linux/lib/std/Math/PlanePath/Base/NSEW.pm +114 -0
  210. data/Slic3r/Linux/lib/std/Math/PlanePath/Flowsnake.pm +886 -0
  211. data/Slic3r/Linux/lib/std/Math/PlanePath/FlowsnakeCentres.pm +1018 -0
  212. data/Slic3r/Linux/lib/std/Math/PlanePath/HilbertCurve.pm +772 -0
  213. data/Slic3r/Linux/lib/std/Math/PlanePath/MultipleRings.pm +1715 -0
  214. data/Slic3r/Linux/lib/std/Math/PlanePath/OctagramSpiral.pm +469 -0
  215. data/Slic3r/Linux/lib/std/Math/PlanePath/SacksSpiral.pm +440 -0
  216. data/Slic3r/Linux/lib/std/Math/Trig.pm +768 -0
  217. data/Slic3r/Linux/lib/std/Method/Generate/Accessor.pm +652 -0
  218. data/Slic3r/Linux/lib/std/Method/Generate/BuildAll.pm +33 -0
  219. data/Slic3r/Linux/lib/std/Method/Generate/Constructor.pm +221 -0
  220. data/Slic3r/Linux/lib/std/Method/Generate/DemolishAll.pm +48 -0
  221. data/Slic3r/Linux/lib/std/Module/Runtime.pm +494 -0
  222. data/Slic3r/Linux/lib/std/Moo.pm +989 -0
  223. data/Slic3r/Linux/lib/std/Moo/HandleMoose.pm +210 -0
  224. data/Slic3r/Linux/lib/std/Moo/HandleMoose/FakeMetaClass.pm +21 -0
  225. data/Slic3r/Linux/lib/std/Moo/HandleMoose/_TypeMap.pm +72 -0
  226. data/Slic3r/Linux/lib/std/Moo/Object.pm +80 -0
  227. data/Slic3r/Linux/lib/std/Moo/Role.pm +475 -0
  228. data/Slic3r/Linux/lib/std/Moo/_Utils.pm +124 -0
  229. data/Slic3r/Linux/lib/std/Moo/_mro.pm +10 -0
  230. data/Slic3r/Linux/lib/std/Moo/sification.pm +22 -0
  231. data/Slic3r/Linux/lib/std/Mozilla/CA.pm +99 -0
  232. data/Slic3r/Linux/lib/std/Mozilla/CA/cacert.pem +3366 -0
  233. data/Slic3r/Linux/lib/std/Net/Cmd.pm +783 -0
  234. data/Slic3r/Linux/lib/std/Net/Config.pm +312 -0
  235. data/Slic3r/Linux/lib/std/Net/Domain.pm +347 -0
  236. data/Slic3r/Linux/lib/std/Net/FTP.pm +1829 -0
  237. data/Slic3r/Linux/lib/std/Net/FTP/A.pm +111 -0
  238. data/Slic3r/Linux/lib/std/Net/FTP/E.pm +8 -0
  239. data/Slic3r/Linux/lib/std/Net/FTP/I.pm +80 -0
  240. data/Slic3r/Linux/lib/std/Net/FTP/L.pm +8 -0
  241. data/Slic3r/Linux/lib/std/Net/FTP/dataconn.pm +124 -0
  242. data/Slic3r/Linux/lib/std/Net/HTTP.pm +279 -0
  243. data/Slic3r/Linux/lib/std/Net/HTTP/Methods.pm +593 -0
  244. data/Slic3r/Linux/lib/std/Net/HTTPS.pm +110 -0
  245. data/Slic3r/Linux/lib/std/Net/NNTP.pm +1140 -0
  246. data/Slic3r/Linux/lib/std/Net/Netrc.pm +325 -0
  247. data/Slic3r/Linux/lib/std/Net/SMTP.pm +867 -0
  248. data/Slic3r/Linux/lib/std/Net/SSL.pm +639 -0
  249. data/Slic3r/Linux/lib/std/Net/SSLeay.pm +2692 -0
  250. data/Slic3r/Linux/lib/std/OpenGL.pm +6288 -0
  251. data/Slic3r/Linux/lib/std/POSIX.pm +1037 -0
  252. data/Slic3r/Linux/lib/std/Params/Validate/XS.pm +51 -0
  253. data/Slic3r/Linux/lib/std/PerlIO.pm +332 -0
  254. data/Slic3r/Linux/lib/std/PerlIO/encoding.pm +53 -0
  255. data/Slic3r/Linux/lib/std/PerlIO/scalar.pm +41 -0
  256. data/Slic3r/Linux/lib/std/PerlIO/via.pm +243 -0
  257. data/Slic3r/Linux/lib/std/PerlIO/via/QuotedPrint.pm +94 -0
  258. data/Slic3r/Linux/lib/std/Pod/Escapes.pm +721 -0
  259. data/Slic3r/Linux/lib/std/Pod/InputObjects.pm +936 -0
  260. data/Slic3r/Linux/lib/std/Pod/Parser.pm +1829 -0
  261. data/Slic3r/Linux/lib/std/Pod/PlainText.pm +738 -0
  262. data/Slic3r/Linux/lib/std/Pod/Select.pm +746 -0
  263. data/Slic3r/Linux/lib/std/Pod/Simple.pm +1535 -0
  264. data/Slic3r/Linux/lib/std/Pod/Simple/BlackBox.pm +1930 -0
  265. data/Slic3r/Linux/lib/std/Pod/Simple/LinkSection.pm +174 -0
  266. data/Slic3r/Linux/lib/std/Pod/Simple/TiedOutFH.pm +105 -0
  267. data/Slic3r/Linux/lib/std/Pod/Simple/Transcode.pm +35 -0
  268. data/Slic3r/Linux/lib/std/Pod/Text.pm +886 -0
  269. data/Slic3r/Linux/lib/std/Pod/Usage.pm +730 -0
  270. data/Slic3r/Linux/lib/std/Role/Tiny.pm +698 -0
  271. data/Slic3r/Linux/lib/std/SVG.pm +341 -0
  272. data/Slic3r/Linux/lib/std/SVG/DOM.pm +804 -0
  273. data/Slic3r/Linux/lib/std/SVG/Element.pm +1649 -0
  274. data/Slic3r/Linux/lib/std/SVG/Extension.pm +458 -0
  275. data/Slic3r/Linux/lib/std/SVG/XML.pm +185 -0
  276. data/Slic3r/Linux/lib/std/Scalar/Util.pm +325 -0
  277. data/Slic3r/Linux/lib/std/SelectSaver.pm +54 -0
  278. data/Slic3r/Linux/lib/std/Slic3r.pm +180 -0
  279. data/Slic3r/Linux/lib/std/Slic3r/Build.pm +8 -0
  280. data/Slic3r/Linux/lib/std/Slic3r/Config.pm +456 -0
  281. data/Slic3r/Linux/lib/std/Slic3r/ExPolygon.pm +53 -0
  282. data/Slic3r/Linux/lib/std/Slic3r/Extruder.pm +52 -0
  283. data/Slic3r/Linux/lib/std/Slic3r/ExtrusionLoop.pm +12 -0
  284. data/Slic3r/Linux/lib/std/Slic3r/ExtrusionPath.pm +12 -0
  285. data/Slic3r/Linux/lib/std/Slic3r/ExtrusionPath/Collection.pm +5 -0
  286. data/Slic3r/Linux/lib/std/Slic3r/Fill.pm +259 -0
  287. data/Slic3r/Linux/lib/std/Slic3r/Fill/ArchimedeanChords.pm +7 -0
  288. data/Slic3r/Linux/lib/std/Slic3r/Fill/Base.pm +81 -0
  289. data/Slic3r/Linux/lib/std/Slic3r/Fill/Concentric.pm +65 -0
  290. data/Slic3r/Linux/lib/std/Slic3r/Fill/Flowsnake.pm +18 -0
  291. data/Slic3r/Linux/lib/std/Slic3r/Fill/HilbertCurve.pm +7 -0
  292. data/Slic3r/Linux/lib/std/Slic3r/Fill/Honeycomb.pm +128 -0
  293. data/Slic3r/Linux/lib/std/Slic3r/Fill/Line.pm +8 -0
  294. data/Slic3r/Linux/lib/std/Slic3r/Fill/OctagramSpiral.pm +9 -0
  295. data/Slic3r/Linux/lib/std/Slic3r/Fill/PlanePath.pm +61 -0
  296. data/Slic3r/Linux/lib/std/Slic3r/Fill/Rectilinear.pm +110 -0
  297. data/Slic3r/Linux/lib/std/Slic3r/Flow.pm +12 -0
  298. data/Slic3r/Linux/lib/std/Slic3r/Format/AMF.pm +122 -0
  299. data/Slic3r/Linux/lib/std/Slic3r/Format/AMF/Parser.pm +157 -0
  300. data/Slic3r/Linux/lib/std/Slic3r/Format/OBJ.pm +36 -0
  301. data/Slic3r/Linux/lib/std/Slic3r/Format/STL.pm +39 -0
  302. data/Slic3r/Linux/lib/std/Slic3r/GCode.pm +696 -0
  303. data/Slic3r/Linux/lib/std/Slic3r/GCode/ArcFitting.pm +242 -0
  304. data/Slic3r/Linux/lib/std/Slic3r/GCode/CoolingBuffer.pm +80 -0
  305. data/Slic3r/Linux/lib/std/Slic3r/GCode/Layer.pm +238 -0
  306. data/Slic3r/Linux/lib/std/Slic3r/GCode/MotionPlanner.pm +317 -0
  307. data/Slic3r/Linux/lib/std/Slic3r/GCode/PlaceholderParser.pm +83 -0
  308. data/Slic3r/Linux/lib/std/Slic3r/GCode/Reader.pm +72 -0
  309. data/Slic3r/Linux/lib/std/Slic3r/GCode/SpiralVase.pm +81 -0
  310. data/Slic3r/Linux/lib/std/Slic3r/GCode/VibrationLimit.pm +64 -0
  311. data/Slic3r/Linux/lib/std/Slic3r/GUI.pm +586 -0
  312. data/Slic3r/Linux/lib/std/Slic3r/GUI/AboutDialog.pm +110 -0
  313. data/Slic3r/Linux/lib/std/Slic3r/GUI/ConfigWizard.pm +373 -0
  314. data/Slic3r/Linux/lib/std/Slic3r/GUI/OptionsGroup.pm +504 -0
  315. data/Slic3r/Linux/lib/std/Slic3r/GUI/Plater.pm +1437 -0
  316. data/Slic3r/Linux/lib/std/Slic3r/GUI/Plater/ObjectCutDialog.pm +153 -0
  317. data/Slic3r/Linux/lib/std/Slic3r/GUI/Plater/ObjectPartsPanel.pm +268 -0
  318. data/Slic3r/Linux/lib/std/Slic3r/GUI/Plater/ObjectPreviewDialog.pm +30 -0
  319. data/Slic3r/Linux/lib/std/Slic3r/GUI/Plater/ObjectSettingsDialog.pm +175 -0
  320. data/Slic3r/Linux/lib/std/Slic3r/GUI/Plater/OverrideSettingsPanel.pm +137 -0
  321. data/Slic3r/Linux/lib/std/Slic3r/GUI/Preferences.pm +78 -0
  322. data/Slic3r/Linux/lib/std/Slic3r/GUI/PreviewCanvas.pm +506 -0
  323. data/Slic3r/Linux/lib/std/Slic3r/GUI/SimpleTab.pm +230 -0
  324. data/Slic3r/Linux/lib/std/Slic3r/GUI/SkeinPanel.pm +550 -0
  325. data/Slic3r/Linux/lib/std/Slic3r/GUI/Tab.pm +944 -0
  326. data/Slic3r/Linux/lib/std/Slic3r/Geometry.pm +753 -0
  327. data/Slic3r/Linux/lib/std/Slic3r/Geometry/Clipper.pm +13 -0
  328. data/Slic3r/Linux/lib/std/Slic3r/Layer.pm +76 -0
  329. data/Slic3r/Linux/lib/std/Slic3r/Layer/BridgeDetector.pm +277 -0
  330. data/Slic3r/Linux/lib/std/Slic3r/Layer/Region.pm +545 -0
  331. data/Slic3r/Linux/lib/std/Slic3r/Line.pm +21 -0
  332. data/Slic3r/Linux/lib/std/Slic3r/Model.pm +608 -0
  333. data/Slic3r/Linux/lib/std/Slic3r/Point.pm +10 -0
  334. data/Slic3r/Linux/lib/std/Slic3r/Polygon.pm +95 -0
  335. data/Slic3r/Linux/lib/std/Slic3r/Polyline.pm +40 -0
  336. data/Slic3r/Linux/lib/std/Slic3r/Print.pm +1146 -0
  337. data/Slic3r/Linux/lib/std/Slic3r/Print/Object.pm +1023 -0
  338. data/Slic3r/Linux/lib/std/Slic3r/Print/Region.pm +63 -0
  339. data/Slic3r/Linux/lib/std/Slic3r/Print/Simple.pm +108 -0
  340. data/Slic3r/Linux/lib/std/Slic3r/Print/State.pm +28 -0
  341. data/Slic3r/Linux/lib/std/Slic3r/Print/SupportMaterial.pm +862 -0
  342. data/Slic3r/Linux/lib/std/Slic3r/SVG.pm +142 -0
  343. data/Slic3r/Linux/lib/std/Slic3r/Surface.pm +15 -0
  344. data/Slic3r/Linux/lib/std/Slic3r/Test/SectionCut.pm +170 -0
  345. data/Slic3r/Linux/lib/std/Slic3r/TriangleMesh.pm +22 -0
  346. data/Slic3r/Linux/lib/std/Slic3r/XS.pm +205 -0
  347. data/Slic3r/Linux/lib/std/Socket.pm +804 -0
  348. data/Slic3r/Linux/lib/std/Storable.pm +1227 -0
  349. data/Slic3r/Linux/lib/std/Sub/Defer.pm +141 -0
  350. data/Slic3r/Linux/lib/std/Sub/Exporter/Progressive.pm +158 -0
  351. data/Slic3r/Linux/lib/std/Sub/Quote.pm +368 -0
  352. data/Slic3r/Linux/lib/std/Symbol.pm +170 -0
  353. data/Slic3r/Linux/lib/std/Term/Cap.pm +799 -0
  354. data/Slic3r/Linux/lib/std/Text/ParseWords.pm +294 -0
  355. data/Slic3r/Linux/lib/std/Thread/Queue.pm +476 -0
  356. data/Slic3r/Linux/lib/std/Tie/Handle.pm +201 -0
  357. data/Slic3r/Linux/lib/std/Tie/Hash.pm +268 -0
  358. data/Slic3r/Linux/lib/std/Tie/Hash/NamedCapture.pm +49 -0
  359. data/Slic3r/Linux/lib/std/Tie/StdHandle.pm +71 -0
  360. data/Slic3r/Linux/lib/std/Time/HiRes.pm +591 -0
  361. data/Slic3r/Linux/lib/std/Time/Local.pm +384 -0
  362. data/Slic3r/Linux/lib/std/Time/Zone.pm +291 -0
  363. data/Slic3r/Linux/lib/std/UNIVERSAL.pm +214 -0
  364. data/Slic3r/Linux/lib/std/URI.pm +1131 -0
  365. data/Slic3r/Linux/lib/std/URI/Escape.pm +208 -0
  366. data/Slic3r/Linux/lib/std/URI/Heuristic.pm +253 -0
  367. data/Slic3r/Linux/lib/std/URI/IRI.pm +44 -0
  368. data/Slic3r/Linux/lib/std/URI/QueryParam.pm +193 -0
  369. data/Slic3r/Linux/lib/std/URI/Split.pm +96 -0
  370. data/Slic3r/Linux/lib/std/URI/URL.pm +305 -0
  371. data/Slic3r/Linux/lib/std/URI/WithBase.pm +171 -0
  372. data/Slic3r/Linux/lib/std/URI/_foreign.pm +6 -0
  373. data/Slic3r/Linux/lib/std/URI/_generic.pm +252 -0
  374. data/Slic3r/Linux/lib/std/URI/_idna.pm +87 -0
  375. data/Slic3r/Linux/lib/std/URI/_ldap.pm +140 -0
  376. data/Slic3r/Linux/lib/std/URI/_login.pm +10 -0
  377. data/Slic3r/Linux/lib/std/URI/_punycode.pm +202 -0
  378. data/Slic3r/Linux/lib/std/URI/_query.pm +93 -0
  379. data/Slic3r/Linux/lib/std/URI/_segment.pm +20 -0
  380. data/Slic3r/Linux/lib/std/URI/_server.pm +162 -0
  381. data/Slic3r/Linux/lib/std/URI/_userpass.pm +51 -0
  382. data/Slic3r/Linux/lib/std/URI/data.pm +140 -0
  383. data/Slic3r/Linux/lib/std/URI/file.pm +328 -0
  384. data/Slic3r/Linux/lib/std/URI/file/Base.pm +80 -0
  385. data/Slic3r/Linux/lib/std/URI/file/FAT.pm +23 -0
  386. data/Slic3r/Linux/lib/std/URI/file/Mac.pm +120 -0
  387. data/Slic3r/Linux/lib/std/URI/file/OS2.pm +28 -0
  388. data/Slic3r/Linux/lib/std/URI/file/QNX.pm +18 -0
  389. data/Slic3r/Linux/lib/std/URI/file/Unix.pm +55 -0
  390. data/Slic3r/Linux/lib/std/URI/file/Win32.pm +84 -0
  391. data/Slic3r/Linux/lib/std/URI/ftp.pm +45 -0
  392. data/Slic3r/Linux/lib/std/URI/gopher.pm +94 -0
  393. data/Slic3r/Linux/lib/std/URI/http.pm +25 -0
  394. data/Slic3r/Linux/lib/std/URI/https.pm +9 -0
  395. data/Slic3r/Linux/lib/std/URI/ldap.pm +122 -0
  396. data/Slic3r/Linux/lib/std/URI/ldapi.pm +30 -0
  397. data/Slic3r/Linux/lib/std/URI/ldaps.pm +9 -0
  398. data/Slic3r/Linux/lib/std/URI/mailto.pm +72 -0
  399. data/Slic3r/Linux/lib/std/URI/mms.pm +8 -0
  400. data/Slic3r/Linux/lib/std/URI/news.pm +68 -0
  401. data/Slic3r/Linux/lib/std/URI/nntp.pm +6 -0
  402. data/Slic3r/Linux/lib/std/URI/pop.pm +68 -0
  403. data/Slic3r/Linux/lib/std/URI/rlogin.pm +7 -0
  404. data/Slic3r/Linux/lib/std/URI/rsync.pm +12 -0
  405. data/Slic3r/Linux/lib/std/URI/rtsp.pm +8 -0
  406. data/Slic3r/Linux/lib/std/URI/rtspu.pm +8 -0
  407. data/Slic3r/Linux/lib/std/URI/sip.pm +86 -0
  408. data/Slic3r/Linux/lib/std/URI/sips.pm +9 -0
  409. data/Slic3r/Linux/lib/std/URI/snews.pm +10 -0
  410. data/Slic3r/Linux/lib/std/URI/ssh.pm +11 -0
  411. data/Slic3r/Linux/lib/std/URI/telnet.pm +7 -0
  412. data/Slic3r/Linux/lib/std/URI/tn3270.pm +7 -0
  413. data/Slic3r/Linux/lib/std/URI/urn.pm +97 -0
  414. data/Slic3r/Linux/lib/std/URI/urn/isbn.pm +102 -0
  415. data/Slic3r/Linux/lib/std/URI/urn/oid.pm +18 -0
  416. data/Slic3r/Linux/lib/std/Wx.pm +394 -0
  417. data/Slic3r/Linux/lib/std/Wx/App.pm +54 -0
  418. data/Slic3r/Linux/lib/std/Wx/DND.pm +74 -0
  419. data/Slic3r/Linux/lib/std/Wx/DropSource.pm +33 -0
  420. data/Slic3r/Linux/lib/std/Wx/Event.pm +469 -0
  421. data/Slic3r/Linux/lib/std/Wx/GLCanvas.pm +84 -0
  422. data/Slic3r/Linux/lib/std/Wx/Grid.pm +128 -0
  423. data/Slic3r/Linux/lib/std/Wx/Html.pm +67 -0
  424. data/Slic3r/Linux/lib/std/Wx/Locale.pm +61 -0
  425. data/Slic3r/Linux/lib/std/Wx/Menu.pm +74 -0
  426. data/Slic3r/Linux/lib/std/Wx/Mini.pm +181 -0
  427. data/Slic3r/Linux/lib/std/Wx/Print.pm +56 -0
  428. data/Slic3r/Linux/lib/std/Wx/RadioBox.pm +53 -0
  429. data/Slic3r/Linux/lib/std/Wx/Timer.pm +56 -0
  430. data/Slic3r/Linux/lib/std/Wx/Wx_Exp.pm +9494 -0
  431. data/Slic3r/Linux/lib/std/XML/NamespaceSupport.pm +583 -0
  432. data/Slic3r/Linux/lib/std/XML/SAX.pm +379 -0
  433. data/Slic3r/Linux/lib/std/XML/SAX/Base.pm +3176 -0
  434. data/Slic3r/Linux/lib/std/XML/SAX/BuildSAXBase.pl +847 -0
  435. data/Slic3r/Linux/lib/std/XML/SAX/DocumentLocator.pm +134 -0
  436. data/Slic3r/Linux/lib/std/XML/SAX/Exception.pm +129 -0
  437. data/Slic3r/Linux/lib/std/XML/SAX/ExpatXS.pm +354 -0
  438. data/Slic3r/Linux/lib/std/XML/SAX/ExpatXS/Encoding.pm +184 -0
  439. data/Slic3r/Linux/lib/std/XML/SAX/ExpatXS/Preload.pm +288 -0
  440. data/Slic3r/Linux/lib/std/XML/SAX/ParserDetails.ini +16 -0
  441. data/Slic3r/Linux/lib/std/XML/SAX/ParserFactory.pm +230 -0
  442. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl.pm +751 -0
  443. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/DTDDecls.pm +603 -0
  444. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/DebugHandler.pm +95 -0
  445. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/DocType.pm +180 -0
  446. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/EncodingDetect.pm +105 -0
  447. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/Exception.pm +67 -0
  448. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/NoUnicodeExt.pm +28 -0
  449. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/Productions.pm +147 -0
  450. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/Reader.pm +136 -0
  451. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/Reader/NoUnicodeExt.pm +25 -0
  452. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/Reader/Stream.pm +84 -0
  453. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/Reader/String.pm +78 -0
  454. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/Reader/URI.pm +57 -0
  455. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/Reader/UnicodeExt.pm +23 -0
  456. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/UnicodeExt.pm +22 -0
  457. data/Slic3r/Linux/lib/std/XML/SAX/PurePerl/XMLDecl.pm +129 -0
  458. data/Slic3r/Linux/lib/std/attributes.pm +490 -0
  459. data/Slic3r/Linux/lib/std/auto/B/B.so +0 -0
  460. data/Slic3r/Linux/lib/std/auto/Class/XSAccessor/XSAccessor.so +0 -0
  461. data/Slic3r/Linux/lib/std/auto/Compress/Raw/Bzip2/Bzip2.so +0 -0
  462. data/Slic3r/Linux/lib/std/auto/Compress/Raw/Bzip2/autosplit.ix +3 -0
  463. data/Slic3r/Linux/lib/std/auto/Compress/Raw/Zlib/Zlib.so +0 -0
  464. data/Slic3r/Linux/lib/std/auto/Compress/Raw/Zlib/autosplit.ix +3 -0
  465. data/Slic3r/Linux/lib/std/auto/Crypt/SSLeay/SSLeay.so +0 -0
  466. data/Slic3r/Linux/lib/std/auto/Cwd/Cwd.so +0 -0
  467. data/Slic3r/Linux/lib/std/auto/Data/Dumper/Dumper.so +0 -0
  468. data/Slic3r/Linux/lib/std/auto/Data/UUID/UUID.so +0 -0
  469. data/Slic3r/Linux/lib/std/auto/Digest/MD5/MD5.so +0 -0
  470. data/Slic3r/Linux/lib/std/auto/Digest/SHA/SHA.so +0 -0
  471. data/Slic3r/Linux/lib/std/auto/Encode/Byte/Byte.so +0 -0
  472. data/Slic3r/Linux/lib/std/auto/Encode/CN/CN.so +0 -0
  473. data/Slic3r/Linux/lib/std/auto/Encode/EBCDIC/EBCDIC.so +0 -0
  474. data/Slic3r/Linux/lib/std/auto/Encode/Encode.so +0 -0
  475. data/Slic3r/Linux/lib/std/auto/Encode/JP/JP.so +0 -0
  476. data/Slic3r/Linux/lib/std/auto/Encode/KR/KR.so +0 -0
  477. data/Slic3r/Linux/lib/std/auto/Encode/Symbol/Symbol.so +0 -0
  478. data/Slic3r/Linux/lib/std/auto/Encode/TW/TW.so +0 -0
  479. data/Slic3r/Linux/lib/std/auto/Encode/Unicode/Unicode.so +0 -0
  480. data/Slic3r/Linux/lib/std/auto/Fcntl/Fcntl.so +0 -0
  481. data/Slic3r/Linux/lib/std/auto/File/Glob/Glob.so +0 -0
  482. data/Slic3r/Linux/lib/std/auto/Filter/Util/Call/Call.so +0 -0
  483. data/Slic3r/Linux/lib/std/auto/HTML/Parser/Parser.so +0 -0
  484. data/Slic3r/Linux/lib/std/auto/I18N/Langinfo/Langinfo.so +0 -0
  485. data/Slic3r/Linux/lib/std/auto/IO/IO.so +0 -0
  486. data/Slic3r/Linux/lib/std/auto/List/Util/Util.so +0 -0
  487. data/Slic3r/Linux/lib/std/auto/MIME/Base64/Base64.so +0 -0
  488. data/Slic3r/Linux/lib/std/auto/Math/BigInt/FastCalc/FastCalc.so +0 -0
  489. data/Slic3r/Linux/lib/std/auto/Math/Libm/Libm.so +0 -0
  490. data/Slic3r/Linux/lib/std/auto/Math/Libm/autosplit.ix +3 -0
  491. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/SSLeay.so +0 -0
  492. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/autosplit.ix +78 -0
  493. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/debug_read.al +22 -0
  494. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/do_https.al +18 -0
  495. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/do_https2.al +13 -0
  496. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/do_https3.al +13 -0
  497. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/do_https4.al +12 -0
  498. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/do_httpx2.al +18 -0
  499. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/do_httpx3.al +43 -0
  500. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/do_httpx4.al +19 -0
  501. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/dump_peer_certificate.al +29 -0
  502. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/get_http.al +9 -0
  503. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/get_http3.al +9 -0
  504. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/get_http4.al +9 -0
  505. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/get_https.al +9 -0
  506. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/get_https3.al +9 -0
  507. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/get_https4.al +9 -0
  508. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/get_httpx.al +9 -0
  509. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/get_httpx3.al +9 -0
  510. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/get_httpx4.al +9 -0
  511. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/head_http.al +10 -0
  512. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/head_http3.al +10 -0
  513. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/head_http4.al +12 -0
  514. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/head_https.al +10 -0
  515. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/head_https3.al +10 -0
  516. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/head_https4.al +12 -0
  517. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/head_httpx.al +10 -0
  518. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/head_httpx3.al +10 -0
  519. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/head_httpx4.al +13 -0
  520. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/http_cat.al +34 -0
  521. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/https_cat.al +97 -0
  522. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/httpx_cat.al +18 -0
  523. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/make_form.al +25 -0
  524. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/make_headers.al +21 -0
  525. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/new_x_ctx.al +16 -0
  526. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/open_proxy_tcp_connection.al +31 -0
  527. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/open_tcp_connection.al +40 -0
  528. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/post_http.al +9 -0
  529. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/post_http3.al +9 -0
  530. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/post_http4.al +9 -0
  531. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/post_https.al +9 -0
  532. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/post_https3.al +9 -0
  533. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/post_https4.al +9 -0
  534. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/post_httpx.al +9 -0
  535. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/post_httpx3.al +9 -0
  536. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/post_httpx4.al +9 -0
  537. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/put_http.al +9 -0
  538. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/put_http3.al +9 -0
  539. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/put_http4.al +9 -0
  540. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/put_https.al +9 -0
  541. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/put_https3.al +9 -0
  542. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/put_https4.al +9 -0
  543. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/put_httpx.al +9 -0
  544. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/put_httpx3.al +9 -0
  545. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/put_httpx4.al +9 -0
  546. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/randomize.al +31 -0
  547. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/set_cert_and_key.al +23 -0
  548. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/set_proxy.al +16 -0
  549. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/set_server_cert_and_key.al +14 -0
  550. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/ssl_read_CRLF.al +10 -0
  551. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/ssl_read_all.al +28 -0
  552. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/ssl_read_until.al +95 -0
  553. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/ssl_write_CRLF.al +23 -0
  554. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/ssl_write_all.al +149 -0
  555. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/sslcat.al +99 -0
  556. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/tcp_read_CRLF.al +11 -0
  557. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/tcp_read_all.al +26 -0
  558. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/tcp_read_until.al +34 -0
  559. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/tcp_write_CRLF.al +23 -0
  560. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/tcp_write_all.al +36 -0
  561. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/tcpcat.al +37 -0
  562. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/tcpxcat.al +17 -0
  563. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/want_X509_lookup.al +15 -0
  564. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/want_nothing.al +16 -0
  565. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/want_read.al +9 -0
  566. data/Slic3r/Linux/lib/std/auto/Net/SSLeay/want_write.al +9 -0
  567. data/Slic3r/Linux/lib/std/auto/OpenGL/OpenGL.so +0 -0
  568. data/Slic3r/Linux/lib/std/auto/OpenGL/autosplit.ix +3 -0
  569. data/Slic3r/Linux/lib/std/auto/POSIX/POSIX.so +0 -0
  570. data/Slic3r/Linux/lib/std/auto/POSIX/SigAction/flags.al +9 -0
  571. data/Slic3r/Linux/lib/std/auto/POSIX/SigAction/handler.al +9 -0
  572. data/Slic3r/Linux/lib/std/auto/POSIX/SigAction/mask.al +9 -0
  573. data/Slic3r/Linux/lib/std/auto/POSIX/SigAction/new.al +11 -0
  574. data/Slic3r/Linux/lib/std/auto/POSIX/SigAction/safe.al +13 -0
  575. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/CLEAR.al +9 -0
  576. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/DELETE.al +9 -0
  577. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/EXISTS.al +9 -0
  578. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/FETCH.al +12 -0
  579. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/SCALAR.al +9 -0
  580. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/STORE.al +9 -0
  581. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/_check.al +15 -0
  582. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/_croak.al +13 -0
  583. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/_exist.al +14 -0
  584. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/_getsig.al +17 -0
  585. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/_init.al +14 -0
  586. data/Slic3r/Linux/lib/std/auto/POSIX/SigRt/new.al +17 -0
  587. data/Slic3r/Linux/lib/std/auto/POSIX/abs.al +13 -0
  588. data/Slic3r/Linux/lib/std/auto/POSIX/alarm.al +13 -0
  589. data/Slic3r/Linux/lib/std/auto/POSIX/assert.al +15 -0
  590. data/Slic3r/Linux/lib/std/auto/POSIX/atan2.al +13 -0
  591. data/Slic3r/Linux/lib/std/auto/POSIX/atexit.al +12 -0
  592. data/Slic3r/Linux/lib/std/auto/POSIX/atof.al +12 -0
  593. data/Slic3r/Linux/lib/std/auto/POSIX/atoi.al +12 -0
  594. data/Slic3r/Linux/lib/std/auto/POSIX/atol.al +12 -0
  595. data/Slic3r/Linux/lib/std/auto/POSIX/autosplit.ix +173 -0
  596. data/Slic3r/Linux/lib/std/auto/POSIX/bsearch.al +12 -0
  597. data/Slic3r/Linux/lib/std/auto/POSIX/calloc.al +12 -0
  598. data/Slic3r/Linux/lib/std/auto/POSIX/chdir.al +13 -0
  599. data/Slic3r/Linux/lib/std/auto/POSIX/chmod.al +13 -0
  600. data/Slic3r/Linux/lib/std/auto/POSIX/chown.al +13 -0
  601. data/Slic3r/Linux/lib/std/auto/POSIX/clearerr.al +12 -0
  602. data/Slic3r/Linux/lib/std/auto/POSIX/closedir.al +13 -0
  603. data/Slic3r/Linux/lib/std/auto/POSIX/cos.al +13 -0
  604. data/Slic3r/Linux/lib/std/auto/POSIX/creat.al +13 -0
  605. data/Slic3r/Linux/lib/std/auto/POSIX/div.al +12 -0
  606. data/Slic3r/Linux/lib/std/auto/POSIX/errno.al +13 -0
  607. data/Slic3r/Linux/lib/std/auto/POSIX/execl.al +12 -0
  608. data/Slic3r/Linux/lib/std/auto/POSIX/execle.al +12 -0
  609. data/Slic3r/Linux/lib/std/auto/POSIX/execlp.al +12 -0
  610. data/Slic3r/Linux/lib/std/auto/POSIX/execv.al +12 -0
  611. data/Slic3r/Linux/lib/std/auto/POSIX/execve.al +12 -0
  612. data/Slic3r/Linux/lib/std/auto/POSIX/execvp.al +12 -0
  613. data/Slic3r/Linux/lib/std/auto/POSIX/exit.al +13 -0
  614. data/Slic3r/Linux/lib/std/auto/POSIX/exp.al +13 -0
  615. data/Slic3r/Linux/lib/std/auto/POSIX/fabs.al +13 -0
  616. data/Slic3r/Linux/lib/std/auto/POSIX/fclose.al +12 -0
  617. data/Slic3r/Linux/lib/std/auto/POSIX/fcntl.al +13 -0
  618. data/Slic3r/Linux/lib/std/auto/POSIX/fdopen.al +12 -0
  619. data/Slic3r/Linux/lib/std/auto/POSIX/feof.al +12 -0
  620. data/Slic3r/Linux/lib/std/auto/POSIX/ferror.al +12 -0
  621. data/Slic3r/Linux/lib/std/auto/POSIX/fflush.al +12 -0
  622. data/Slic3r/Linux/lib/std/auto/POSIX/fgetc.al +12 -0
  623. data/Slic3r/Linux/lib/std/auto/POSIX/fgetpos.al +12 -0
  624. data/Slic3r/Linux/lib/std/auto/POSIX/fgets.al +12 -0
  625. data/Slic3r/Linux/lib/std/auto/POSIX/fileno.al +12 -0
  626. data/Slic3r/Linux/lib/std/auto/POSIX/fopen.al +12 -0
  627. data/Slic3r/Linux/lib/std/auto/POSIX/fork.al +13 -0
  628. data/Slic3r/Linux/lib/std/auto/POSIX/fprintf.al +12 -0
  629. data/Slic3r/Linux/lib/std/auto/POSIX/fputc.al +12 -0
  630. data/Slic3r/Linux/lib/std/auto/POSIX/fputs.al +12 -0
  631. data/Slic3r/Linux/lib/std/auto/POSIX/fread.al +12 -0
  632. data/Slic3r/Linux/lib/std/auto/POSIX/free.al +12 -0
  633. data/Slic3r/Linux/lib/std/auto/POSIX/freopen.al +12 -0
  634. data/Slic3r/Linux/lib/std/auto/POSIX/fscanf.al +12 -0
  635. data/Slic3r/Linux/lib/std/auto/POSIX/fseek.al +12 -0
  636. data/Slic3r/Linux/lib/std/auto/POSIX/fsetpos.al +12 -0
  637. data/Slic3r/Linux/lib/std/auto/POSIX/fstat.al +17 -0
  638. data/Slic3r/Linux/lib/std/auto/POSIX/fsync.al +12 -0
  639. data/Slic3r/Linux/lib/std/auto/POSIX/ftell.al +12 -0
  640. data/Slic3r/Linux/lib/std/auto/POSIX/fwrite.al +12 -0
  641. data/Slic3r/Linux/lib/std/auto/POSIX/getc.al +13 -0
  642. data/Slic3r/Linux/lib/std/auto/POSIX/getchar.al +13 -0
  643. data/Slic3r/Linux/lib/std/auto/POSIX/getegid.al +13 -0
  644. data/Slic3r/Linux/lib/std/auto/POSIX/getenv.al +13 -0
  645. data/Slic3r/Linux/lib/std/auto/POSIX/geteuid.al +13 -0
  646. data/Slic3r/Linux/lib/std/auto/POSIX/getgid.al +13 -0
  647. data/Slic3r/Linux/lib/std/auto/POSIX/getgrgid.al +13 -0
  648. data/Slic3r/Linux/lib/std/auto/POSIX/getgrnam.al +13 -0
  649. data/Slic3r/Linux/lib/std/auto/POSIX/getgroups.al +14 -0
  650. data/Slic3r/Linux/lib/std/auto/POSIX/getlogin.al +13 -0
  651. data/Slic3r/Linux/lib/std/auto/POSIX/getpgrp.al +13 -0
  652. data/Slic3r/Linux/lib/std/auto/POSIX/getpid.al +13 -0
  653. data/Slic3r/Linux/lib/std/auto/POSIX/getppid.al +13 -0
  654. data/Slic3r/Linux/lib/std/auto/POSIX/getpwnam.al +13 -0
  655. data/Slic3r/Linux/lib/std/auto/POSIX/getpwuid.al +13 -0
  656. data/Slic3r/Linux/lib/std/auto/POSIX/gets.al +13 -0
  657. data/Slic3r/Linux/lib/std/auto/POSIX/getuid.al +13 -0
  658. data/Slic3r/Linux/lib/std/auto/POSIX/gmtime.al +13 -0
  659. data/Slic3r/Linux/lib/std/auto/POSIX/isatty.al +13 -0
  660. data/Slic3r/Linux/lib/std/auto/POSIX/kill.al +13 -0
  661. data/Slic3r/Linux/lib/std/auto/POSIX/labs.al +12 -0
  662. data/Slic3r/Linux/lib/std/auto/POSIX/ldiv.al +12 -0
  663. data/Slic3r/Linux/lib/std/auto/POSIX/link.al +13 -0
  664. data/Slic3r/Linux/lib/std/auto/POSIX/load_imports.al +231 -0
  665. data/Slic3r/Linux/lib/std/auto/POSIX/localtime.al +13 -0
  666. data/Slic3r/Linux/lib/std/auto/POSIX/log.al +13 -0
  667. data/Slic3r/Linux/lib/std/auto/POSIX/longjmp.al +12 -0
  668. data/Slic3r/Linux/lib/std/auto/POSIX/malloc.al +12 -0
  669. data/Slic3r/Linux/lib/std/auto/POSIX/memchr.al +12 -0
  670. data/Slic3r/Linux/lib/std/auto/POSIX/memcmp.al +12 -0
  671. data/Slic3r/Linux/lib/std/auto/POSIX/memcpy.al +12 -0
  672. data/Slic3r/Linux/lib/std/auto/POSIX/memmove.al +12 -0
  673. data/Slic3r/Linux/lib/std/auto/POSIX/memset.al +12 -0
  674. data/Slic3r/Linux/lib/std/auto/POSIX/mkdir.al +13 -0
  675. data/Slic3r/Linux/lib/std/auto/POSIX/offsetof.al +12 -0
  676. data/Slic3r/Linux/lib/std/auto/POSIX/opendir.al +16 -0
  677. data/Slic3r/Linux/lib/std/auto/POSIX/perror.al +13 -0
  678. data/Slic3r/Linux/lib/std/auto/POSIX/pow.al +13 -0
  679. data/Slic3r/Linux/lib/std/auto/POSIX/printf.al +13 -0
  680. data/Slic3r/Linux/lib/std/auto/POSIX/putc.al +12 -0
  681. data/Slic3r/Linux/lib/std/auto/POSIX/putchar.al +12 -0
  682. data/Slic3r/Linux/lib/std/auto/POSIX/puts.al +12 -0
  683. data/Slic3r/Linux/lib/std/auto/POSIX/qsort.al +12 -0
  684. data/Slic3r/Linux/lib/std/auto/POSIX/raise.al +13 -0
  685. data/Slic3r/Linux/lib/std/auto/POSIX/rand.al +12 -0
  686. data/Slic3r/Linux/lib/std/auto/POSIX/readdir.al +13 -0
  687. data/Slic3r/Linux/lib/std/auto/POSIX/realloc.al +12 -0
  688. data/Slic3r/Linux/lib/std/auto/POSIX/redef.al +13 -0
  689. data/Slic3r/Linux/lib/std/auto/POSIX/remove.al +13 -0
  690. data/Slic3r/Linux/lib/std/auto/POSIX/rename.al +13 -0
  691. data/Slic3r/Linux/lib/std/auto/POSIX/rewind.al +13 -0
  692. data/Slic3r/Linux/lib/std/auto/POSIX/rewinddir.al +13 -0
  693. data/Slic3r/Linux/lib/std/auto/POSIX/rmdir.al +13 -0
  694. data/Slic3r/Linux/lib/std/auto/POSIX/scanf.al +12 -0
  695. data/Slic3r/Linux/lib/std/auto/POSIX/setbuf.al +12 -0
  696. data/Slic3r/Linux/lib/std/auto/POSIX/setjmp.al +12 -0
  697. data/Slic3r/Linux/lib/std/auto/POSIX/setvbuf.al +12 -0
  698. data/Slic3r/Linux/lib/std/auto/POSIX/siglongjmp.al +12 -0
  699. data/Slic3r/Linux/lib/std/auto/POSIX/sigsetjmp.al +12 -0
  700. data/Slic3r/Linux/lib/std/auto/POSIX/sin.al +13 -0
  701. data/Slic3r/Linux/lib/std/auto/POSIX/sleep.al +13 -0
  702. data/Slic3r/Linux/lib/std/auto/POSIX/sprintf.al +13 -0
  703. data/Slic3r/Linux/lib/std/auto/POSIX/sqrt.al +13 -0
  704. data/Slic3r/Linux/lib/std/auto/POSIX/srand.al +12 -0
  705. data/Slic3r/Linux/lib/std/auto/POSIX/sscanf.al +12 -0
  706. data/Slic3r/Linux/lib/std/auto/POSIX/stat.al +13 -0
  707. data/Slic3r/Linux/lib/std/auto/POSIX/strcat.al +12 -0
  708. data/Slic3r/Linux/lib/std/auto/POSIX/strchr.al +12 -0
  709. data/Slic3r/Linux/lib/std/auto/POSIX/strcmp.al +12 -0
  710. data/Slic3r/Linux/lib/std/auto/POSIX/strcpy.al +12 -0
  711. data/Slic3r/Linux/lib/std/auto/POSIX/strcspn.al +12 -0
  712. data/Slic3r/Linux/lib/std/auto/POSIX/strerror.al +14 -0
  713. data/Slic3r/Linux/lib/std/auto/POSIX/strlen.al +12 -0
  714. data/Slic3r/Linux/lib/std/auto/POSIX/strncat.al +12 -0
  715. data/Slic3r/Linux/lib/std/auto/POSIX/strncmp.al +12 -0
  716. data/Slic3r/Linux/lib/std/auto/POSIX/strncpy.al +12 -0
  717. data/Slic3r/Linux/lib/std/auto/POSIX/strpbrk.al +12 -0
  718. data/Slic3r/Linux/lib/std/auto/POSIX/strrchr.al +12 -0
  719. data/Slic3r/Linux/lib/std/auto/POSIX/strspn.al +12 -0
  720. data/Slic3r/Linux/lib/std/auto/POSIX/strstr.al +13 -0
  721. data/Slic3r/Linux/lib/std/auto/POSIX/strtok.al +12 -0
  722. data/Slic3r/Linux/lib/std/auto/POSIX/system.al +13 -0
  723. data/Slic3r/Linux/lib/std/auto/POSIX/time.al +13 -0
  724. data/Slic3r/Linux/lib/std/auto/POSIX/tmpfile.al +12 -0
  725. data/Slic3r/Linux/lib/std/auto/POSIX/tolower.al +13 -0
  726. data/Slic3r/Linux/lib/std/auto/POSIX/toupper.al +13 -0
  727. data/Slic3r/Linux/lib/std/auto/POSIX/umask.al +13 -0
  728. data/Slic3r/Linux/lib/std/auto/POSIX/ungetc.al +12 -0
  729. data/Slic3r/Linux/lib/std/auto/POSIX/unimpl.al +14 -0
  730. data/Slic3r/Linux/lib/std/auto/POSIX/unlink.al +13 -0
  731. data/Slic3r/Linux/lib/std/auto/POSIX/usage.al +13 -0
  732. data/Slic3r/Linux/lib/std/auto/POSIX/utime.al +13 -0
  733. data/Slic3r/Linux/lib/std/auto/POSIX/vfprintf.al +12 -0
  734. data/Slic3r/Linux/lib/std/auto/POSIX/vprintf.al +12 -0
  735. data/Slic3r/Linux/lib/std/auto/POSIX/vsprintf.al +12 -0
  736. data/Slic3r/Linux/lib/std/auto/POSIX/wait.al +13 -0
  737. data/Slic3r/Linux/lib/std/auto/POSIX/waitpid.al +13 -0
  738. data/Slic3r/Linux/lib/std/auto/Params/Validate/XS/XS.so +0 -0
  739. data/Slic3r/Linux/lib/std/auto/PerlIO/encoding/encoding.so +0 -0
  740. data/Slic3r/Linux/lib/std/auto/PerlIO/scalar/scalar.so +0 -0
  741. data/Slic3r/Linux/lib/std/auto/PerlIO/via/via.so +0 -0
  742. data/Slic3r/Linux/lib/std/auto/Slic3r/XS/XS.so +0 -0
  743. data/Slic3r/Linux/lib/std/auto/Socket/Socket.so +0 -0
  744. data/Slic3r/Linux/lib/std/auto/Storable/Storable.so +0 -0
  745. data/Slic3r/Linux/lib/std/auto/Tie/Hash/NamedCapture/NamedCapture.so +0 -0
  746. data/Slic3r/Linux/lib/std/auto/Time/HiRes/HiRes.so +0 -0
  747. data/Slic3r/Linux/lib/std/auto/Wx/DND/DND.so +0 -0
  748. data/Slic3r/Linux/lib/std/auto/Wx/GLCanvas/GLCanvas.so +0 -0
  749. data/Slic3r/Linux/lib/std/auto/Wx/Grid/Grid.so +0 -0
  750. data/Slic3r/Linux/lib/std/auto/Wx/Html/Html.so +0 -0
  751. data/Slic3r/Linux/lib/std/auto/Wx/Print/Print.so +0 -0
  752. data/Slic3r/Linux/lib/std/auto/Wx/Wx.so +0 -0
  753. data/Slic3r/Linux/lib/std/auto/XML/SAX/ExpatXS/ExpatXS.so +0 -0
  754. data/Slic3r/Linux/lib/std/auto/attributes/attributes.so +0 -0
  755. data/Slic3r/Linux/lib/std/auto/mro/mro.so +0 -0
  756. data/Slic3r/Linux/lib/std/auto/re/re.so +0 -0
  757. data/Slic3r/Linux/lib/std/auto/threads/shared/shared.so +0 -0
  758. data/Slic3r/Linux/lib/std/auto/threads/threads.so +0 -0
  759. data/Slic3r/Linux/lib/std/base.pm +265 -0
  760. data/Slic3r/Linux/lib/std/bytes.pm +100 -0
  761. data/Slic3r/Linux/lib/std/bytes_heavy.pl +40 -0
  762. data/Slic3r/Linux/lib/std/constant.pm +397 -0
  763. data/Slic3r/Linux/lib/std/constant/defer.pm +441 -0
  764. data/Slic3r/Linux/lib/std/encoding.pm +669 -0
  765. data/Slic3r/Linux/lib/std/encoding/warnings.pm +239 -0
  766. data/Slic3r/Linux/lib/std/feature.pm +249 -0
  767. data/Slic3r/Linux/lib/std/filetest.pm +117 -0
  768. data/Slic3r/Linux/lib/std/integer.pm +93 -0
  769. data/Slic3r/Linux/lib/std/less.pm +158 -0
  770. data/Slic3r/Linux/lib/std/mro.pm +363 -0
  771. data/Slic3r/Linux/lib/std/overload.pm +1701 -0
  772. data/Slic3r/Linux/lib/std/parent.pm +136 -0
  773. data/Slic3r/Linux/lib/std/re.pm +604 -0
  774. data/Slic3r/Linux/lib/std/slic3r.pl +491 -0
  775. data/Slic3r/Linux/lib/std/sort.pm +196 -0
  776. data/Slic3r/Linux/lib/std/strictures.pm +296 -0
  777. data/Slic3r/Linux/lib/std/threads.pm +1115 -0
  778. data/Slic3r/Linux/lib/std/threads/shared.pm +616 -0
  779. data/Slic3r/Linux/lib/std/unicore/Heavy.pl +3261 -0
  780. data/Slic3r/Linux/lib/std/unicore/To/Age.pl +1036 -0
  781. data/Slic3r/Linux/lib/std/unicore/To/Bc.pl +555 -0
  782. data/Slic3r/Linux/lib/std/unicore/To/Bmg.pl +375 -0
  783. data/Slic3r/Linux/lib/std/unicore/To/Digit.pl +433 -0
  784. data/Slic3r/Linux/lib/std/unicore/To/Dt.pl +759 -0
  785. data/Slic3r/Linux/lib/std/unicore/To/Ea.pl +245 -0
  786. data/Slic3r/Linux/lib/std/unicore/To/Fold.pl +1177 -0
  787. data/Slic3r/Linux/lib/std/unicore/To/GCB.pl +1177 -0
  788. data/Slic3r/Linux/lib/std/unicore/To/Gc.pl +2639 -0
  789. data/Slic3r/Linux/lib/std/unicore/To/Hst.pl +822 -0
  790. data/Slic3r/Linux/lib/std/unicore/To/Jg.pl +144 -0
  791. data/Slic3r/Linux/lib/std/unicore/To/Jt.pl +292 -0
  792. data/Slic3r/Linux/lib/std/unicore/To/Lb.pl +2195 -0
  793. data/Slic3r/Linux/lib/std/unicore/To/Lower.pl +1061 -0
  794. data/Slic3r/Linux/lib/std/unicore/To/NFCQC.pl +126 -0
  795. data/Slic3r/Linux/lib/std/unicore/To/NFDQC.pl +245 -0
  796. data/Slic3r/Linux/lib/std/unicore/To/NFKCCF.pl +9815 -0
  797. data/Slic3r/Linux/lib/std/unicore/To/NFKCQC.pl +265 -0
  798. data/Slic3r/Linux/lib/std/unicore/To/NFKDQC.pl +367 -0
  799. data/Slic3r/Linux/lib/std/unicore/To/Na1.pl +1996 -0
  800. data/Slic3r/Linux/lib/std/unicore/To/Nt.pl +198 -0
  801. data/Slic3r/Linux/lib/std/unicore/To/Nv.pl +1157 -0
  802. data/Slic3r/Linux/lib/std/unicore/To/SB.pl +1958 -0
  803. data/Slic3r/Linux/lib/std/unicore/To/Sc.pl +702 -0
  804. data/Slic3r/Linux/lib/std/unicore/To/Title.pl +1117 -0
  805. data/Slic3r/Linux/lib/std/unicore/To/Upper.pl +1144 -0
  806. data/Slic3r/Linux/lib/std/unicore/To/WB.pl +691 -0
  807. data/Slic3r/Linux/lib/std/unicore/To/_slc.pl +46 -0
  808. data/Slic3r/Linux/lib/std/unicore/To/_stc.pl +45 -0
  809. data/Slic3r/Linux/lib/std/unicore/To/_suc.pl +45 -0
  810. data/Slic3r/Linux/lib/std/unicore/lib/AHex/N.pl +16 -0
  811. data/Slic3r/Linux/lib/std/unicore/lib/AHex/Y.pl +15 -0
  812. data/Slic3r/Linux/lib/std/unicore/lib/Age/1_1.pl +300 -0
  813. data/Slic3r/Linux/lib/std/unicore/lib/Age/2_0.pl +41 -0
  814. data/Slic3r/Linux/lib/std/unicore/lib/Age/2_1.pl +14 -0
  815. data/Slic3r/Linux/lib/std/unicore/lib/Age/3_0.pl +133 -0
  816. data/Slic3r/Linux/lib/std/unicore/lib/Age/3_1.pl +48 -0
  817. data/Slic3r/Linux/lib/std/unicore/lib/Age/3_2.pl +71 -0
  818. data/Slic3r/Linux/lib/std/unicore/lib/Age/4_0.pl +89 -0
  819. data/Slic3r/Linux/lib/std/unicore/lib/Age/4_1.pl +98 -0
  820. data/Slic3r/Linux/lib/std/unicore/lib/Age/5_0.pl +47 -0
  821. data/Slic3r/Linux/lib/std/unicore/lib/Age/5_1.pl +101 -0
  822. data/Slic3r/Linux/lib/std/unicore/lib/Age/5_2.pl +102 -0
  823. data/Slic3r/Linux/lib/std/unicore/lib/Age/6_0.pl +118 -0
  824. data/Slic3r/Linux/lib/std/unicore/lib/Age/Unassign.pl +522 -0
  825. data/Slic3r/Linux/lib/std/unicore/lib/Alpha/N.pl +499 -0
  826. data/Slic3r/Linux/lib/std/unicore/lib/Alpha/Y.pl +498 -0
  827. data/Slic3r/Linux/lib/std/unicore/lib/Bc/AL.pl +30 -0
  828. data/Slic3r/Linux/lib/std/unicore/lib/Bc/AN.pl +17 -0
  829. data/Slic3r/Linux/lib/std/unicore/lib/Bc/B.pl +17 -0
  830. data/Slic3r/Linux/lib/std/unicore/lib/Bc/BN.pl +41 -0
  831. data/Slic3r/Linux/lib/std/unicore/lib/Bc/CS.pl +25 -0
  832. data/Slic3r/Linux/lib/std/unicore/lib/Bc/EN.pl +23 -0
  833. data/Slic3r/Linux/lib/std/unicore/lib/Bc/ES.pl +21 -0
  834. data/Slic3r/Linux/lib/std/unicore/lib/Bc/ET.pl +33 -0
  835. data/Slic3r/Linux/lib/std/unicore/lib/Bc/L.pl +358 -0
  836. data/Slic3r/Linux/lib/std/unicore/lib/Bc/LRE.pl +13 -0
  837. data/Slic3r/Linux/lib/std/unicore/lib/Bc/LRO.pl +13 -0
  838. data/Slic3r/Linux/lib/std/unicore/lib/Bc/NSM.pl +211 -0
  839. data/Slic3r/Linux/lib/std/unicore/lib/Bc/ON.pl +195 -0
  840. data/Slic3r/Linux/lib/std/unicore/lib/Bc/PDF.pl +13 -0
  841. data/Slic3r/Linux/lib/std/unicore/lib/Bc/R.pl +40 -0
  842. data/Slic3r/Linux/lib/std/unicore/lib/Bc/RLE.pl +13 -0
  843. data/Slic3r/Linux/lib/std/unicore/lib/Bc/RLO.pl +13 -0
  844. data/Slic3r/Linux/lib/std/unicore/lib/Bc/S.pl +15 -0
  845. data/Slic3r/Linux/lib/std/unicore/lib/Bc/WS.pl +20 -0
  846. data/Slic3r/Linux/lib/std/unicore/lib/BidiC/N.pl +15 -0
  847. data/Slic3r/Linux/lib/std/unicore/lib/BidiC/Y.pl +14 -0
  848. data/Slic3r/Linux/lib/std/unicore/lib/BidiM/N.pl +124 -0
  849. data/Slic3r/Linux/lib/std/unicore/lib/BidiM/Y.pl +123 -0
  850. data/Slic3r/Linux/lib/std/unicore/lib/Blk/ASCII.pl +13 -0
  851. data/Slic3r/Linux/lib/std/unicore/lib/Blk/AegeanNu.pl +13 -0
  852. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Alchemic.pl +13 -0
  853. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Alphabet.pl +13 -0
  854. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Ancient2.pl +13 -0
  855. data/Slic3r/Linux/lib/std/unicore/lib/Blk/AncientG.pl +13 -0
  856. data/Slic3r/Linux/lib/std/unicore/lib/Blk/AncientS.pl +13 -0
  857. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Arabic.pl +13 -0
  858. data/Slic3r/Linux/lib/std/unicore/lib/Blk/ArabicP2.pl +13 -0
  859. data/Slic3r/Linux/lib/std/unicore/lib/Blk/ArabicPr.pl +13 -0
  860. data/Slic3r/Linux/lib/std/unicore/lib/Blk/ArabicSu.pl +13 -0
  861. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Armenian.pl +13 -0
  862. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Arrows.pl +13 -0
  863. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Avestan.pl +13 -0
  864. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Balinese.pl +13 -0
  865. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Bamum.pl +13 -0
  866. data/Slic3r/Linux/lib/std/unicore/lib/Blk/BamumSup.pl +13 -0
  867. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Batak.pl +13 -0
  868. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Bengali.pl +13 -0
  869. data/Slic3r/Linux/lib/std/unicore/lib/Blk/BlockEle.pl +13 -0
  870. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Bopomof2.pl +13 -0
  871. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Bopomofo.pl +13 -0
  872. data/Slic3r/Linux/lib/std/unicore/lib/Blk/BoxDrawi.pl +13 -0
  873. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Brahmi.pl +13 -0
  874. data/Slic3r/Linux/lib/std/unicore/lib/Blk/BrailleP.pl +13 -0
  875. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Buginese.pl +13 -0
  876. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Buhid.pl +13 -0
  877. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Byzantin.pl +13 -0
  878. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKComp2.pl +13 -0
  879. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKComp3.pl +13 -0
  880. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKComp4.pl +13 -0
  881. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKCompa.pl +13 -0
  882. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKRadic.pl +13 -0
  883. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKStrok.pl +13 -0
  884. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKSymbo.pl +13 -0
  885. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKUnif2.pl +13 -0
  886. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKUnif3.pl +13 -0
  887. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKUnif4.pl +13 -0
  888. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKUnif5.pl +13 -0
  889. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CJKUnifi.pl +13 -0
  890. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Canadian.pl +13 -0
  891. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Carian.pl +13 -0
  892. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Cham.pl +13 -0
  893. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Cherokee.pl +13 -0
  894. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Combini2.pl +13 -0
  895. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Combini3.pl +13 -0
  896. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Combini4.pl +13 -0
  897. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Combinin.pl +13 -0
  898. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CommonIn.pl +13 -0
  899. data/Slic3r/Linux/lib/std/unicore/lib/Blk/ControlP.pl +13 -0
  900. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Coptic.pl +13 -0
  901. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Counting.pl +13 -0
  902. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Cuneifo2.pl +13 -0
  903. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Cuneifor.pl +13 -0
  904. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Currency.pl +13 -0
  905. data/Slic3r/Linux/lib/std/unicore/lib/Blk/CypriotS.pl +13 -0
  906. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Cyrilli2.pl +13 -0
  907. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Cyrilli3.pl +13 -0
  908. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Cyrilli4.pl +13 -0
  909. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Cyrillic.pl +13 -0
  910. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Deseret.pl +13 -0
  911. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Devanag2.pl +13 -0
  912. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Devanaga.pl +13 -0
  913. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Dingbats.pl +13 -0
  914. data/Slic3r/Linux/lib/std/unicore/lib/Blk/DominoTi.pl +13 -0
  915. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Egyptian.pl +13 -0
  916. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Emoticon.pl +13 -0
  917. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Enclose2.pl +13 -0
  918. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Enclose3.pl +13 -0
  919. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Enclose4.pl +13 -0
  920. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Enclosed.pl +13 -0
  921. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Ethiopi2.pl +13 -0
  922. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Ethiopi3.pl +13 -0
  923. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Ethiopi4.pl +13 -0
  924. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Ethiopic.pl +13 -0
  925. data/Slic3r/Linux/lib/std/unicore/lib/Blk/GeneralP.pl +13 -0
  926. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Geometri.pl +13 -0
  927. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Georgia2.pl +13 -0
  928. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Georgian.pl +13 -0
  929. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Glagolit.pl +13 -0
  930. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Gothic.pl +13 -0
  931. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Greek.pl +13 -0
  932. data/Slic3r/Linux/lib/std/unicore/lib/Blk/GreekExt.pl +13 -0
  933. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Gujarati.pl +13 -0
  934. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Gurmukhi.pl +13 -0
  935. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Halfwidt.pl +13 -0
  936. data/Slic3r/Linux/lib/std/unicore/lib/Blk/HangulCo.pl +13 -0
  937. data/Slic3r/Linux/lib/std/unicore/lib/Blk/HangulJ2.pl +13 -0
  938. data/Slic3r/Linux/lib/std/unicore/lib/Blk/HangulJ3.pl +13 -0
  939. data/Slic3r/Linux/lib/std/unicore/lib/Blk/HangulJa.pl +13 -0
  940. data/Slic3r/Linux/lib/std/unicore/lib/Blk/HangulSy.pl +13 -0
  941. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Hanunoo.pl +13 -0
  942. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Hebrew.pl +13 -0
  943. data/Slic3r/Linux/lib/std/unicore/lib/Blk/HighPriv.pl +13 -0
  944. data/Slic3r/Linux/lib/std/unicore/lib/Blk/HighSurr.pl +13 -0
  945. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Hiragana.pl +13 -0
  946. data/Slic3r/Linux/lib/std/unicore/lib/Blk/IPAExten.pl +13 -0
  947. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Ideograp.pl +13 -0
  948. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Imperial.pl +13 -0
  949. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Inscrip2.pl +13 -0
  950. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Inscript.pl +13 -0
  951. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Javanese.pl +13 -0
  952. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Kaithi.pl +13 -0
  953. data/Slic3r/Linux/lib/std/unicore/lib/Blk/KanaSupp.pl +13 -0
  954. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Kanbun.pl +13 -0
  955. data/Slic3r/Linux/lib/std/unicore/lib/Blk/KangxiRa.pl +13 -0
  956. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Kannada.pl +13 -0
  957. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Katakan2.pl +13 -0
  958. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Katakana.pl +13 -0
  959. data/Slic3r/Linux/lib/std/unicore/lib/Blk/KayahLi.pl +13 -0
  960. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Kharosht.pl +13 -0
  961. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Khmer.pl +13 -0
  962. data/Slic3r/Linux/lib/std/unicore/lib/Blk/KhmerSym.pl +13 -0
  963. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Lao.pl +13 -0
  964. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Latin1.pl +13 -0
  965. data/Slic3r/Linux/lib/std/unicore/lib/Blk/LatinEx2.pl +13 -0
  966. data/Slic3r/Linux/lib/std/unicore/lib/Blk/LatinEx3.pl +13 -0
  967. data/Slic3r/Linux/lib/std/unicore/lib/Blk/LatinEx4.pl +13 -0
  968. data/Slic3r/Linux/lib/std/unicore/lib/Blk/LatinEx5.pl +13 -0
  969. data/Slic3r/Linux/lib/std/unicore/lib/Blk/LatinExt.pl +13 -0
  970. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Lepcha.pl +13 -0
  971. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Letterli.pl +13 -0
  972. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Limbu.pl +13 -0
  973. data/Slic3r/Linux/lib/std/unicore/lib/Blk/LinearBI.pl +13 -0
  974. data/Slic3r/Linux/lib/std/unicore/lib/Blk/LinearBS.pl +13 -0
  975. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Lisu.pl +13 -0
  976. data/Slic3r/Linux/lib/std/unicore/lib/Blk/LowSurro.pl +13 -0
  977. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Lycian.pl +13 -0
  978. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Lydian.pl +13 -0
  979. data/Slic3r/Linux/lib/std/unicore/lib/Blk/MahjongT.pl +13 -0
  980. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Malayala.pl +13 -0
  981. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Mandaic.pl +13 -0
  982. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Mathema2.pl +13 -0
  983. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Mathemat.pl +13 -0
  984. data/Slic3r/Linux/lib/std/unicore/lib/Blk/MeeteiMa.pl +13 -0
  985. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Miscell2.pl +13 -0
  986. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Miscell3.pl +13 -0
  987. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Miscell4.pl +13 -0
  988. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Miscell5.pl +13 -0
  989. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Miscell6.pl +13 -0
  990. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Miscella.pl +13 -0
  991. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Modifier.pl +13 -0
  992. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Mongolia.pl +13 -0
  993. data/Slic3r/Linux/lib/std/unicore/lib/Blk/MusicalS.pl +13 -0
  994. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Myanmar.pl +13 -0
  995. data/Slic3r/Linux/lib/std/unicore/lib/Blk/MyanmarE.pl +13 -0
  996. data/Slic3r/Linux/lib/std/unicore/lib/Blk/NKo.pl +13 -0
  997. data/Slic3r/Linux/lib/std/unicore/lib/Blk/NewTaiLu.pl +13 -0
  998. data/Slic3r/Linux/lib/std/unicore/lib/Blk/NoBlock.pl +45 -0
  999. data/Slic3r/Linux/lib/std/unicore/lib/Blk/NumberFo.pl +13 -0
  1000. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Ogham.pl +13 -0
  1001. data/Slic3r/Linux/lib/std/unicore/lib/Blk/OlChiki.pl +13 -0
  1002. data/Slic3r/Linux/lib/std/unicore/lib/Blk/OldItali.pl +13 -0
  1003. data/Slic3r/Linux/lib/std/unicore/lib/Blk/OldPersi.pl +13 -0
  1004. data/Slic3r/Linux/lib/std/unicore/lib/Blk/OldSouth.pl +13 -0
  1005. data/Slic3r/Linux/lib/std/unicore/lib/Blk/OldTurki.pl +13 -0
  1006. data/Slic3r/Linux/lib/std/unicore/lib/Blk/OpticalC.pl +13 -0
  1007. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Oriya.pl +13 -0
  1008. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Osmanya.pl +13 -0
  1009. data/Slic3r/Linux/lib/std/unicore/lib/Blk/PhagsPa.pl +13 -0
  1010. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Phaistos.pl +13 -0
  1011. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Phoenici.pl +13 -0
  1012. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Phoneti2.pl +13 -0
  1013. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Phonetic.pl +13 -0
  1014. data/Slic3r/Linux/lib/std/unicore/lib/Blk/PlayingC.pl +13 -0
  1015. data/Slic3r/Linux/lib/std/unicore/lib/Blk/PrivateU.pl +13 -0
  1016. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Rejang.pl +13 -0
  1017. data/Slic3r/Linux/lib/std/unicore/lib/Blk/RumiNume.pl +13 -0
  1018. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Runic.pl +13 -0
  1019. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Samarita.pl +13 -0
  1020. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Saurasht.pl +13 -0
  1021. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Shavian.pl +13 -0
  1022. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Sinhala.pl +13 -0
  1023. data/Slic3r/Linux/lib/std/unicore/lib/Blk/SmallFor.pl +13 -0
  1024. data/Slic3r/Linux/lib/std/unicore/lib/Blk/SpacingM.pl +13 -0
  1025. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Specials.pl +13 -0
  1026. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Sundanes.pl +13 -0
  1027. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Superscr.pl +13 -0
  1028. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Supplem2.pl +13 -0
  1029. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Supplem3.pl +13 -0
  1030. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Supplem4.pl +13 -0
  1031. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Supplem5.pl +13 -0
  1032. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Supplem6.pl +13 -0
  1033. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Suppleme.pl +13 -0
  1034. data/Slic3r/Linux/lib/std/unicore/lib/Blk/SylotiNa.pl +13 -0
  1035. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Syriac.pl +13 -0
  1036. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Tagalog.pl +13 -0
  1037. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Tagbanwa.pl +13 -0
  1038. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Tags.pl +13 -0
  1039. data/Slic3r/Linux/lib/std/unicore/lib/Blk/TaiLe.pl +13 -0
  1040. data/Slic3r/Linux/lib/std/unicore/lib/Blk/TaiTham.pl +13 -0
  1041. data/Slic3r/Linux/lib/std/unicore/lib/Blk/TaiViet.pl +13 -0
  1042. data/Slic3r/Linux/lib/std/unicore/lib/Blk/TaiXuanJ.pl +13 -0
  1043. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Tamil.pl +13 -0
  1044. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Telugu.pl +13 -0
  1045. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Thaana.pl +13 -0
  1046. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Thai.pl +13 -0
  1047. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Tibetan.pl +13 -0
  1048. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Tifinagh.pl +13 -0
  1049. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Transpor.pl +13 -0
  1050. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Ugaritic.pl +13 -0
  1051. data/Slic3r/Linux/lib/std/unicore/lib/Blk/UnifiedC.pl +13 -0
  1052. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Vai.pl +13 -0
  1053. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Variati2.pl +13 -0
  1054. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Variatio.pl +13 -0
  1055. data/Slic3r/Linux/lib/std/unicore/lib/Blk/VedicExt.pl +13 -0
  1056. data/Slic3r/Linux/lib/std/unicore/lib/Blk/Vertical.pl +13 -0
  1057. data/Slic3r/Linux/lib/std/unicore/lib/Blk/YiRadica.pl +13 -0
  1058. data/Slic3r/Linux/lib/std/unicore/lib/Blk/YiSyllab.pl +13 -0
  1059. data/Slic3r/Linux/lib/std/unicore/lib/Blk/YijingHe.pl +13 -0
  1060. data/Slic3r/Linux/lib/std/unicore/lib/CE/N.pl +46 -0
  1061. data/Slic3r/Linux/lib/std/unicore/lib/CE/Y.pl +45 -0
  1062. data/Slic3r/Linux/lib/std/unicore/lib/CI/N.pl +290 -0
  1063. data/Slic3r/Linux/lib/std/unicore/lib/CI/Y.pl +289 -0
  1064. data/Slic3r/Linux/lib/std/unicore/lib/CWCF/N.pl +590 -0
  1065. data/Slic3r/Linux/lib/std/unicore/lib/CWCF/Y.pl +589 -0
  1066. data/Slic3r/Linux/lib/std/unicore/lib/CWCM/N.pl +112 -0
  1067. data/Slic3r/Linux/lib/std/unicore/lib/CWCM/Y.pl +111 -0
  1068. data/Slic3r/Linux/lib/std/unicore/lib/CWKCF/N.pl +765 -0
  1069. data/Slic3r/Linux/lib/std/unicore/lib/CWKCF/Y.pl +764 -0
  1070. data/Slic3r/Linux/lib/std/unicore/lib/CWL/N.pl +579 -0
  1071. data/Slic3r/Linux/lib/std/unicore/lib/CWL/Y.pl +578 -0
  1072. data/Slic3r/Linux/lib/std/unicore/lib/CWT/N.pl +596 -0
  1073. data/Slic3r/Linux/lib/std/unicore/lib/CWT/Y.pl +595 -0
  1074. data/Slic3r/Linux/lib/std/unicore/lib/CWU/N.pl +595 -0
  1075. data/Slic3r/Linux/lib/std/unicore/lib/CWU/Y.pl +594 -0
  1076. data/Slic3r/Linux/lib/std/unicore/lib/Cased/N.pl +125 -0
  1077. data/Slic3r/Linux/lib/std/unicore/lib/Cased/Y.pl +124 -0
  1078. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/10.pl +13 -0
  1079. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/103.pl +13 -0
  1080. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/107.pl +13 -0
  1081. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/11.pl +13 -0
  1082. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/118.pl +13 -0
  1083. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/12.pl +13 -0
  1084. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/122.pl +13 -0
  1085. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/129.pl +13 -0
  1086. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/13.pl +13 -0
  1087. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/130.pl +15 -0
  1088. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/132.pl +13 -0
  1089. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/14.pl +13 -0
  1090. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/15.pl +13 -0
  1091. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/16.pl +13 -0
  1092. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/17.pl +13 -0
  1093. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/18.pl +14 -0
  1094. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/19.pl +13 -0
  1095. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/20.pl +13 -0
  1096. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/21.pl +13 -0
  1097. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/22.pl +13 -0
  1098. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/23.pl +13 -0
  1099. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/24.pl +13 -0
  1100. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/25.pl +13 -0
  1101. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/26.pl +13 -0
  1102. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/27.pl +13 -0
  1103. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/28.pl +13 -0
  1104. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/29.pl +13 -0
  1105. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/30.pl +14 -0
  1106. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/31.pl +14 -0
  1107. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/32.pl +14 -0
  1108. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/33.pl +13 -0
  1109. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/34.pl +13 -0
  1110. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/35.pl +13 -0
  1111. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/36.pl +13 -0
  1112. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/84.pl +13 -0
  1113. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/91.pl +13 -0
  1114. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/A.pl +96 -0
  1115. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/AL.pl +15 -0
  1116. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/AR.pl +16 -0
  1117. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/ATA.pl +13 -0
  1118. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/ATAR.pl +16 -0
  1119. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/ATB.pl +15 -0
  1120. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/ATBL.pl +13 -0
  1121. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/B.pl +71 -0
  1122. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/BL.pl +13 -0
  1123. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/BR.pl +16 -0
  1124. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/DA.pl +15 -0
  1125. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/DB.pl +16 -0
  1126. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/IS.pl +13 -0
  1127. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/KV.pl +13 -0
  1128. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/L.pl +13 -0
  1129. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/NK.pl +24 -0
  1130. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/NR.pl +135 -0
  1131. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/OV.pl +21 -0
  1132. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/R.pl +13 -0
  1133. data/Slic3r/Linux/lib/std/unicore/lib/Ccc/VR.pl +41 -0
  1134. data/Slic3r/Linux/lib/std/unicore/lib/CompEx/N.pl +87 -0
  1135. data/Slic3r/Linux/lib/std/unicore/lib/CompEx/Y.pl +86 -0
  1136. data/Slic3r/Linux/lib/std/unicore/lib/DI/N.pl +28 -0
  1137. data/Slic3r/Linux/lib/std/unicore/lib/DI/Y.pl +27 -0
  1138. data/Slic3r/Linux/lib/std/unicore/lib/Dash/N.pl +32 -0
  1139. data/Slic3r/Linux/lib/std/unicore/lib/Dash/Y.pl +31 -0
  1140. data/Slic3r/Linux/lib/std/unicore/lib/Dep/N.pl +22 -0
  1141. data/Slic3r/Linux/lib/std/unicore/lib/Dep/Y.pl +21 -0
  1142. data/Slic3r/Linux/lib/std/unicore/lib/Dia/N.pl +130 -0
  1143. data/Slic3r/Linux/lib/std/unicore/lib/Dia/Y.pl +129 -0
  1144. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Com.pl +86 -0
  1145. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Enc.pl +20 -0
  1146. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Fin.pl +125 -0
  1147. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Font.pl +46 -0
  1148. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Fra.pl +15 -0
  1149. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Init.pl +87 -0
  1150. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Iso.pl +110 -0
  1151. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Med.pl +66 -0
  1152. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Nar.pl +18 -0
  1153. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Nb.pl +17 -0
  1154. data/Slic3r/Linux/lib/std/unicore/lib/Dt/NonCanon.pl +161 -0
  1155. data/Slic3r/Linux/lib/std/unicore/lib/Dt/None.pl +362 -0
  1156. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Sml.pl +15 -0
  1157. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Sqr.pl +21 -0
  1158. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Sub.pl +16 -0
  1159. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Sup.pl +32 -0
  1160. data/Slic3r/Linux/lib/std/unicore/lib/Dt/Vert.pl +17 -0
  1161. data/Slic3r/Linux/lib/std/unicore/lib/Ea/A.pl +185 -0
  1162. data/Slic3r/Linux/lib/std/unicore/lib/Ea/F.pl +15 -0
  1163. data/Slic3r/Linux/lib/std/unicore/lib/Ea/H.pl +19 -0
  1164. data/Slic3r/Linux/lib/std/unicore/lib/Ea/N.pl +227 -0
  1165. data/Slic3r/Linux/lib/std/unicore/lib/Ea/Na.pl +19 -0
  1166. data/Slic3r/Linux/lib/std/unicore/lib/Ea/W.pl +49 -0
  1167. data/Slic3r/Linux/lib/std/unicore/lib/Ext/N.pl +33 -0
  1168. data/Slic3r/Linux/lib/std/unicore/lib/Ext/Y.pl +32 -0
  1169. data/Slic3r/Linux/lib/std/unicore/lib/GCB/CN.pl +32 -0
  1170. data/Slic3r/Linux/lib/std/unicore/lib/GCB/CR.pl +13 -0
  1171. data/Slic3r/Linux/lib/std/unicore/lib/GCB/EX.pl +227 -0
  1172. data/Slic3r/Linux/lib/std/unicore/lib/GCB/L.pl +14 -0
  1173. data/Slic3r/Linux/lib/std/unicore/lib/GCB/LF.pl +13 -0
  1174. data/Slic3r/Linux/lib/std/unicore/lib/GCB/LV.pl +411 -0
  1175. data/Slic3r/Linux/lib/std/unicore/lib/GCB/LVT.pl +411 -0
  1176. data/Slic3r/Linux/lib/std/unicore/lib/GCB/PP.pl +17 -0
  1177. data/Slic3r/Linux/lib/std/unicore/lib/GCB/SM.pl +125 -0
  1178. data/Slic3r/Linux/lib/std/unicore/lib/GCB/T.pl +14 -0
  1179. data/Slic3r/Linux/lib/std/unicore/lib/GCB/V.pl +14 -0
  1180. data/Slic3r/Linux/lib/std/unicore/lib/GCB/XX.pl +224 -0
  1181. data/Slic3r/Linux/lib/std/unicore/lib/Gc/C.pl +516 -0
  1182. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Cc.pl +14 -0
  1183. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Cf.pl +27 -0
  1184. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Cn.pl +513 -0
  1185. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Co.pl +15 -0
  1186. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Cs.pl +13 -0
  1187. data/Slic3r/Linux/lib/std/unicore/lib/Gc/L.pl +447 -0
  1188. data/Slic3r/Linux/lib/std/unicore/lib/Gc/LC.pl +122 -0
  1189. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Ll.pl +621 -0
  1190. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Lm.pl +61 -0
  1191. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Lo.pl +335 -0
  1192. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Lu.pl +615 -0
  1193. data/Slic3r/Linux/lib/std/unicore/lib/Gc/M.pl +205 -0
  1194. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Mc.pl +125 -0
  1195. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Me.pl +16 -0
  1196. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Mn.pl +215 -0
  1197. data/Slic3r/Linux/lib/std/unicore/lib/Gc/N.pl +95 -0
  1198. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Nl.pl +24 -0
  1199. data/Slic3r/Linux/lib/std/unicore/lib/Gc/No.pl +53 -0
  1200. data/Slic3r/Linux/lib/std/unicore/lib/Gc/P.pl +145 -0
  1201. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Pd.pl +27 -0
  1202. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Pe.pl +82 -0
  1203. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Pf.pl +22 -0
  1204. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Pi.pl +23 -0
  1205. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Po.pl +140 -0
  1206. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Ps.pl +84 -0
  1207. data/Slic3r/Linux/lib/std/unicore/lib/Gc/S.pl +220 -0
  1208. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Sc.pl +28 -0
  1209. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Sk.pl +39 -0
  1210. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Sm.pl +78 -0
  1211. data/Slic3r/Linux/lib/std/unicore/lib/Gc/So.pl +176 -0
  1212. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Z.pl +21 -0
  1213. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Zl.pl +13 -0
  1214. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Zp.pl +13 -0
  1215. data/Slic3r/Linux/lib/std/unicore/lib/Gc/Zs.pl +20 -0
  1216. data/Slic3r/Linux/lib/std/unicore/lib/GrBase/N.pl +609 -0
  1217. data/Slic3r/Linux/lib/std/unicore/lib/GrBase/Y.pl +608 -0
  1218. data/Slic3r/Linux/lib/std/unicore/lib/GrExt/N.pl +228 -0
  1219. data/Slic3r/Linux/lib/std/unicore/lib/Hex/N.pl +19 -0
  1220. data/Slic3r/Linux/lib/std/unicore/lib/Hex/Y.pl +18 -0
  1221. data/Slic3r/Linux/lib/std/unicore/lib/Hst/NA.pl +18 -0
  1222. data/Slic3r/Linux/lib/std/unicore/lib/Hyphen/N.pl +23 -0
  1223. data/Slic3r/Linux/lib/std/unicore/lib/Hyphen/Y.pl +22 -0
  1224. data/Slic3r/Linux/lib/std/unicore/lib/IDC/N.pl +527 -0
  1225. data/Slic3r/Linux/lib/std/unicore/lib/IDC/Y.pl +526 -0
  1226. data/Slic3r/Linux/lib/std/unicore/lib/IDS/N.pl +450 -0
  1227. data/Slic3r/Linux/lib/std/unicore/lib/IDS/Y.pl +449 -0
  1228. data/Slic3r/Linux/lib/std/unicore/lib/IDSB/N.pl +15 -0
  1229. data/Slic3r/Linux/lib/std/unicore/lib/IDSB/Y.pl +14 -0
  1230. data/Slic3r/Linux/lib/std/unicore/lib/IDST/N.pl +14 -0
  1231. data/Slic3r/Linux/lib/std/unicore/lib/IDST/Y.pl +13 -0
  1232. data/Slic3r/Linux/lib/std/unicore/lib/Ideo/N.pl +25 -0
  1233. data/Slic3r/Linux/lib/std/unicore/lib/Ideo/Y.pl +24 -0
  1234. data/Slic3r/Linux/lib/std/unicore/lib/In/2_0.pl +324 -0
  1235. data/Slic3r/Linux/lib/std/unicore/lib/In/2_1.pl +324 -0
  1236. data/Slic3r/Linux/lib/std/unicore/lib/In/3_0.pl +381 -0
  1237. data/Slic3r/Linux/lib/std/unicore/lib/In/3_1.pl +414 -0
  1238. data/Slic3r/Linux/lib/std/unicore/lib/In/3_2.pl +409 -0
  1239. data/Slic3r/Linux/lib/std/unicore/lib/In/4_0.pl +424 -0
  1240. data/Slic3r/Linux/lib/std/unicore/lib/In/4_1.pl +442 -0
  1241. data/Slic3r/Linux/lib/std/unicore/lib/In/5_0.pl +452 -0
  1242. data/Slic3r/Linux/lib/std/unicore/lib/In/5_1.pl +467 -0
  1243. data/Slic3r/Linux/lib/std/unicore/lib/In/5_2.pl +507 -0
  1244. data/Slic3r/Linux/lib/std/unicore/lib/In/6_0.pl +523 -0
  1245. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Ain.pl +16 -0
  1246. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Alaph.pl +13 -0
  1247. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Alef.pl +18 -0
  1248. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Beh.pl +17 -0
  1249. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Beth.pl +14 -0
  1250. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Burushas.pl +13 -0
  1251. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Dal.pl +16 -0
  1252. data/Slic3r/Linux/lib/std/unicore/lib/Jg/DalathRi.pl +15 -0
  1253. data/Slic3r/Linux/lib/std/unicore/lib/Jg/E.pl +13 -0
  1254. data/Slic3r/Linux/lib/std/unicore/lib/Jg/FarsiYeh.pl +16 -0
  1255. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Fe.pl +13 -0
  1256. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Feh.pl +15 -0
  1257. data/Slic3r/Linux/lib/std/unicore/lib/Jg/FinalSem.pl +13 -0
  1258. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Gaf.pl +17 -0
  1259. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Gamal.pl +14 -0
  1260. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Hah.pl +19 -0
  1261. data/Slic3r/Linux/lib/std/unicore/lib/Jg/He.pl +13 -0
  1262. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Heh.pl +13 -0
  1263. data/Slic3r/Linux/lib/std/unicore/lib/Jg/HehGoal.pl +13 -0
  1264. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Heth.pl +13 -0
  1265. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Kaf.pl +15 -0
  1266. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Kaph.pl +13 -0
  1267. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Khaph.pl +13 -0
  1268. data/Slic3r/Linux/lib/std/unicore/lib/Jg/KnottedH.pl +14 -0
  1269. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Lam.pl +15 -0
  1270. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Lamadh.pl +13 -0
  1271. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Meem.pl +14 -0
  1272. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Mim.pl +13 -0
  1273. data/Slic3r/Linux/lib/std/unicore/lib/Jg/NoJoinin.pl +26 -0
  1274. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Noon.pl +15 -0
  1275. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Nun.pl +13 -0
  1276. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Nya.pl +13 -0
  1277. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Pe.pl +13 -0
  1278. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Qaf.pl +15 -0
  1279. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Qaph.pl +13 -0
  1280. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Reh.pl +18 -0
  1281. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Reversed.pl +13 -0
  1282. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Sad.pl +15 -0
  1283. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Sadhe.pl +13 -0
  1284. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Seen.pl +19 -0
  1285. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Semkath.pl +13 -0
  1286. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Shin.pl +13 -0
  1287. data/Slic3r/Linux/lib/std/unicore/lib/Jg/SwashKaf.pl +13 -0
  1288. data/Slic3r/Linux/lib/std/unicore/lib/Jg/SyriacWa.pl +13 -0
  1289. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Tah.pl +14 -0
  1290. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Taw.pl +13 -0
  1291. data/Slic3r/Linux/lib/std/unicore/lib/Jg/TehMarb2.pl +13 -0
  1292. data/Slic3r/Linux/lib/std/unicore/lib/Jg/TehMarbu.pl +15 -0
  1293. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Teth.pl +13 -0
  1294. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Waw.pl +18 -0
  1295. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Yeh.pl +18 -0
  1296. data/Slic3r/Linux/lib/std/unicore/lib/Jg/YehBarre.pl +13 -0
  1297. data/Slic3r/Linux/lib/std/unicore/lib/Jg/YehWithT.pl +13 -0
  1298. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Yudh.pl +13 -0
  1299. data/Slic3r/Linux/lib/std/unicore/lib/Jg/YudhHe.pl +13 -0
  1300. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Zain.pl +13 -0
  1301. data/Slic3r/Linux/lib/std/unicore/lib/Jg/Zhain.pl +13 -0
  1302. data/Slic3r/Linux/lib/std/unicore/lib/JoinC/N.pl +14 -0
  1303. data/Slic3r/Linux/lib/std/unicore/lib/JoinC/Y.pl +13 -0
  1304. data/Slic3r/Linux/lib/std/unicore/lib/Jt/C.pl +15 -0
  1305. data/Slic3r/Linux/lib/std/unicore/lib/Jt/D.pl +41 -0
  1306. data/Slic3r/Linux/lib/std/unicore/lib/Jt/R.pl +40 -0
  1307. data/Slic3r/Linux/lib/std/unicore/lib/Jt/T.pl +226 -0
  1308. data/Slic3r/Linux/lib/std/unicore/lib/Jt/U.pl +231 -0
  1309. data/Slic3r/Linux/lib/std/unicore/lib/LOE/N.pl +18 -0
  1310. data/Slic3r/Linux/lib/std/unicore/lib/Lb/AI.pl +117 -0
  1311. data/Slic3r/Linux/lib/std/unicore/lib/Lb/AL.pl +576 -0
  1312. data/Slic3r/Linux/lib/std/unicore/lib/Lb/B2.pl +13 -0
  1313. data/Slic3r/Linux/lib/std/unicore/lib/Lb/BA.pl +74 -0
  1314. data/Slic3r/Linux/lib/std/unicore/lib/Lb/BB.pl +24 -0
  1315. data/Slic3r/Linux/lib/std/unicore/lib/Lb/BK.pl +14 -0
  1316. data/Slic3r/Linux/lib/std/unicore/lib/Lb/CB.pl +13 -0
  1317. data/Slic3r/Linux/lib/std/unicore/lib/Lb/CL.pl +91 -0
  1318. data/Slic3r/Linux/lib/std/unicore/lib/Lb/CM.pl +189 -0
  1319. data/Slic3r/Linux/lib/std/unicore/lib/Lb/CP.pl +14 -0
  1320. data/Slic3r/Linux/lib/std/unicore/lib/Lb/EX.pl +34 -0
  1321. data/Slic3r/Linux/lib/std/unicore/lib/Lb/GL.pl +23 -0
  1322. data/Slic3r/Linux/lib/std/unicore/lib/Lb/HY.pl +13 -0
  1323. data/Slic3r/Linux/lib/std/unicore/lib/Lb/ID.pl +85 -0
  1324. data/Slic3r/Linux/lib/std/unicore/lib/Lb/IN.pl +14 -0
  1325. data/Slic3r/Linux/lib/std/unicore/lib/Lb/IS.pl +22 -0
  1326. data/Slic3r/Linux/lib/std/unicore/lib/Lb/NL.pl +13 -0
  1327. data/Slic3r/Linux/lib/std/unicore/lib/Lb/NS.pl +49 -0
  1328. data/Slic3r/Linux/lib/std/unicore/lib/Lb/NU.pl +50 -0
  1329. data/Slic3r/Linux/lib/std/unicore/lib/Lb/OP.pl +91 -0
  1330. data/Slic3r/Linux/lib/std/unicore/lib/Lb/PO.pl +30 -0
  1331. data/Slic3r/Linux/lib/std/unicore/lib/Lb/PR.pl +31 -0
  1332. data/Slic3r/Linux/lib/std/unicore/lib/Lb/QU.pl +24 -0
  1333. data/Slic3r/Linux/lib/std/unicore/lib/Lb/SA.pl +49 -0
  1334. data/Slic3r/Linux/lib/std/unicore/lib/Lb/SG.pl +13 -0
  1335. data/Slic3r/Linux/lib/std/unicore/lib/Lb/SP.pl +13 -0
  1336. data/Slic3r/Linux/lib/std/unicore/lib/Lb/SY.pl +13 -0
  1337. data/Slic3r/Linux/lib/std/unicore/lib/Lb/WJ.pl +14 -0
  1338. data/Slic3r/Linux/lib/std/unicore/lib/Lb/XX.pl +505 -0
  1339. data/Slic3r/Linux/lib/std/unicore/lib/Lb/ZW.pl +13 -0
  1340. data/Slic3r/Linux/lib/std/unicore/lib/Lower/N.pl +625 -0
  1341. data/Slic3r/Linux/lib/std/unicore/lib/Lower/Y.pl +624 -0
  1342. data/Slic3r/Linux/lib/std/unicore/lib/Math/N.pl +119 -0
  1343. data/Slic3r/Linux/lib/std/unicore/lib/Math/Y.pl +118 -0
  1344. data/Slic3r/Linux/lib/std/unicore/lib/NChar/N.pl +30 -0
  1345. data/Slic3r/Linux/lib/std/unicore/lib/NChar/Y.pl +30 -0
  1346. data/Slic3r/Linux/lib/std/unicore/lib/NFCQC/Y.pl +118 -0
  1347. data/Slic3r/Linux/lib/std/unicore/lib/NFDQC/N.pl +239 -0
  1348. data/Slic3r/Linux/lib/std/unicore/lib/NFDQC/Y.pl +240 -0
  1349. data/Slic3r/Linux/lib/std/unicore/lib/NFKCQC/M.pl +46 -0
  1350. data/Slic3r/Linux/lib/std/unicore/lib/NFKCQC/N.pl +225 -0
  1351. data/Slic3r/Linux/lib/std/unicore/lib/NFKCQC/Y.pl +256 -0
  1352. data/Slic3r/Linux/lib/std/unicore/lib/NFKDQC/N.pl +361 -0
  1353. data/Slic3r/Linux/lib/std/unicore/lib/Nt/De.pl +50 -0
  1354. data/Slic3r/Linux/lib/std/unicore/lib/Nt/Di.pl +32 -0
  1355. data/Slic3r/Linux/lib/std/unicore/lib/Nt/Nu.pl +134 -0
  1356. data/Slic3r/Linux/lib/std/unicore/lib/Nv/0.pl +67 -0
  1357. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1.pl +102 -0
  1358. data/Slic3r/Linux/lib/std/unicore/lib/Nv/10.pl +47 -0
  1359. data/Slic3r/Linux/lib/std/unicore/lib/Nv/100.pl +32 -0
  1360. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1000.pl +28 -0
  1361. data/Slic3r/Linux/lib/std/unicore/lib/Nv/10000.pl +19 -0
  1362. data/Slic3r/Linux/lib/std/unicore/lib/Nv/100000.pl +13 -0
  1363. data/Slic3r/Linux/lib/std/unicore/lib/Nv/10000000.pl +14 -0
  1364. data/Slic3r/Linux/lib/std/unicore/lib/Nv/10000002.pl +13 -0
  1365. data/Slic3r/Linux/lib/std/unicore/lib/Nv/11.pl +18 -0
  1366. data/Slic3r/Linux/lib/std/unicore/lib/Nv/11_2.pl +13 -0
  1367. data/Slic3r/Linux/lib/std/unicore/lib/Nv/12.pl +18 -0
  1368. data/Slic3r/Linux/lib/std/unicore/lib/Nv/13.pl +16 -0
  1369. data/Slic3r/Linux/lib/std/unicore/lib/Nv/13_2.pl +13 -0
  1370. data/Slic3r/Linux/lib/std/unicore/lib/Nv/14.pl +16 -0
  1371. data/Slic3r/Linux/lib/std/unicore/lib/Nv/15.pl +16 -0
  1372. data/Slic3r/Linux/lib/std/unicore/lib/Nv/15_2.pl +13 -0
  1373. data/Slic3r/Linux/lib/std/unicore/lib/Nv/16.pl +17 -0
  1374. data/Slic3r/Linux/lib/std/unicore/lib/Nv/17.pl +17 -0
  1375. data/Slic3r/Linux/lib/std/unicore/lib/Nv/17_2.pl +13 -0
  1376. data/Slic3r/Linux/lib/std/unicore/lib/Nv/18.pl +17 -0
  1377. data/Slic3r/Linux/lib/std/unicore/lib/Nv/19.pl +17 -0
  1378. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_10.pl +13 -0
  1379. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_16.pl +15 -0
  1380. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_2.pl +21 -0
  1381. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_3.pl +16 -0
  1382. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_4.pl +21 -0
  1383. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_5.pl +13 -0
  1384. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_6.pl +14 -0
  1385. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_7.pl +13 -0
  1386. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_8.pl +17 -0
  1387. data/Slic3r/Linux/lib/std/unicore/lib/Nv/1_9.pl +13 -0
  1388. data/Slic3r/Linux/lib/std/unicore/lib/Nv/2.pl +105 -0
  1389. data/Slic3r/Linux/lib/std/unicore/lib/Nv/20.pl +30 -0
  1390. data/Slic3r/Linux/lib/std/unicore/lib/Nv/200.pl +14 -0
  1391. data/Slic3r/Linux/lib/std/unicore/lib/Nv/2000.pl +13 -0
  1392. data/Slic3r/Linux/lib/std/unicore/lib/Nv/20000.pl +13 -0
  1393. data/Slic3r/Linux/lib/std/unicore/lib/Nv/21.pl +13 -0
  1394. data/Slic3r/Linux/lib/std/unicore/lib/Nv/22.pl +13 -0
  1395. data/Slic3r/Linux/lib/std/unicore/lib/Nv/23.pl +13 -0
  1396. data/Slic3r/Linux/lib/std/unicore/lib/Nv/24.pl +13 -0
  1397. data/Slic3r/Linux/lib/std/unicore/lib/Nv/25.pl +13 -0
  1398. data/Slic3r/Linux/lib/std/unicore/lib/Nv/26.pl +13 -0
  1399. data/Slic3r/Linux/lib/std/unicore/lib/Nv/27.pl +13 -0
  1400. data/Slic3r/Linux/lib/std/unicore/lib/Nv/28.pl +13 -0
  1401. data/Slic3r/Linux/lib/std/unicore/lib/Nv/29.pl +13 -0
  1402. data/Slic3r/Linux/lib/std/unicore/lib/Nv/2_3.pl +17 -0
  1403. data/Slic3r/Linux/lib/std/unicore/lib/Nv/2_5.pl +13 -0
  1404. data/Slic3r/Linux/lib/std/unicore/lib/Nv/3.pl +103 -0
  1405. data/Slic3r/Linux/lib/std/unicore/lib/Nv/30.pl +22 -0
  1406. data/Slic3r/Linux/lib/std/unicore/lib/Nv/300.pl +15 -0
  1407. data/Slic3r/Linux/lib/std/unicore/lib/Nv/3000.pl +13 -0
  1408. data/Slic3r/Linux/lib/std/unicore/lib/Nv/30000.pl +13 -0
  1409. data/Slic3r/Linux/lib/std/unicore/lib/Nv/31.pl +13 -0
  1410. data/Slic3r/Linux/lib/std/unicore/lib/Nv/32.pl +13 -0
  1411. data/Slic3r/Linux/lib/std/unicore/lib/Nv/33.pl +13 -0
  1412. data/Slic3r/Linux/lib/std/unicore/lib/Nv/34.pl +13 -0
  1413. data/Slic3r/Linux/lib/std/unicore/lib/Nv/35.pl +13 -0
  1414. data/Slic3r/Linux/lib/std/unicore/lib/Nv/36.pl +13 -0
  1415. data/Slic3r/Linux/lib/std/unicore/lib/Nv/37.pl +13 -0
  1416. data/Slic3r/Linux/lib/std/unicore/lib/Nv/38.pl +13 -0
  1417. data/Slic3r/Linux/lib/std/unicore/lib/Nv/39.pl +13 -0
  1418. data/Slic3r/Linux/lib/std/unicore/lib/Nv/3_16.pl +15 -0
  1419. data/Slic3r/Linux/lib/std/unicore/lib/Nv/3_2.pl +13 -0
  1420. data/Slic3r/Linux/lib/std/unicore/lib/Nv/3_4.pl +18 -0
  1421. data/Slic3r/Linux/lib/std/unicore/lib/Nv/3_5.pl +13 -0
  1422. data/Slic3r/Linux/lib/std/unicore/lib/Nv/3_8.pl +13 -0
  1423. data/Slic3r/Linux/lib/std/unicore/lib/Nv/4.pl +97 -0
  1424. data/Slic3r/Linux/lib/std/unicore/lib/Nv/40.pl +21 -0
  1425. data/Slic3r/Linux/lib/std/unicore/lib/Nv/400.pl +14 -0
  1426. data/Slic3r/Linux/lib/std/unicore/lib/Nv/4000.pl +13 -0
  1427. data/Slic3r/Linux/lib/std/unicore/lib/Nv/40000.pl +13 -0
  1428. data/Slic3r/Linux/lib/std/unicore/lib/Nv/41.pl +13 -0
  1429. data/Slic3r/Linux/lib/std/unicore/lib/Nv/42.pl +13 -0
  1430. data/Slic3r/Linux/lib/std/unicore/lib/Nv/43.pl +13 -0
  1431. data/Slic3r/Linux/lib/std/unicore/lib/Nv/44.pl +13 -0
  1432. data/Slic3r/Linux/lib/std/unicore/lib/Nv/45.pl +13 -0
  1433. data/Slic3r/Linux/lib/std/unicore/lib/Nv/46.pl +13 -0
  1434. data/Slic3r/Linux/lib/std/unicore/lib/Nv/47.pl +13 -0
  1435. data/Slic3r/Linux/lib/std/unicore/lib/Nv/48.pl +13 -0
  1436. data/Slic3r/Linux/lib/std/unicore/lib/Nv/49.pl +13 -0
  1437. data/Slic3r/Linux/lib/std/unicore/lib/Nv/4_5.pl +13 -0
  1438. data/Slic3r/Linux/lib/std/unicore/lib/Nv/5.pl +97 -0
  1439. data/Slic3r/Linux/lib/std/unicore/lib/Nv/50.pl +28 -0
  1440. data/Slic3r/Linux/lib/std/unicore/lib/Nv/500.pl +20 -0
  1441. data/Slic3r/Linux/lib/std/unicore/lib/Nv/5000.pl +17 -0
  1442. data/Slic3r/Linux/lib/std/unicore/lib/Nv/50000.pl +16 -0
  1443. data/Slic3r/Linux/lib/std/unicore/lib/Nv/5_2.pl +13 -0
  1444. data/Slic3r/Linux/lib/std/unicore/lib/Nv/5_6.pl +14 -0
  1445. data/Slic3r/Linux/lib/std/unicore/lib/Nv/5_8.pl +13 -0
  1446. data/Slic3r/Linux/lib/std/unicore/lib/Nv/6.pl +90 -0
  1447. data/Slic3r/Linux/lib/std/unicore/lib/Nv/60.pl +17 -0
  1448. data/Slic3r/Linux/lib/std/unicore/lib/Nv/600.pl +14 -0
  1449. data/Slic3r/Linux/lib/std/unicore/lib/Nv/6000.pl +13 -0
  1450. data/Slic3r/Linux/lib/std/unicore/lib/Nv/60000.pl +13 -0
  1451. data/Slic3r/Linux/lib/std/unicore/lib/Nv/7.pl +87 -0
  1452. data/Slic3r/Linux/lib/std/unicore/lib/Nv/70.pl +17 -0
  1453. data/Slic3r/Linux/lib/std/unicore/lib/Nv/700.pl +14 -0
  1454. data/Slic3r/Linux/lib/std/unicore/lib/Nv/7000.pl +13 -0
  1455. data/Slic3r/Linux/lib/std/unicore/lib/Nv/70000.pl +13 -0
  1456. data/Slic3r/Linux/lib/std/unicore/lib/Nv/7_2.pl +13 -0
  1457. data/Slic3r/Linux/lib/std/unicore/lib/Nv/7_8.pl +13 -0
  1458. data/Slic3r/Linux/lib/std/unicore/lib/Nv/8.pl +84 -0
  1459. data/Slic3r/Linux/lib/std/unicore/lib/Nv/80.pl +17 -0
  1460. data/Slic3r/Linux/lib/std/unicore/lib/Nv/800.pl +14 -0
  1461. data/Slic3r/Linux/lib/std/unicore/lib/Nv/8000.pl +13 -0
  1462. data/Slic3r/Linux/lib/std/unicore/lib/Nv/80000.pl +13 -0
  1463. data/Slic3r/Linux/lib/std/unicore/lib/Nv/9.pl +86 -0
  1464. data/Slic3r/Linux/lib/std/unicore/lib/Nv/90.pl +18 -0
  1465. data/Slic3r/Linux/lib/std/unicore/lib/Nv/900.pl +15 -0
  1466. data/Slic3r/Linux/lib/std/unicore/lib/Nv/9000.pl +13 -0
  1467. data/Slic3r/Linux/lib/std/unicore/lib/Nv/90000.pl +13 -0
  1468. data/Slic3r/Linux/lib/std/unicore/lib/Nv/9_2.pl +13 -0
  1469. data/Slic3r/Linux/lib/std/unicore/lib/Nv/NaN.pl +170 -0
  1470. data/Slic3r/Linux/lib/std/unicore/lib/Nv/_1_2.pl +13 -0
  1471. data/Slic3r/Linux/lib/std/unicore/lib/OAlpha/N.pl +158 -0
  1472. data/Slic3r/Linux/lib/std/unicore/lib/OAlpha/Y.pl +157 -0
  1473. data/Slic3r/Linux/lib/std/unicore/lib/ODI/N.pl +23 -0
  1474. data/Slic3r/Linux/lib/std/unicore/lib/ODI/Y.pl +22 -0
  1475. data/Slic3r/Linux/lib/std/unicore/lib/OGrExt/N.pl +29 -0
  1476. data/Slic3r/Linux/lib/std/unicore/lib/OGrExt/Y.pl +28 -0
  1477. data/Slic3r/Linux/lib/std/unicore/lib/OIDC/N.pl +17 -0
  1478. data/Slic3r/Linux/lib/std/unicore/lib/OIDC/Y.pl +16 -0
  1479. data/Slic3r/Linux/lib/std/unicore/lib/OIDS/N.pl +16 -0
  1480. data/Slic3r/Linux/lib/std/unicore/lib/OIDS/Y.pl +15 -0
  1481. data/Slic3r/Linux/lib/std/unicore/lib/OLower/N.pl +26 -0
  1482. data/Slic3r/Linux/lib/std/unicore/lib/OLower/Y.pl +25 -0
  1483. data/Slic3r/Linux/lib/std/unicore/lib/OMath/N.pl +113 -0
  1484. data/Slic3r/Linux/lib/std/unicore/lib/OMath/Y.pl +112 -0
  1485. data/Slic3r/Linux/lib/std/unicore/lib/OUpper/N.pl +15 -0
  1486. data/Slic3r/Linux/lib/std/unicore/lib/OUpper/Y.pl +14 -0
  1487. data/Slic3r/Linux/lib/std/unicore/lib/PatSyn/N.pl +41 -0
  1488. data/Slic3r/Linux/lib/std/unicore/lib/PatSyn/Y.pl +40 -0
  1489. data/Slic3r/Linux/lib/std/unicore/lib/PatWS/N.pl +18 -0
  1490. data/Slic3r/Linux/lib/std/unicore/lib/PatWS/Y.pl +17 -0
  1491. data/Slic3r/Linux/lib/std/unicore/lib/Perl/Alnum.pl +521 -0
  1492. data/Slic3r/Linux/lib/std/unicore/lib/Perl/Any.pl +13 -0
  1493. data/Slic3r/Linux/lib/std/unicore/lib/Perl/Assigned.pl +513 -0
  1494. data/Slic3r/Linux/lib/std/unicore/lib/Perl/Blank.pl +21 -0
  1495. data/Slic3r/Linux/lib/std/unicore/lib/Perl/Graph.pl +518 -0
  1496. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PerlSpac.pl +15 -0
  1497. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PerlWord.pl +16 -0
  1498. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixAln.pl +15 -0
  1499. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixAlp.pl +14 -0
  1500. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixBla.pl +14 -0
  1501. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixCnt.pl +14 -0
  1502. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixDig.pl +13 -0
  1503. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixGra.pl +13 -0
  1504. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixLow.pl +13 -0
  1505. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixPri.pl +13 -0
  1506. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixPun.pl +16 -0
  1507. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixSpa.pl +14 -0
  1508. data/Slic3r/Linux/lib/std/unicore/lib/Perl/PosixUpp.pl +13 -0
  1509. data/Slic3r/Linux/lib/std/unicore/lib/Perl/Print.pl +515 -0
  1510. data/Slic3r/Linux/lib/std/unicore/lib/Perl/SpacePer.pl +24 -0
  1511. data/Slic3r/Linux/lib/std/unicore/lib/Perl/Title.pl +22 -0
  1512. data/Slic3r/Linux/lib/std/unicore/lib/Perl/VertSpac.pl +15 -0
  1513. data/Slic3r/Linux/lib/std/unicore/lib/Perl/Word.pl +526 -0
  1514. data/Slic3r/Linux/lib/std/unicore/lib/Perl/XPosixPu.pl +140 -0
  1515. data/Slic3r/Linux/lib/std/unicore/lib/Perl/_XBegin.pl +30 -0
  1516. data/Slic3r/Linux/lib/std/unicore/lib/Perl/_XExtend.pl +206 -0
  1517. data/Slic3r/Linux/lib/std/unicore/lib/Perl/_XLVLVTV.pl +15 -0
  1518. data/Slic3r/Linux/lib/std/unicore/lib/QMark/N.pl +25 -0
  1519. data/Slic3r/Linux/lib/std/unicore/lib/QMark/Y.pl +24 -0
  1520. data/Slic3r/Linux/lib/std/unicore/lib/Radical/N.pl +16 -0
  1521. data/Slic3r/Linux/lib/std/unicore/lib/Radical/Y.pl +15 -0
  1522. data/Slic3r/Linux/lib/std/unicore/lib/SB/AT.pl +16 -0
  1523. data/Slic3r/Linux/lib/std/unicore/lib/SB/CL.pl +53 -0
  1524. data/Slic3r/Linux/lib/std/unicore/lib/SB/EX.pl +207 -0
  1525. data/Slic3r/Linux/lib/std/unicore/lib/SB/FO.pl +28 -0
  1526. data/Slic3r/Linux/lib/std/unicore/lib/SB/LE.pl +362 -0
  1527. data/Slic3r/Linux/lib/std/unicore/lib/SB/LO.pl +623 -0
  1528. data/Slic3r/Linux/lib/std/unicore/lib/SB/SC.pl +31 -0
  1529. data/Slic3r/Linux/lib/std/unicore/lib/SB/SE.pl +14 -0
  1530. data/Slic3r/Linux/lib/std/unicore/lib/SB/ST.pl +56 -0
  1531. data/Slic3r/Linux/lib/std/unicore/lib/SB/Sp.pl +22 -0
  1532. data/Slic3r/Linux/lib/std/unicore/lib/SB/UP.pl +620 -0
  1533. data/Slic3r/Linux/lib/std/unicore/lib/SB/XX.pl +584 -0
  1534. data/Slic3r/Linux/lib/std/unicore/lib/SD/N.pl +44 -0
  1535. data/Slic3r/Linux/lib/std/unicore/lib/SD/Y.pl +43 -0
  1536. data/Slic3r/Linux/lib/std/unicore/lib/STerm/N.pl +60 -0
  1537. data/Slic3r/Linux/lib/std/unicore/lib/STerm/Y.pl +59 -0
  1538. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Arab.pl +31 -0
  1539. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Armi.pl +14 -0
  1540. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Armn.pl +17 -0
  1541. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Avst.pl +14 -0
  1542. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Bali.pl +14 -0
  1543. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Bamu.pl +14 -0
  1544. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Batk.pl +14 -0
  1545. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Beng.pl +26 -0
  1546. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Bopo.pl +15 -0
  1547. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Brah.pl +14 -0
  1548. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Bugi.pl +14 -0
  1549. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Buhd.pl +13 -0
  1550. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Cans.pl +14 -0
  1551. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Cari.pl +13 -0
  1552. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Cham.pl +16 -0
  1553. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Cher.pl +13 -0
  1554. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Copt.pl +15 -0
  1555. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Cprt.pl +18 -0
  1556. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Cyrl.pl +19 -0
  1557. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Deva.pl +18 -0
  1558. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Egyp.pl +13 -0
  1559. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Ethi.pl +44 -0
  1560. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Geor.pl +16 -0
  1561. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Glag.pl +14 -0
  1562. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Goth.pl +13 -0
  1563. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Grek.pl +45 -0
  1564. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Gujr.pl +26 -0
  1565. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Guru.pl +28 -0
  1566. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Han.pl +28 -0
  1567. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Hang.pl +26 -0
  1568. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Hano.pl +13 -0
  1569. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Hebr.pl +21 -0
  1570. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Hira.pl +16 -0
  1571. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Ital.pl +14 -0
  1572. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Java.pl +15 -0
  1573. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Kana.pl +20 -0
  1574. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Khar.pl +20 -0
  1575. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Khmr.pl +16 -0
  1576. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Knda.pl +26 -0
  1577. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Kthi.pl +13 -0
  1578. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Lana.pl +17 -0
  1579. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Lao.pl +30 -0
  1580. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Latn.pl +42 -0
  1581. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Lepc.pl +15 -0
  1582. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Limb.pl +17 -0
  1583. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Linb.pl +19 -0
  1584. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Lyci.pl +13 -0
  1585. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Lydi.pl +14 -0
  1586. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Mand.pl +14 -0
  1587. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Mlym.pl +23 -0
  1588. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Mong.pl +18 -0
  1589. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Mtei.pl +14 -0
  1590. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Mymr.pl +14 -0
  1591. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Nko.pl +13 -0
  1592. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Ogam.pl +13 -0
  1593. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Orkh.pl +13 -0
  1594. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Orya.pl +26 -0
  1595. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Osma.pl +14 -0
  1596. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Phag.pl +13 -0
  1597. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Phli.pl +14 -0
  1598. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Phnx.pl +14 -0
  1599. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Prti.pl +14 -0
  1600. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Rjng.pl +14 -0
  1601. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Runr.pl +14 -0
  1602. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Samr.pl +14 -0
  1603. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Saur.pl +14 -0
  1604. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Sinh.pl +23 -0
  1605. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Sund.pl +14 -0
  1606. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Sylo.pl +13 -0
  1607. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Syrc.pl +15 -0
  1608. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Tagb.pl +15 -0
  1609. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Tale.pl +14 -0
  1610. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Talu.pl +16 -0
  1611. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Taml.pl +28 -0
  1612. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Tavt.pl +14 -0
  1613. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Telu.pl +26 -0
  1614. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Tfng.pl +15 -0
  1615. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Tglg.pl +14 -0
  1616. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Thaa.pl +13 -0
  1617. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Thai.pl +14 -0
  1618. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Tibt.pl +19 -0
  1619. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Ugar.pl +14 -0
  1620. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Vai.pl +13 -0
  1621. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Xpeo.pl +14 -0
  1622. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Xsux.pl +15 -0
  1623. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Yi.pl +14 -0
  1624. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Zinh.pl +36 -0
  1625. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Zyyy.pl +181 -0
  1626. data/Slic3r/Linux/lib/std/unicore/lib/Sc/Zzzz.pl +511 -0
  1627. data/Slic3r/Linux/lib/std/unicore/lib/Space/N.pl +24 -0
  1628. data/Slic3r/Linux/lib/std/unicore/lib/Space/Y.pl +23 -0
  1629. data/Slic3r/Linux/lib/std/unicore/lib/Term/N.pl +80 -0
  1630. data/Slic3r/Linux/lib/std/unicore/lib/Term/Y.pl +79 -0
  1631. data/Slic3r/Linux/lib/std/unicore/lib/UIdeo/N.pl +25 -0
  1632. data/Slic3r/Linux/lib/std/unicore/lib/UIdeo/Y.pl +24 -0
  1633. data/Slic3r/Linux/lib/std/unicore/lib/Upper/N.pl +618 -0
  1634. data/Slic3r/Linux/lib/std/unicore/lib/Upper/Y.pl +617 -0
  1635. data/Slic3r/Linux/lib/std/unicore/lib/VS/N.pl +16 -0
  1636. data/Slic3r/Linux/lib/std/unicore/lib/VS/Y.pl +15 -0
  1637. data/Slic3r/Linux/lib/std/unicore/lib/WB/EX.pl +18 -0
  1638. data/Slic3r/Linux/lib/std/unicore/lib/WB/FO.pl +27 -0
  1639. data/Slic3r/Linux/lib/std/unicore/lib/WB/KA.pl +21 -0
  1640. data/Slic3r/Linux/lib/std/unicore/lib/WB/LE.pl +388 -0
  1641. data/Slic3r/Linux/lib/std/unicore/lib/WB/MB.pl +19 -0
  1642. data/Slic3r/Linux/lib/std/unicore/lib/WB/ML.pl +20 -0
  1643. data/Slic3r/Linux/lib/std/unicore/lib/WB/MN.pl +26 -0
  1644. data/Slic3r/Linux/lib/std/unicore/lib/WB/NL.pl +15 -0
  1645. data/Slic3r/Linux/lib/std/unicore/lib/WB/NU.pl +50 -0
  1646. data/Slic3r/Linux/lib/std/unicore/lib/WB/XX.pl +539 -0
  1647. data/Slic3r/Linux/lib/std/unicore/lib/XIDC/N.pl +534 -0
  1648. data/Slic3r/Linux/lib/std/unicore/lib/XIDC/Y.pl +533 -0
  1649. data/Slic3r/Linux/lib/std/unicore/lib/XIDS/N.pl +457 -0
  1650. data/Slic3r/Linux/lib/std/unicore/lib/XIDS/Y.pl +456 -0
  1651. data/Slic3r/Linux/lib/std/utf8.pm +214 -0
  1652. data/Slic3r/Linux/lib/std/utf8_heavy.pl +550 -0
  1653. data/Slic3r/Linux/lib/vrt/528ccea98cad02a5f453a7135f9ca183/package.lib +0 -0
  1654. data/Slic3r/Linux/lib/vrt/804f15d0b003b04c3feb68e47adacf8d/package.lib +1 -0
  1655. data/Slic3r/Linux/lib/vrt/fa119178d164dcf97f19aecc876231c0/package.lib +0 -0
  1656. data/Slic3r/Linux/res/Slic3r.icns +0 -0
  1657. data/Slic3r/Linux/res/Slic3r.ico +0 -0
  1658. data/Slic3r/Linux/res/Slic3r.png +0 -0
  1659. data/Slic3r/Linux/res/Slic3r_128px.png +0 -0
  1660. data/Slic3r/Linux/res/Slic3r_192px.png +0 -0
  1661. data/Slic3r/Linux/res/Slic3r_192px_transparent.png +0 -0
  1662. data/Slic3r/Linux/res/add.png +0 -0
  1663. data/Slic3r/Linux/res/arrow_out.png +0 -0
  1664. data/Slic3r/Linux/res/arrow_rotate_anticlockwise.png +0 -0
  1665. data/Slic3r/Linux/res/arrow_rotate_clockwise.png +0 -0
  1666. data/Slic3r/Linux/res/arrow_up.png +0 -0
  1667. data/Slic3r/Linux/res/box.png +0 -0
  1668. data/Slic3r/Linux/res/brick.png +0 -0
  1669. data/Slic3r/Linux/res/brick_add.png +0 -0
  1670. data/Slic3r/Linux/res/brick_delete.png +0 -0
  1671. data/Slic3r/Linux/res/brick_go.png +0 -0
  1672. data/Slic3r/Linux/res/bricks.png +0 -0
  1673. data/Slic3r/Linux/res/building.png +0 -0
  1674. data/Slic3r/Linux/res/bullet_black.png +0 -0
  1675. data/Slic3r/Linux/res/bullet_blue.png +0 -0
  1676. data/Slic3r/Linux/res/bullet_white.png +0 -0
  1677. data/Slic3r/Linux/res/cog.png +0 -0
  1678. data/Slic3r/Linux/res/cog_go.png +0 -0
  1679. data/Slic3r/Linux/res/cross.png +0 -0
  1680. data/Slic3r/Linux/res/delete.png +0 -0
  1681. data/Slic3r/Linux/res/disk.png +0 -0
  1682. data/Slic3r/Linux/res/error.png +0 -0
  1683. data/Slic3r/Linux/res/funnel.png +0 -0
  1684. data/Slic3r/Linux/res/hourglass.png +0 -0
  1685. data/Slic3r/Linux/res/layers.png +0 -0
  1686. data/Slic3r/Linux/res/note.png +0 -0
  1687. data/Slic3r/Linux/res/package.png +0 -0
  1688. data/Slic3r/Linux/res/package_green.png +0 -0
  1689. data/Slic3r/Linux/res/page_white_go.png +0 -0
  1690. data/Slic3r/Linux/res/plugin.png +0 -0
  1691. data/Slic3r/Linux/res/printer_empty.png +0 -0
  1692. data/Slic3r/Linux/res/shading.png +0 -0
  1693. data/Slic3r/Linux/res/shape_ungroup.png +0 -0
  1694. data/Slic3r/Linux/res/spool.png +0 -0
  1695. data/Slic3r/Linux/res/tag_blue.png +0 -0
  1696. data/Slic3r/Linux/res/time.png +0 -0
  1697. data/Slic3r/Linux/res/wrench.png +0 -0
  1698. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libperl.dylib +0 -0
  1699. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_baseu-2.9.3.0.0.dylib +0 -0
  1700. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_baseu-2.9.3.dylib +1 -0
  1701. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_baseu-2.9.dylib +1 -0
  1702. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_baseu_net-2.9.3.0.0.dylib +0 -0
  1703. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_baseu_net-2.9.3.dylib +1 -0
  1704. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_baseu_net-2.9.dylib +1 -0
  1705. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_adv-2.9.3.0.0.dylib +0 -0
  1706. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_adv-2.9.3.dylib +1 -0
  1707. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_adv-2.9.dylib +1 -0
  1708. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_core-2.9.3.0.0.dylib +0 -0
  1709. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_core-2.9.3.dylib +1 -0
  1710. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_core-2.9.dylib +1 -0
  1711. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_gl-2.9.3.0.0.dylib +0 -0
  1712. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_gl-2.9.3.dylib +1 -0
  1713. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_gl-2.9.dylib +1 -0
  1714. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_html-2.9.3.0.0.dylib +0 -0
  1715. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_html-2.9.3.dylib +1 -0
  1716. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_html-2.9.dylib +1 -0
  1717. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_media-2.9.3.0.0.dylib +0 -0
  1718. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_media-2.9.3.dylib +1 -0
  1719. data/Slic3r/Mac/Slic3r.app/Contents/Frameworks/libwx_osx_cocoau_media-2.9.dylib +1 -0
  1720. data/Slic3r/Mac/Slic3r.app/Contents/Info.plist +27 -0
  1721. data/Slic3r/Mac/Slic3r.app/Contents/MacOS/slic3r +0 -0
  1722. data/Slic3r/Mac/Slic3r.app/Contents/PkgInfo +1 -0
  1723. data/Slic3r/Mac/Slic3r.app/Contents/Resources/Slic3r.icns +0 -0
  1724. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/std/Mozilla/CA.pm +99 -0
  1725. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/std/Mozilla/CA/cacert.pem +3366 -0
  1726. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/std/XML/SAX/ParserDetails.ini +16 -0
  1727. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/00fe171e54eaa45f327269069a84261c/SHA.bundle +0 -0
  1728. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/01641a74022c3bbdcd3a4cd5ffa26f07/ExpatXS.bundle +0 -0
  1729. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/02275a9ba60dd2657ec564332cc8c8a6/mro.bundle +0 -0
  1730. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/0599c4249af65dd82091e4b41e75dcac/GLCanvas.bundle +0 -0
  1731. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/0b007f4858c19ac489b6482dc8d8e973/Base64.bundle +0 -0
  1732. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/11897113663a72e0cf3a40f86569d0d3/package.lib +437 -0
  1733. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/181b750c50b989ea215e0c9788700590/scalar.bundle +0 -0
  1734. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/18e56ac547628015c934d8e62b2e59fb/shared.bundle +0 -0
  1735. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/193e996343c27253990f34ec93d7ae14/XS.bundle +0 -0
  1736. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/1e7eafa7ded7f14757bba03f9721336f/MD5.bundle +0 -0
  1737. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/2203e7a3df69c390965a2aa240378b54/FastCalc.bundle +0 -0
  1738. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/3b0e1864ce168232981b0e0b6e4ba639/Zlib.bundle +0 -0
  1739. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/4219a41428dfbeccc0004f15dc4778d8/Unicode.bundle +0 -0
  1740. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/42c3d19347a691f255d231da3d91f1ab/package.lib +332 -0
  1741. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/446150103e8711b6887777b796b96e92/Storable.bundle +0 -0
  1742. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/471029ae61c0427e58f24ac9e5a0cca5/package.lib +41 -0
  1743. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/4b2be1b5f4e6e6643e35d2fcdd27000d/Fcntl.bundle +0 -0
  1744. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/4c8cb4098e6eacc0dda716777c02e08e/Print.bundle +0 -0
  1745. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/51a64b55f893bfcb317be27527adb1c6/XSAccessor.bundle +0 -0
  1746. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/528ccea98cad02a5f453a7135f9ca183/package.lib +0 -0
  1747. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/5abe14a55ea43955299905c968f6b868/NamedCapture.bundle +0 -0
  1748. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/5da723b19d0784844a5d9228c25b1022/IO.bundle +0 -0
  1749. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/5efcd6c8c536b3b2d25ffece18e6cc7f/Byte.bundle +0 -0
  1750. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/62d4f6d2fa13586d2f8d48e80fcaad8d/re.bundle +0 -0
  1751. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/65951cec1d16610098f09e209050a4e5/encoding.bundle +0 -0
  1752. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/72315e121508feb38a782d3bd60cf0e1/Encode.bundle +0 -0
  1753. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/72f45450977a0f098e76b5b1270fb1fa/TW.bundle +0 -0
  1754. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/74f1151ea68af8b93e28a8d7b59bc6f1/Util.bundle +0 -0
  1755. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/7a1d45f404be604381d8b95f374ecae2/POSIX.bundle +0 -0
  1756. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/7a9108dfb82f49ad15e339776671a0c9/KR.bundle +0 -0
  1757. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/7e549424075365bb7bac11a08b208145/XS.bundle +0 -0
  1758. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/7e7926fce7d528168853b8dab2c9ccd2/Socket.bundle +0 -0
  1759. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/804f15d0b003b04c3feb68e47adacf8d/package.lib +1 -0
  1760. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/826014915c535a7285f886166a778440/Cwd.bundle +0 -0
  1761. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/83e7bddbda22f4666134d95e35b3292e/Grid.bundle +0 -0
  1762. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/8efb4e8160ee47f9e953900fd189e72c/Symbol.bundle +0 -0
  1763. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/9077b3800b946e19da99a53a92321f77/JP.bundle +0 -0
  1764. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/9425135f44548a4e211eabfbba86fdf7/B.bundle +0 -0
  1765. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/94c9b361d23d6847d023b9e82acbc595/UUID.bundle +0 -0
  1766. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/953dbc6f080a921c10f4fb4adf0a6ea7/SealRequireHints.bundle +0 -0
  1767. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/9f303c03e9bb3b3307210ed1399034f4/Dumper.bundle +0 -0
  1768. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/a3809d03e71342d25daf495917654688/indirect.bundle +0 -0
  1769. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/a499207f115577de989dae697bccf1f7/via.bundle +0 -0
  1770. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/a4ff00c6243840a7c5a181800d0a0e9f/Glob.bundle +0 -0
  1771. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/a8a5488c950b4ae4ab726834ab1f4629/Parser.bundle +0 -0
  1772. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/a927c16eae43f6d2d1fcbca4288c2613/Bzip2.bundle +0 -0
  1773. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/b2467e1e23f7295c8b0e819807403777/Check.bundle +0 -0
  1774. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/b75af51104891e1861cf27a85a06248f/SSLeay.bundle +0 -0
  1775. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/c04409d610134c279178eaab1c0cd45e/multidimensional.bundle +0 -0
  1776. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/c37c19e69c64f01f83616050a4290081/filehandles.bundle +0 -0
  1777. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/c63ee2950efe3f9517034e269406a6f1/Call.bundle +0 -0
  1778. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/c8b43a9fa99c2589e0af3851636037ae/threads.bundle +0 -0
  1779. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/c9bc0bb4eaabb8b3b85268094134ae30/SSLeay.bundle +0 -0
  1780. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/cb9c4ab6b50a6ba6e9a1c58866acb842/HiRes.bundle +0 -0
  1781. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/d73dc34729c26340077a511c9aeae54c/Langinfo.bundle +0 -0
  1782. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/e0833c18d9957e5ef93fd12ea63dc88c/Libm.bundle +0 -0
  1783. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/e4596f5a53563fc95d87c9738c6ed3f1/attributes.bundle +0 -0
  1784. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/e69ac1437c1fe7ba8a391d4a6e017895/DND.bundle +0 -0
  1785. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/f0daa614fb85c8dc08ddd86ef81f8546/EBCDIC.bundle +0 -0
  1786. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/f3d865c9882d669a56d9890365558ef3/Wx.bundle +0 -0
  1787. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/f77494368a2754d99fc9ae63725241b9/CN.bundle +0 -0
  1788. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/f7b6e5c51850d9c5b8f9f118bf8c79e5/OpenGL.bundle +0 -0
  1789. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/fa119178d164dcf97f19aecc876231c0/package.lib +0 -0
  1790. data/Slic3r/Mac/Slic3r.app/Contents/Resources/lib/vrt/ff1c32bbf4efed322b40618fa6cc887f/Html.bundle +0 -0
  1791. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/Slic3r.icns +0 -0
  1792. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/Slic3r.ico +0 -0
  1793. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/Slic3r.png +0 -0
  1794. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/Slic3r_128px.png +0 -0
  1795. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/Slic3r_192px.png +0 -0
  1796. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/Slic3r_192px_transparent.png +0 -0
  1797. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/add.png +0 -0
  1798. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/arrow_out.png +0 -0
  1799. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/arrow_rotate_anticlockwise.png +0 -0
  1800. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/arrow_rotate_clockwise.png +0 -0
  1801. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/arrow_up.png +0 -0
  1802. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/box.png +0 -0
  1803. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/brick.png +0 -0
  1804. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/brick_add.png +0 -0
  1805. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/brick_delete.png +0 -0
  1806. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/brick_go.png +0 -0
  1807. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/bricks.png +0 -0
  1808. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/building.png +0 -0
  1809. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/bullet_black.png +0 -0
  1810. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/bullet_blue.png +0 -0
  1811. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/bullet_white.png +0 -0
  1812. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/cog.png +0 -0
  1813. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/cog_go.png +0 -0
  1814. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/cross.png +0 -0
  1815. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/delete.png +0 -0
  1816. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/disk.png +0 -0
  1817. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/error.png +0 -0
  1818. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/funnel.png +0 -0
  1819. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/hourglass.png +0 -0
  1820. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/layers.png +0 -0
  1821. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/note.png +0 -0
  1822. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/package.png +0 -0
  1823. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/package_green.png +0 -0
  1824. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/page_white_go.png +0 -0
  1825. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/plugin.png +0 -0
  1826. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/printer_empty.png +0 -0
  1827. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/shading.png +0 -0
  1828. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/shape_ungroup.png +0 -0
  1829. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/spool.png +0 -0
  1830. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/tag_blue.png +0 -0
  1831. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/time.png +0 -0
  1832. data/Slic3r/Mac/Slic3r.app/Contents/Resources/res/wrench.png +0 -0
  1833. data/Slic3r/Win/bin/cpfworkrt/cpfworkrt.manifest +8 -0
  1834. data/Slic3r/Win/bin/cpfworkrt/libgcc_s_sjlj-1.dll +0 -0
  1835. data/Slic3r/Win/bin/cpfworkrt/libstdc++-6.dll +0 -0
  1836. data/Slic3r/Win/bin/cpfworkrt/perl514.dll +0 -0
  1837. data/Slic3r/Win/cpfworkrt/cpfworkrt.manifest +8 -0
  1838. data/Slic3r/Win/cpfworkrt/libgcc_s_sjlj-1.dll +0 -0
  1839. data/Slic3r/Win/cpfworkrt/libstdc++-6.dll +0 -0
  1840. data/Slic3r/Win/cpfworkrt/perl514.dll +0 -0
  1841. data/Slic3r/Win/dll/cpwgui.exe +0 -0
  1842. data/Slic3r/Win/dll/wxbase293u_gcc_citrusperl.dll +0 -0
  1843. data/Slic3r/Win/dll/wxbase293u_net_gcc_citrusperl.dll +0 -0
  1844. data/Slic3r/Win/dll/wxmsw293u_adv_gcc_citrusperl.dll +0 -0
  1845. data/Slic3r/Win/dll/wxmsw293u_core_gcc_citrusperl.dll +0 -0
  1846. data/Slic3r/Win/dll/wxmsw293u_gl_gcc_citrusperl.dll +0 -0
  1847. data/Slic3r/Win/dll/wxmsw293u_html_gcc_citrusperl.dll +0 -0
  1848. data/Slic3r/Win/lib/std/Mozilla/CA.pm +99 -0
  1849. data/Slic3r/Win/lib/std/Mozilla/CA/cacert.pem +3366 -0
  1850. data/Slic3r/Win/lib/std/XML/SAX/ParserDetails.ini +16 -0
  1851. data/Slic3r/Win/lib/vrt/00065b3cc7c31741588c51da0ebf7cfc/Storable.dll +0 -0
  1852. data/Slic3r/Win/lib/vrt/0e211ef5300e42b7129e72ce6934dd03/File.dll +0 -0
  1853. data/Slic3r/Win/lib/vrt/11897113663a72e0cf3a40f86569d0d3/package.lib +437 -0
  1854. data/Slic3r/Win/lib/vrt/13887bf5057dfc645e73f9cbc2107b0b/shared.dll +0 -0
  1855. data/Slic3r/Win/lib/vrt/13b74231834b96c1b29d9bb7ff9fc803/XSAccessor.dll +0 -0
  1856. data/Slic3r/Win/lib/vrt/17a8fd354d07706b1d8e07133653aefe/Unicode.dll +0 -0
  1857. data/Slic3r/Win/lib/vrt/1ff31eb32e672b10095dc07142eda94e/Byte.dll +0 -0
  1858. data/Slic3r/Win/lib/vrt/212acdb3b0d578c6c31b6f5b102aaf9f/OpenGL.dll +0 -0
  1859. data/Slic3r/Win/lib/vrt/212acdb3b0d578c6c31b6f5b102aaf9f/freeglut.dll +0 -0
  1860. data/Slic3r/Win/lib/vrt/2b09d17ec43a6c01f265254b54d60739/Dumper.dll +0 -0
  1861. data/Slic3r/Win/lib/vrt/2ce0a6f8648060f015cf6b795bedf11d/SHA.dll +0 -0
  1862. data/Slic3r/Win/lib/vrt/3545b2d83c9d9a29194f9ab80ec5474b/Fcntl.dll +0 -0
  1863. data/Slic3r/Win/lib/vrt/38786f297f552b7038b60152ad9b90fc/ExpatXS.dll +0 -0
  1864. data/Slic3r/Win/lib/vrt/3d306f1634430f34d0521f8ea684e9ec/SSLeay.dll +0 -0
  1865. data/Slic3r/Win/lib/vrt/3ea9b1cd80f790518c416324dd069ebd/encoding.dll +0 -0
  1866. data/Slic3r/Win/lib/vrt/41c42900fc0d462e9a31e174ac8a654c/Html.dll +0 -0
  1867. data/Slic3r/Win/lib/vrt/42c3d19347a691f255d231da3d91f1ab/package.lib +332 -0
  1868. data/Slic3r/Win/lib/vrt/4699e2a2c6a572106b4070861d78c22a/Parser.dll +0 -0
  1869. data/Slic3r/Win/lib/vrt/46c688003f4a63abb5816f68b951f727/MD5.dll +0 -0
  1870. data/Slic3r/Win/lib/vrt/471029ae61c0427e58f24ac9e5a0cca5/package.lib +41 -0
  1871. data/Slic3r/Win/lib/vrt/49bdccea41102e6d90906b74653d30ab/HiRes.dll +0 -0
  1872. data/Slic3r/Win/lib/vrt/4c9065158b425703c56336bd7fd5bbf2/SSLeay.dll +0 -0
  1873. data/Slic3r/Win/lib/vrt/50e0982503943dcf3f001fc2d17d4075/JP.dll +0 -0
  1874. data/Slic3r/Win/lib/vrt/528ccea98cad02a5f453a7135f9ca183/package.lib +0 -0
  1875. data/Slic3r/Win/lib/vrt/6419170f57dff2f058fefa3f8f37c897/EBCDIC.dll +0 -0
  1876. data/Slic3r/Win/lib/vrt/655af4e236089eadb910a60a39fbe815/attributes.dll +0 -0
  1877. data/Slic3r/Win/lib/vrt/6c123a3a5b411759cc21a293df5bed0e/SealRequireHints.dll +0 -0
  1878. data/Slic3r/Win/lib/vrt/7ba0890aa8ff0eed7abb9f76181bd637/Console.dll +0 -0
  1879. data/Slic3r/Win/lib/vrt/7ef678fd3db32983bdf488c788a3a763/IO.dll +0 -0
  1880. data/Slic3r/Win/lib/vrt/804f15d0b003b04c3feb68e47adacf8d/package.lib +1 -0
  1881. data/Slic3r/Win/lib/vrt/8f7c428c727a7d81643b50b598197734/API.dll +0 -0
  1882. data/Slic3r/Win/lib/vrt/8fa3f50b03f9cb0203031cf516aa3973/B.dll +0 -0
  1883. data/Slic3r/Win/lib/vrt/9573d0f8956394a9448b7cb70a24fed3/CN.dll +0 -0
  1884. data/Slic3r/Win/lib/vrt/9a02fe0b6c8a35ffbf56e88f9910abeb/Base64.dll +0 -0
  1885. data/Slic3r/Win/lib/vrt/9cc90b876890f13970933c948cbb4b2e/Print.dll +0 -0
  1886. data/Slic3r/Win/lib/vrt/9d4869e43aaebbcbfc9baec70819f444/indirect.dll +0 -0
  1887. data/Slic3r/Win/lib/vrt/a3600f18eb88b7c4835e2438eeda19b1/Symbol.dll +0 -0
  1888. data/Slic3r/Win/lib/vrt/a3719ad0fa76c06423d0397090ec4ed9/Libm.dll +0 -0
  1889. data/Slic3r/Win/lib/vrt/a40249e26296df558fcddd2c8cbfb2f6/UUID.dll +0 -0
  1890. data/Slic3r/Win/lib/vrt/aa455d4af51625c2acacb6716c0a6e01/scalar.dll +0 -0
  1891. data/Slic3r/Win/lib/vrt/aa976c80169f479f0613ff5283377098/Win32.dll +0 -0
  1892. data/Slic3r/Win/lib/vrt/ad648dbf31179700b4efd00b04f50dab/multidimensional.dll +0 -0
  1893. data/Slic3r/Win/lib/vrt/b48cd6cc5170110b04444736f8ca1a04/mro.dll +0 -0
  1894. data/Slic3r/Win/lib/vrt/b6a5c6ef2abf4a7046bb88d7a8b220ff/GLCanvas.dll +0 -0
  1895. data/Slic3r/Win/lib/vrt/bd26fbb8f6447c2e98cf359976a3c1a7/POSIX.dll +0 -0
  1896. data/Slic3r/Win/lib/vrt/c23df991c561704a8913289bdfea9462/Zlib.dll +0 -0
  1897. data/Slic3r/Win/lib/vrt/c8786c44f0a905ffe6d5d8a4068a75c2/Call.dll +0 -0
  1898. data/Slic3r/Win/lib/vrt/cbbb6d80da8c62ee893a65195943b803/re.dll +0 -0
  1899. data/Slic3r/Win/lib/vrt/cbfee14465f0627fbadfcc84b97d402b/KR.dll +0 -0
  1900. data/Slic3r/Win/lib/vrt/cd0b5b2fa854963191ca9718e26a0abc/Grid.dll +0 -0
  1901. data/Slic3r/Win/lib/vrt/ceb3487499a2d7f0edbcc6aa0c0536c1/NamedCapture.dll +0 -0
  1902. data/Slic3r/Win/lib/vrt/cfbd454ca865af139a419af806f1d4c7/DND.dll +0 -0
  1903. data/Slic3r/Win/lib/vrt/cfcde55111d441748de61cc95acb240e/Check.dll +0 -0
  1904. data/Slic3r/Win/lib/vrt/d0b4c3dceefb5d08dbe60f0e68d0da76/filehandles.dll +0 -0
  1905. data/Slic3r/Win/lib/vrt/d9c3e3943b3f28bc1f09e2f713cc6afb/Glob.dll +0 -0
  1906. data/Slic3r/Win/lib/vrt/da3813f7e06d5ace75632aaf1738303a/Cwd.dll +0 -0
  1907. data/Slic3r/Win/lib/vrt/e29b9764cd99fd442815834972733f63/Encode.dll +0 -0
  1908. data/Slic3r/Win/lib/vrt/e51409fbea61e7f44156de0a7d61ce6e/FastCalc.dll +0 -0
  1909. data/Slic3r/Win/lib/vrt/eaa3f41565bf2fe58068d68f47a06165/Bzip2.dll +0 -0
  1910. data/Slic3r/Win/lib/vrt/eb8576fa2c159886e7f37945c9fb302c/Util.dll +0 -0
  1911. data/Slic3r/Win/lib/vrt/ef0a1b3a50dcc9984703f576320986af/Socket.dll +0 -0
  1912. data/Slic3r/Win/lib/vrt/efa78e66d1d123d9a6f5890b6ca9167a/TW.dll +0 -0
  1913. data/Slic3r/Win/lib/vrt/f490c3f60de8989339da70e91e2faf32/threads.dll +0 -0
  1914. data/Slic3r/Win/lib/vrt/f6025e058c0367c56e8eed568e60077b/Clone.dll +0 -0
  1915. data/Slic3r/Win/lib/vrt/f8d8299b70fb38b8f4ba594e6f23c91f/XS.dll +0 -0
  1916. data/Slic3r/Win/lib/vrt/fa119178d164dcf97f19aecc876231c0/package.lib +0 -0
  1917. data/Slic3r/Win/lib/vrt/fadbe2ebaf950eb9e5e3c3d65739aa92/via.dll +0 -0
  1918. data/Slic3r/Win/lib/vrt/fb078e7d1a272046eb7bd617bd3ed5c4/Wx.dll +0 -0
  1919. data/Slic3r/Win/lib/vrt/ffa8ccc0f7f886ba695e841a491bce9a/XS.dll +0 -0
  1920. data/Slic3r/Win/res/Slic3r.icns +0 -0
  1921. data/Slic3r/Win/res/Slic3r.ico +0 -0
  1922. data/Slic3r/Win/res/Slic3r.png +0 -0
  1923. data/Slic3r/Win/res/Slic3r_128px.png +0 -0
  1924. data/Slic3r/Win/res/Slic3r_192px.png +0 -0
  1925. data/Slic3r/Win/res/Slic3r_192px_transparent.png +0 -0
  1926. data/Slic3r/Win/res/add.png +0 -0
  1927. data/Slic3r/Win/res/arrow_out.png +0 -0
  1928. data/Slic3r/Win/res/arrow_rotate_anticlockwise.png +0 -0
  1929. data/Slic3r/Win/res/arrow_rotate_clockwise.png +0 -0
  1930. data/Slic3r/Win/res/arrow_up.png +0 -0
  1931. data/Slic3r/Win/res/box.png +0 -0
  1932. data/Slic3r/Win/res/brick.png +0 -0
  1933. data/Slic3r/Win/res/brick_add.png +0 -0
  1934. data/Slic3r/Win/res/brick_delete.png +0 -0
  1935. data/Slic3r/Win/res/brick_go.png +0 -0
  1936. data/Slic3r/Win/res/bricks.png +0 -0
  1937. data/Slic3r/Win/res/building.png +0 -0
  1938. data/Slic3r/Win/res/bullet_black.png +0 -0
  1939. data/Slic3r/Win/res/bullet_blue.png +0 -0
  1940. data/Slic3r/Win/res/bullet_white.png +0 -0
  1941. data/Slic3r/Win/res/cog.png +0 -0
  1942. data/Slic3r/Win/res/cog_go.png +0 -0
  1943. data/Slic3r/Win/res/cross.png +0 -0
  1944. data/Slic3r/Win/res/delete.png +0 -0
  1945. data/Slic3r/Win/res/disk.png +0 -0
  1946. data/Slic3r/Win/res/error.png +0 -0
  1947. data/Slic3r/Win/res/funnel.png +0 -0
  1948. data/Slic3r/Win/res/hourglass.png +0 -0
  1949. data/Slic3r/Win/res/layers.png +0 -0
  1950. data/Slic3r/Win/res/note.png +0 -0
  1951. data/Slic3r/Win/res/package.png +0 -0
  1952. data/Slic3r/Win/res/package_green.png +0 -0
  1953. data/Slic3r/Win/res/page_white_go.png +0 -0
  1954. data/Slic3r/Win/res/plugin.png +0 -0
  1955. data/Slic3r/Win/res/printer_empty.png +0 -0
  1956. data/Slic3r/Win/res/shading.png +0 -0
  1957. data/Slic3r/Win/res/shape_ungroup.png +0 -0
  1958. data/Slic3r/Win/res/spool.png +0 -0
  1959. data/Slic3r/Win/res/tag_blue.png +0 -0
  1960. data/Slic3r/Win/res/time.png +0 -0
  1961. data/Slic3r/Win/res/wrench.png +0 -0
  1962. data/Slic3r/Win/slic3r-console.exe +0 -0
  1963. data/Slic3r/Win/slic3r.exe +0 -0
  1964. data/Slic3r/Win/temp.txt +278 -0
  1965. data/lib/STLExtract.rb +155 -0
  1966. data/lib/STLExtract/version.rb +3 -0
  1967. metadata +2044 -0
@@ -0,0 +1,2692 @@
1
+ # Net::SSLeay.pm - Perl module for using Eric Young's implementation of SSL
2
+ #
3
+ # Copyright (c) 1996-2003 Sampo Kellomaki <sampo@iki.fi>, All Rights Reserved.
4
+ # Copyright (C) 2005 Florian Ragwitz <rafl@debian.org>, All Rights Reserved.
5
+ # Copyright (C) 2005 Mike McCauley <mikem@open.com.au>, All Rights Reserved.
6
+ #
7
+ # $Id$
8
+ #
9
+ # Version 1.04, 31.3.1999
10
+ # 30.7.1999, Tracking OpenSSL-0.9.3a changes, --Sampo
11
+ # 31.7.1999, version 1.05 --Sampo
12
+ # 7.4.2001, fixed input error upon 0, OpenSSL-0.9.6a, version 1.06 --Sampo
13
+ # 18.4.2001, added TLSv1 support by Stephen C. Koehler
14
+ # <koehler@securecomputing.com>, version 1.07, --Sampo
15
+ # 25.4.2001, 64 bit fixes by Marko Asplund <aspa@kronodoc.fi> --Sampo
16
+ # 17.4.2001, more error codes from aspa --Sampo
17
+ # 25.9.2001, added heaps and piles of newer OpenSSL auxiliary functions --Sampo
18
+ # 6.11.2001, got rid of $p_errs madness --Sampo
19
+ # 9.11.2001, added EGD (entropy gathering daemon) reference info --Sampo
20
+ # 7.12.2001, Added proxy support by Bruno De Wolf <bruno.dewolf@@pandora._be>
21
+ # 6.1.2002, cosmetic fix to socket options from Kwindla Hultman Kramer <kwindla@@allafrica_.com>
22
+ # 25.3.2002, added post_https_cert and friends per patch from
23
+ # mock@@obscurity.ogr, --Sampo
24
+ # 3.4.2002, added `use bytes' from Marcus Taylor <marcus@@semantico_.com>
25
+ # This avoids unicode/utf8 (as may appear in some XML docs)
26
+ # from fooling the length comuptations. Dropped support for
27
+ # perl5.005_03 because I do not have opportunity to test it. --Sampo
28
+ # 5.4.2002, improved Unicode gotcha eliminator to support old perls --Sampo
29
+ # 8.4.2002, added a small line end fix from Petr Dousa (pdousa@@kerio_.com)
30
+ # 17.5.2002, Added BIO_s_mem, BIO_new, BIO_free, BIO_write, BIO_read
31
+ # BIO_eof, BIO_pending, BIO_wpending, RSA_generate_key, RSA_free
32
+ # --mikem@open._com.au
33
+ # 10.8.2002, Added SSL_peek patch to ssl_read_until from
34
+ # Peter Behroozi <peter@@fhpwireless_.com> --Sampo
35
+ # 21.8.2002, Added SESSION_get_master_key, SSL_get_client_random, SSL_get_server_random
36
+ # --mikem@open.com_.au
37
+ # 2.9.2002, Added SSL_CTX_get_cert_store, X509_STORE_add_cert, X509_STORE_add_crl
38
+ # X509_STORE_set_flags, X509_load_cert_file, X509_load_crl_file
39
+ # X509_load_cert_crl_file, PEM_read_bio_X509_CRL,
40
+ # constants for X509_V_FLAG_* in order to support certificate revocation lists.
41
+ # --mikem@open.com_.au
42
+ # 6.9.2002, fixed X509_STORE_set_flags to X509_STORE_CTX_set_flags, --Sampo
43
+ # 19.9.2002, applied patch from Tim Engler <tim@burntcouch_.com>
44
+ # 18.2.2003, applied patch from Toni Andjelkovic <toni@soth._at>
45
+ # 13.6.2003, partially applied leak patch by Marian Jancar <mjancar@suse._cz>
46
+ # 25.6.2003, write_partial() return value patch from
47
+ # Kim Minh Kaplan <kmkaplan@selfoffice._com>
48
+ # 17.8.2003, added http support :-) --Sampo
49
+ # 17.8.2003, started 1.25 dev --Sampo
50
+ # 30.11.2005, Applied a patch by Peter Behroozi that adds get1_session() for session caching --Florian
51
+ # 30.11.2005, Applied a patch by ex8k-hbn@asahi-net.or.jp that limits the chunk size for tcp_read_all --Florian
52
+ # 30.11.2005, Applied a patch by ivan-cpan-rt@420.am that avoids adding a Host header if an own is specified in do_httpx3
53
+ # 13.12.2005, Added comments re thread safety and resetting of default_passwd_callback after use
54
+ # --mikem@open.com.au
55
+ #
56
+ # The distribution and use of this module are subject to the conditions
57
+ # listed in LICENSE file at the root of OpenSSL-0.9.7b
58
+ # distribution (i.e. free, but mandatory attribution and NO WARRANTY).
59
+
60
+ package Net::SSLeay;
61
+
62
+ use strict;
63
+ use Carp;
64
+ use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $AUTOLOAD $CRLF);
65
+ use Socket;
66
+ use Errno;
67
+
68
+ require Exporter;
69
+ use AutoLoader;
70
+
71
+ # 0=no warns, 1=only errors, 2=ciphers, 3=progress, 4=dump data
72
+ $Net::SSLeay::trace = 0; # Do not change here, use
73
+ # $Net::SSLeay::trace = [1-4] in caller
74
+
75
+ # 2 = insist on v2 SSL protocol
76
+ # 3 = insist on v3 SSL
77
+ # 10 = insist on TLSv1
78
+ # 0 or undef = guess (v23)
79
+ #
80
+ $Net::SSLeay::ssl_version = 0; # don't change here, use
81
+ # Net::SSLeay::version=[2,3,0] in caller
82
+
83
+ #define to enable the "cat /proc/$$/stat" stuff
84
+ $Net::SSLeay::linux_debug = 0;
85
+
86
+ # Number of seconds to sleep after sending message and before half
87
+ # closing connection. Useful with antiquated broken servers.
88
+ $Net::SSLeay::slowly = 0;
89
+
90
+ # RANDOM NUMBER INITIALIZATION
91
+ #
92
+ # Edit to your taste. Using /dev/random would be more secure, but may
93
+ # block if randomness is not available, thus the default is
94
+ # /dev/urandom. $how_random determines how many bits of randomness to take
95
+ # from the device. You should take enough (read SSLeay/doc/rand), but
96
+ # beware that randomness is limited resource so you should not waste
97
+ # it either or you may end up with randomness depletion (situation where
98
+ # /dev/random would block and /dev/urandom starts to return predictable
99
+ # numbers).
100
+ #
101
+ # N.B. /dev/urandom does not exit on all systems, such as Solaris 2.6. In that
102
+ # case you should get a third party package that emulates /dev/urandom
103
+ # (e.g. via named pipe) or supply a random number file. Some such
104
+ # packages are documented in Caveat section of the POD documentation.
105
+
106
+ $Net::SSLeay::random_device = '/dev/urandom';
107
+ $Net::SSLeay::how_random = 512;
108
+
109
+ $VERSION = '1.36';
110
+ @ISA = qw(Exporter);
111
+ @EXPORT_OK = qw(
112
+ AT_MD5_WITH_RSA_ENCRYPTION
113
+ CB_ACCEPT_EXIT
114
+ CB_ACCEPT_LOOP
115
+ CB_CONNECT_EXIT
116
+ CB_CONNECT_LOOP
117
+ CK_DES_192_EDE3_CBC_WITH_MD5
118
+ CK_DES_192_EDE3_CBC_WITH_SHA
119
+ CK_DES_64_CBC_WITH_MD5
120
+ CK_DES_64_CBC_WITH_SHA
121
+ CK_DES_64_CFB64_WITH_MD5_1
122
+ CK_IDEA_128_CBC_WITH_MD5
123
+ CK_NULL
124
+ CK_NULL_WITH_MD5
125
+ CK_RC2_128_CBC_EXPORT40_WITH_MD5
126
+ CK_RC2_128_CBC_WITH_MD5
127
+ CK_RC4_128_EXPORT40_WITH_MD5
128
+ CK_RC4_128_WITH_MD5
129
+ CLIENT_VERSION
130
+ ERROR_NONE
131
+ ERROR_SSL
132
+ ERROR_SYSCALL
133
+ ERROR_WANT_CONNECT
134
+ ERROR_WANT_READ
135
+ ERROR_WANT_WRITE
136
+ ERROR_WANT_X509_LOOKUP
137
+ ERROR_ZERO_RETURN
138
+ CT_X509_CERTIFICATE
139
+ FILETYPE_ASN1
140
+ FILETYPE_PEM
141
+ F_CLIENT_CERTIFICATE
142
+ F_CLIENT_HELLO
143
+ F_CLIENT_MASTER_KEY
144
+ F_D2I_SSL_SESSION
145
+ F_GET_CLIENT_FINISHED
146
+ F_GET_CLIENT_HELLO
147
+ F_GET_CLIENT_MASTER_KEY
148
+ F_GET_SERVER_FINISHED
149
+ F_GET_SERVER_HELLO
150
+ F_GET_SERVER_VERIFY
151
+ F_I2D_SSL_SESSION
152
+ F_READ_N
153
+ F_REQUEST_CERTIFICATE
154
+ F_SERVER_HELLO
155
+ F_SSL_ACCEPT
156
+ F_SSL_CERT_NEW
157
+ F_SSL_CONNECT
158
+ F_SSL_ENC_DES_CBC_INIT
159
+ F_SSL_ENC_DES_CFB_INIT
160
+ F_SSL_ENC_DES_EDE3_CBC_INIT
161
+ F_SSL_ENC_IDEA_CBC_INIT
162
+ F_SSL_ENC_NULL_INIT
163
+ F_SSL_ENC_RC2_CBC_INIT
164
+ F_SSL_ENC_RC4_INIT
165
+ F_SSL_GET_NEW_SESSION
166
+ F_SSL_MAKE_CIPHER_LIST
167
+ F_SSL_NEW
168
+ F_SSL_READ
169
+ F_SSL_RSA_PRIVATE_DECRYPT
170
+ F_SSL_RSA_PUBLIC_ENCRYPT
171
+ F_SSL_SESSION_NEW
172
+ F_SSL_SESSION_PRINT_FP
173
+ F_SSL_SET_CERTIFICATE
174
+ F_SSL_SET_FD
175
+ F_SSL_SET_RFD
176
+ F_SSL_SET_WFD
177
+ F_SSL_STARTUP
178
+ F_SSL_USE_CERTIFICATE
179
+ F_SSL_USE_CERTIFICATE_ASN1
180
+ F_SSL_USE_CERTIFICATE_FILE
181
+ F_SSL_USE_PRIVATEKEY
182
+ F_SSL_USE_PRIVATEKEY_ASN1
183
+ F_SSL_USE_PRIVATEKEY_FILE
184
+ F_SSL_USE_RSAPRIVATEKEY
185
+ F_SSL_USE_RSAPRIVATEKEY_ASN1
186
+ F_SSL_USE_RSAPRIVATEKEY_FILE
187
+ F_WRITE_PENDING
188
+ GEN_OTHERNAME
189
+ GEN_EMAIL
190
+ GEN_DNS
191
+ GEN_X400
192
+ GEN_DIRNAME
193
+ GEN_EDIPARTY
194
+ GEN_URI
195
+ GEN_IPADD
196
+ GEN_RID
197
+ MAX_MASTER_KEY_LENGTH_IN_BITS
198
+ MAX_RECORD_LENGTH_2_BYTE_HEADER
199
+ MAX_RECORD_LENGTH_3_BYTE_HEADER
200
+ MAX_SSL_SESSION_ID_LENGTH_IN_BYTES
201
+ MIN_RSA_MODULUS_LENGTH_IN_BYTES
202
+ MT_CLIENT_CERTIFICATE
203
+ MT_CLIENT_FINISHED
204
+ MT_CLIENT_HELLO
205
+ MT_CLIENT_MASTER_KEY
206
+ MT_ERROR
207
+ MT_REQUEST_CERTIFICATE
208
+ MT_SERVER_FINISHED
209
+ MT_SERVER_HELLO
210
+ MT_SERVER_VERIFY
211
+ NOTHING
212
+ NID_undef
213
+ NID_algorithm
214
+ NID_rsadsi
215
+ NID_pkcs
216
+ NID_md2
217
+ NID_md5
218
+ NID_rc4
219
+ NID_rsaEncryption
220
+ NID_md2WithRSAEncryption
221
+ NID_md5WithRSAEncryption
222
+ NID_pbeWithMD2AndDES_CBC
223
+ NID_pbeWithMD5AndDES_CBC
224
+ NID_X500
225
+ NID_X509
226
+ NID_commonName
227
+ NID_countryName
228
+ NID_localityName
229
+ NID_stateOrProvinceName
230
+ NID_organizationName
231
+ NID_organizationalUnitName
232
+ NID_rsa
233
+ NID_pkcs7
234
+ NID_pkcs7_data
235
+ NID_pkcs7_signed
236
+ NID_pkcs7_enveloped
237
+ NID_pkcs7_signedAndEnveloped
238
+ NID_pkcs7_digest
239
+ NID_pkcs7_encrypted
240
+ NID_pkcs3
241
+ NID_dhKeyAgreement
242
+ NID_des_ecb
243
+ NID_des_cfb64
244
+ NID_des_cbc
245
+ NID_des_ede
246
+ NID_des_ede3
247
+ NID_idea_cbc
248
+ NID_idea_cfb64
249
+ NID_idea_ecb
250
+ NID_rc2_cbc
251
+ NID_rc2_ecb
252
+ NID_rc2_cfb64
253
+ NID_rc2_ofb64
254
+ NID_sha
255
+ NID_shaWithRSAEncryption
256
+ NID_des_ede_cbc
257
+ NID_des_ede3_cbc
258
+ NID_des_ofb64
259
+ NID_idea_ofb64
260
+ NID_pkcs9
261
+ NID_pkcs9_emailAddress
262
+ NID_pkcs9_unstructuredName
263
+ NID_pkcs9_contentType
264
+ NID_pkcs9_messageDigest
265
+ NID_pkcs9_signingTime
266
+ NID_pkcs9_countersignature
267
+ NID_pkcs9_challengePassword
268
+ NID_pkcs9_unstructuredAddress
269
+ NID_pkcs9_extCertAttributes
270
+ NID_netscape
271
+ NID_netscape_cert_extension
272
+ NID_netscape_data_type
273
+ NID_des_ede_cfb64
274
+ NID_des_ede3_cfb64
275
+ NID_des_ede_ofb64
276
+ NID_des_ede3_ofb64
277
+ NID_sha1
278
+ NID_sha1WithRSAEncryption
279
+ NID_dsaWithSHA
280
+ NID_dsa_2
281
+ NID_pbeWithSHA1AndRC2_CBC
282
+ NID_id_pbkdf2
283
+ NID_dsaWithSHA1_2
284
+ NID_netscape_cert_type
285
+ NID_netscape_base_url
286
+ NID_netscape_revocation_url
287
+ NID_netscape_ca_revocation_url
288
+ NID_netscape_renewal_url
289
+ NID_netscape_ca_policy_url
290
+ NID_netscape_ssl_server_name
291
+ NID_netscape_comment
292
+ NID_netscape_cert_sequence
293
+ NID_desx_cbc
294
+ NID_id_ce
295
+ NID_subject_key_identifier
296
+ NID_key_usage
297
+ NID_private_key_usage_period
298
+ NID_subject_alt_name
299
+ NID_issuer_alt_name
300
+ NID_basic_constraints
301
+ NID_crl_number
302
+ NID_certificate_policies
303
+ NID_authority_key_identifier
304
+ NID_bf_cbc
305
+ NID_bf_ecb
306
+ NID_bf_cfb64
307
+ NID_bf_ofb64
308
+ NID_mdc2
309
+ NID_mdc2WithRSA
310
+ NID_rc4_40
311
+ NID_rc2_40_cbc
312
+ NID_givenName
313
+ NID_surname
314
+ NID_initials
315
+ NID_uniqueIdentifier
316
+ NID_crl_distribution_points
317
+ NID_md5WithRSA
318
+ NID_serialNumber
319
+ NID_title
320
+ NID_description
321
+ NID_cast5_cbc
322
+ NID_cast5_ecb
323
+ NID_cast5_cfb64
324
+ NID_cast5_ofb64
325
+ NID_pbeWithMD5AndCast5_CBC
326
+ NID_dsaWithSHA1
327
+ NID_md5_sha1
328
+ NID_sha1WithRSA
329
+ NID_dsa
330
+ NID_ripemd160
331
+ NID_ripemd160WithRSA
332
+ NID_rc5_cbc
333
+ NID_rc5_ecb
334
+ NID_rc5_cfb64
335
+ NID_rc5_ofb64
336
+ NID_rle_compression
337
+ NID_zlib_compression
338
+ NID_ext_key_usage
339
+ NID_id_pkix
340
+ NID_id_kp
341
+ NID_server_auth
342
+ NID_client_auth
343
+ NID_code_sign
344
+ NID_email_protect
345
+ NID_time_stamp
346
+ NID_ms_code_ind
347
+ NID_ms_code_com
348
+ NID_ms_ctl_sign
349
+ NID_ms_sgc
350
+ NID_ms_efs
351
+ NID_ns_sgc
352
+ NID_delta_crl
353
+ NID_crl_reason
354
+ NID_invalidity_date
355
+ NID_sxnet
356
+ NID_pbe_WithSHA1And128BitRC4
357
+ NID_pbe_WithSHA1And40BitRC4
358
+ NID_pbe_WithSHA1And3_Key_TripleDES_CBC
359
+ NID_pbe_WithSHA1And2_Key_TripleDES_CBC
360
+ NID_pbe_WithSHA1And128BitRC2_CBC
361
+ NID_pbe_WithSHA1And40BitRC2_CBC
362
+ NID_keyBag
363
+ NID_pkcs8ShroudedKeyBag
364
+ NID_certBag
365
+ NID_crlBag
366
+ NID_secretBag
367
+ NID_safeContentsBag
368
+ NID_friendlyName
369
+ NID_localKeyID
370
+ NID_x509Certificate
371
+ NID_sdsiCertificate
372
+ NID_x509Crl
373
+ NID_pbes2
374
+ NID_pbmac1
375
+ NID_hmacWithSHA1
376
+ NID_id_qt_cps
377
+ NID_id_qt_unotice
378
+ NID_rc2_64_cbc
379
+ NID_SMIMECapabilities
380
+ NID_pbeWithMD2AndRC2_CBC
381
+ NID_pbeWithMD5AndRC2_CBC
382
+ NID_pbeWithSHA1AndDES_CBC
383
+ NID_ms_ext_req
384
+ NID_ext_req
385
+ NID_name
386
+ NID_dnQualifier
387
+ NID_id_pe
388
+ NID_id_ad
389
+ NID_info_access
390
+ NID_ad_OCSP
391
+ NID_ad_ca_issuers
392
+ NID_OCSP_sign
393
+ OPENSSL_VERSION_NUMBER
394
+ PE_BAD_CERTIFICATE
395
+ PE_NO_CERTIFICATE
396
+ PE_NO_CIPHER
397
+ PE_UNSUPPORTED_CERTIFICATE_TYPE
398
+ READING
399
+ RECEIVED_SHUTDOWN
400
+ RWERR_BAD_MAC_DECODE
401
+ RWERR_BAD_WRITE_RETRY
402
+ RWERR_INTERNAL_ERROR
403
+ R_BAD_AUTHENTICATION_TYPE
404
+ R_BAD_CHECKSUM
405
+ R_BAD_MAC_DECODE
406
+ R_BAD_RESPONSE_ARGUMENT
407
+ R_BAD_SSL_FILETYPE
408
+ R_BAD_SSL_SESSION_ID_LENGTH
409
+ R_BAD_STATE
410
+ R_BAD_WRITE_RETRY
411
+ R_CHALLENGE_IS_DIFFERENT
412
+ R_CIPHER_CODE_TOO_LONG
413
+ R_CIPHER_TABLE_SRC_ERROR
414
+ R_CONECTION_ID_IS_DIFFERENT
415
+ R_INVALID_CHALLENGE_LENGTH
416
+ R_NO_CERTIFICATE_SET
417
+ R_NO_CERTIFICATE_SPECIFIED
418
+ R_NO_CIPHER_LIST
419
+ R_NO_CIPHER_MATCH
420
+ R_NO_CIPHER_WE_TRUST
421
+ R_NO_PRIVATEKEY
422
+ R_NO_PUBLICKEY
423
+ R_NO_READ_METHOD_SET
424
+ R_NO_WRITE_METHOD_SET
425
+ R_NULL_SSL_CTX
426
+ R_PEER_DID_NOT_RETURN_A_CERTIFICATE
427
+ R_PEER_ERROR
428
+ R_PEER_ERROR_CERTIFICATE
429
+ R_PEER_ERROR_NO_CIPHER
430
+ R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE
431
+ R_PERR_ERROR_NO_CERTIFICATE
432
+ R_PUBLIC_KEY_ENCRYPT_ERROR
433
+ R_PUBLIC_KEY_IS_NOT_RSA
434
+ R_PUBLIC_KEY_NO_RSA
435
+ R_READ_WRONG_PACKET_TYPE
436
+ R_REVERSE_KEY_ARG_LENGTH_IS_WRONG
437
+ R_REVERSE_MASTER_KEY_LENGTH_IS_WRONG
438
+ R_REVERSE_SSL_SESSION_ID_LENGTH_IS_WRONG
439
+ R_SHORT_READ
440
+ R_SSL_SESSION_ID_IS_DIFFERENT
441
+ R_UNABLE_TO_EXTRACT_PUBLIC_KEY
442
+ R_UNDEFINED_INIT_STATE
443
+ R_UNKNOWN_REMOTE_ERROR_TYPE
444
+ R_UNKNOWN_STATE
445
+ R_UNSUPORTED_CIPHER
446
+ R_WRONG_PUBLIC_KEY_TYPE
447
+ R_X509_LIB
448
+ RSA_3
449
+ RSA_F4
450
+ SENT_SHUTDOWN
451
+ SERVER_VERSION
452
+ SESSION
453
+ SESSION_ASN1_VERSION
454
+ ST_ACCEPT
455
+ ST_BEFORE
456
+ ST_CLIENT_START_ENCRYPTION
457
+ ST_CONNECT
458
+ ST_GET_CLIENT_FINISHED_A
459
+ ST_GET_CLIENT_FINISHED_B
460
+ ST_GET_CLIENT_HELLO_A
461
+ ST_GET_CLIENT_HELLO_B
462
+ ST_GET_CLIENT_MASTER_KEY_A
463
+ ST_GET_CLIENT_MASTER_KEY_B
464
+ ST_GET_SERVER_FINISHED_A
465
+ ST_GET_SERVER_FINISHED_B
466
+ ST_GET_SERVER_HELLO_A
467
+ ST_GET_SERVER_HELLO_B
468
+ ST_GET_SERVER_VERIFY_A
469
+ ST_GET_SERVER_VERIFY_B
470
+ ST_INIT
471
+ ST_OK
472
+ ST_READ_BODY
473
+ ST_READ_HEADER
474
+ ST_SEND_CLIENT_CERTIFICATE_A
475
+ ST_SEND_CLIENT_CERTIFICATE_B
476
+ ST_SEND_CLIENT_CERTIFICATE_C
477
+ ST_SEND_CLIENT_CERTIFICATE_D
478
+ ST_SEND_CLIENT_FINISHED_A
479
+ ST_SEND_CLIENT_FINISHED_B
480
+ ST_SEND_CLIENT_HELLO_A
481
+ ST_SEND_CLIENT_HELLO_B
482
+ ST_SEND_CLIENT_MASTER_KEY_A
483
+ ST_SEND_CLIENT_MASTER_KEY_B
484
+ ST_SEND_REQUEST_CERTIFICATE_A
485
+ ST_SEND_REQUEST_CERTIFICATE_B
486
+ ST_SEND_REQUEST_CERTIFICATE_C
487
+ ST_SEND_REQUEST_CERTIFICATE_D
488
+ ST_SEND_SERVER_FINISHED_A
489
+ ST_SEND_SERVER_FINISHED_B
490
+ ST_SEND_SERVER_HELLO_A
491
+ ST_SEND_SERVER_HELLO_B
492
+ ST_SEND_SERVER_VERIFY_A
493
+ ST_SEND_SERVER_VERIFY_B
494
+ ST_SERVER_START_ENCRYPTION
495
+ ST_X509_GET_CLIENT_CERTIFICATE
496
+ ST_X509_GET_SERVER_CERTIFICATE
497
+ TXT_DES_192_EDE3_CBC_WITH_MD5
498
+ TXT_DES_192_EDE3_CBC_WITH_SHA
499
+ TXT_DES_64_CBC_WITH_MD5
500
+ TXT_DES_64_CBC_WITH_SHA
501
+ TXT_DES_64_CFB64_WITH_MD5_1
502
+ TXT_IDEA_128_CBC_WITH_MD5
503
+ TXT_NULL
504
+ TXT_NULL_WITH_MD5
505
+ TXT_RC2_128_CBC_EXPORT40_WITH_MD5
506
+ TXT_RC2_128_CBC_WITH_MD5
507
+ TXT_RC4_128_EXPORT40_WITH_MD5
508
+ TXT_RC4_128_WITH_MD5
509
+ VERIFY_CLIENT_ONCE
510
+ VERIFY_FAIL_IF_NO_PEER_CERT
511
+ VERIFY_NONE
512
+ VERIFY_PEER
513
+ WRITING
514
+ X509_LOOKUP
515
+ X509_V_FLAG_CB_ISSUER_CHECK
516
+ X509_V_FLAG_USE_CHECK_TIME
517
+ X509_V_FLAG_CRL_CHECK
518
+ X509_V_FLAG_CRL_CHECK_ALL
519
+ X509_V_FLAG_IGNORE_CRITICAL
520
+ CTX_new
521
+ CTX_v2_new
522
+ CTX_v3_new
523
+ CTX_v23_new
524
+ CTX_free
525
+ new
526
+ free
527
+ accept
528
+ clear
529
+ connect
530
+ set_fd
531
+ set_rfd
532
+ set_wfd
533
+ get_fd
534
+ read
535
+ write
536
+ peek
537
+ use_RSAPrivateKey
538
+ use_RSAPrivateKey_ASN1
539
+ use_RSAPrivateKey_file
540
+ CTX_use_RSAPrivateKey_file
541
+ use_PrivateKey
542
+ use_PrivateKey_ASN1
543
+ use_PrivateKey_file
544
+ use_certificate
545
+ use_certificate_ASN1
546
+ use_certificate_file
547
+ CTX_use_certificate_file
548
+ load_error_strings
549
+ ERR_load_SSL_strings
550
+ ERR_load_RAND_strings
551
+ state_string
552
+ rstate_string
553
+ state_string_long
554
+ rstate_string_long
555
+ get_time
556
+ set_time
557
+ get_timeout
558
+ set_timeout
559
+ copy_session_id
560
+ set_read_ahead
561
+ get_read_ahead
562
+ pending
563
+ get_cipher_list
564
+ set_cipher_list
565
+ get_cipher
566
+ get_shared_ciphers
567
+ get_peer_certificate
568
+ set_verify
569
+ flush_sessions
570
+ set_bio
571
+ get_rbio
572
+ get_wbio
573
+ SESSION_new
574
+ SESSION_print
575
+ SESSION_free
576
+ i2d_SSL_SESSION
577
+ set_session
578
+ add_session
579
+ remove_session
580
+ d2i_SSL_SESSION
581
+ BIO_f_ssl
582
+ BIO_new
583
+ BIO_new_file
584
+ BIO_s_mem
585
+ BIO_free
586
+ BIO_read
587
+ BIO_write
588
+ BIO_eof
589
+ BIO_pending
590
+ BIO_wpending
591
+ ERR_get_error
592
+ ERR_error_string
593
+ err
594
+ clear_error
595
+ X509_get_issuer_name
596
+ X509_get_subject_name
597
+ X509_NAME_oneline
598
+ X509_NAME_get_text_by_NID
599
+ CTX_get_cert_store
600
+ X509_STORE_add_cert
601
+ X509_STORE_add_crl
602
+ X509_STORE_CTX_set_flags
603
+ X509_load_cert_file
604
+ X509_load_crl_file
605
+ X509_load_cert_crl_file
606
+ PEM_read_bio_X509_CRL
607
+ die_if_ssl_error
608
+ die_now
609
+ print_errs
610
+ set_cert_and_key
611
+ set_server_cert_and_key
612
+ make_form
613
+ make_headers
614
+ do_https
615
+ get_https
616
+ post_https
617
+ get_https4
618
+ post_https4
619
+ sslcat
620
+ ssl_read_CRLF
621
+ ssl_read_all
622
+ ssl_read_until
623
+ ssl_write_CRLF
624
+ ssl_write_all
625
+ get_http
626
+ post_http
627
+ get_httpx
628
+ post_httpx
629
+ get_https3
630
+ post_https3
631
+ get_http4
632
+ post_http4
633
+ get_httpx4
634
+ post_httpx4
635
+ tcpcat
636
+ tcpxcat
637
+ tcp_read_CRLF
638
+ tcp_read_all
639
+ tcp_read_until
640
+ tcp_write_CRLF
641
+ tcp_write_all
642
+ dump_peer_certificate
643
+ RSA_generate_key
644
+ RSA_free
645
+ X509_free
646
+ SESSION_get_master_key
647
+ get_client_random
648
+ get_server_random
649
+ );
650
+
651
+ sub AUTOLOAD {
652
+ # This AUTOLOAD is used to 'autoload' constants from the constant()
653
+ # XS function. If a constant is not found then control is passed
654
+ # to the AUTOLOAD in AutoLoader.
655
+
656
+ my $constname;
657
+ ($constname = $AUTOLOAD) =~ s/.*:://;
658
+ my $val = constant($constname);
659
+ if ($! != 0) {
660
+ if ($! =~ /((Invalid)|(not valid))/i || $!{EINVAL}) {
661
+ $AutoLoader::AUTOLOAD = $AUTOLOAD;
662
+ goto &AutoLoader::AUTOLOAD;
663
+ }
664
+ else {
665
+ croak "Your vendor has not defined SSLeay macro $constname";
666
+ }
667
+ }
668
+ eval "sub $AUTOLOAD { $val }";
669
+ goto &$AUTOLOAD;
670
+ }
671
+
672
+ eval {
673
+ require XSLoader;
674
+ XSLoader::load('Net::SSLeay', $VERSION);
675
+ 1;
676
+ } or do {
677
+ require DynaLoader;
678
+ push @ISA, 'DynaLoader';
679
+ bootstrap Net::SSLeay $VERSION;
680
+ };
681
+
682
+ # Preloaded methods go here.
683
+
684
+ $CRLF = "\x0d\x0a"; # because \r\n is not fully portable
685
+
686
+ ### Print SSLeay error stack
687
+
688
+ sub print_errs {
689
+ my ($msg) = @_;
690
+ my ($count, $err, $errs, $e) = (0,0,'');
691
+ while ($err = ERR_get_error()) {
692
+ $count ++;
693
+ $e = "$msg $$: $count - " . ERR_error_string($err) . "\n";
694
+ $errs .= $e;
695
+ warn $e if $Net::SSLeay::trace;
696
+ }
697
+ return $errs;
698
+ }
699
+
700
+ # Death is conditional to SSLeay errors existing, i.e. this function checks
701
+ # for errors and only dies in affirmative.
702
+ # usage: Net::SSLeay::write($ssl, "foo") or die_if_ssl_error("SSL write ($!)");
703
+
704
+ sub die_if_ssl_error {
705
+ my ($msg) = @_;
706
+ die "$$: $msg\n" if print_errs($msg);
707
+ }
708
+
709
+ # Unconditional death. Used to print SSLeay errors before dying.
710
+ # usage: Net::SSLeay::connect($ssl) or die_now("Failed SSL connect ($!)");
711
+
712
+ sub die_now {
713
+ my ($msg) = @_;
714
+ print_errs($msg);
715
+ die "$$: $msg\n";
716
+ }
717
+
718
+ # Perl 5.6.* unicode support causes that length() no longer reliably
719
+ # reflects the byte length of a string. This eval is to fix that.
720
+ # Thanks to Sean Burke for the snippet.
721
+
722
+ BEGIN{
723
+ eval 'use bytes; sub blength ($) { length $_[0] }';
724
+ $@ and eval ' sub blength ($) { length $_[0] }' ;
725
+ }
726
+
727
+ # Autoload methods go after =cut, and are processed by the autosplit program.
728
+
729
+ 1;
730
+ __END__
731
+ # Documentation. Use `perl-root/pod/pod2html SSLeay.pm` to output html
732
+
733
+ =head1 NAME
734
+
735
+ Net::SSLeay - Perl extension for using OpenSSL
736
+
737
+ =head1 SYNOPSIS
738
+
739
+ use Net::SSLeay qw(get_https post_https sslcat make_headers make_form);
740
+
741
+ ($page) = get_https('www.bacus.pt', 443, '/'); # 1
742
+
743
+ ($page, $response, %reply_headers)
744
+ = get_https('www.bacus.pt', 443, '/', # 2
745
+ make_headers(User-Agent => 'Cryptozilla/5.0b1',
746
+ Referer => 'https://www.bacus.pt'
747
+ ));
748
+
749
+ ($page, $result, %headers) = # 2b
750
+ = get_https('www.bacus.pt', 443, '/protected.html',
751
+ make_headers(Authorization =>
752
+ 'Basic ' . MIME::Base64::encode("$user:$pass",''))
753
+ );
754
+
755
+ ($page, $response, %reply_headers)
756
+ = post_https('www.bacus.pt', 443, '/foo.cgi', '', # 3
757
+ make_form(OK => '1',
758
+ name => 'Sampo'
759
+ ));
760
+
761
+ $reply = sslcat($host, $port, $request); # 4
762
+
763
+ ($reply, $err, $server_cert) = sslcat($host, $port, $request); # 5
764
+
765
+ $Net::SSLeay::trace = 2; # 0=no debugging, 1=ciphers, 2=trace, 3=dump data
766
+
767
+ =head1 DESCRIPTION
768
+
769
+ There is a related module called C<Net::SSLeay::Handle> included in this
770
+ distribution that you might want to use instead. It has its own pod
771
+ documentation.
772
+
773
+ This module offers some high level convenience functions for accessing
774
+ web pages on SSL servers (for symmetry, the same API is offered for
775
+ accessing http servers, too), an C<sslcat()> function for writing your own
776
+ clients, and finally access to the SSL api of the SSLeay/OpenSSL package
777
+ so you can write servers or clients for more complicated applications.
778
+
779
+ For high level functions it is most convenient to import them into your
780
+ main namespace as indicated in the synopsis.
781
+
782
+ Case 1 demonstrates the typical invocation of get_https() to fetch an HTML
783
+ page from secure server. The first argument provides the hostname or IP
784
+ in dotted decimal notation of the remote server to contact. The second
785
+ argument is the TCP port at the remote end (your own port is picked
786
+ arbitrarily from high numbered ports as usual for TCP). The third
787
+ argument is the URL of the page without the host name part. If in
788
+ doubt consult the HTTP specifications at L<http://www.w3c.org>.
789
+
790
+ Case 2 demonstrates full fledged use of C<get_https()>. As can be seen,
791
+ C<get_https()> parses the response and response headers and returns them as
792
+ a list, which can be captured in a hash for later reference. Also a
793
+ fourth argument to C<get_https()> is used to insert some additional headers
794
+ in the request. C<make_headers()> is a function that will convert a list or
795
+ hash to such headers. By default C<get_https()> supplies C<Host> (to make
796
+ virtual hosting easy) and C<Accept> (reportedly needed by IIS) headers.
797
+
798
+ Case 2b demonstrates how to get a password protected page. Refer to
799
+ the HTTP protocol specifications for further details (e.g. RFC-2617).
800
+
801
+ Case 3 invokes C<post_https()> to submit a HTML/CGI form to a secure
802
+ server. The first four arguments are equal to C<get_https()> (note that
803
+ the empty string (C<''>) is passed as header argument).
804
+ The fifth argument is the
805
+ contents of the form formatted according to CGI specification. In this
806
+ case the helper function C<make_https()> is used to do the formatting,
807
+ but you could pass any string. C<post_https()> automatically adds
808
+ C<Content-Type> and C<Content-Length> headers to the request.
809
+
810
+ Case 4 shows the fundamental C<sslcat()> function (inspired in spirit by
811
+ the C<netcat> utility :-). It's your swiss army knife that allows you to
812
+ easily contact servers, send some data, and then get the response. You
813
+ are responsible for formatting the data and parsing the response -
814
+ C<sslcat()> is just a transport.
815
+
816
+ Case 5 is a full invocation of C<sslcat()> which allows the return of errors
817
+ as well as the server (peer) certificate.
818
+
819
+ The C<$trace> global variable can be used to control the verbosity of the
820
+ high level functions. Level 0 guarantees silence, level 1 (the default)
821
+ only emits error messages.
822
+
823
+ =head2 Alternate versions of the API
824
+
825
+ The above mentioned functions actually return the response headers as
826
+ a list, which only gets converted to hash upon assignment (this
827
+ assignment looses information if the same header occurs twice, as may
828
+ be the case with cookies). There are also other variants of the
829
+ functions that return unprocessed headers and that return a reference
830
+ to a hash.
831
+
832
+ ($page, $response, @headers) = get_https('www.bacus.pt', 443, '/');
833
+ for ($i = 0; $i < $#headers; $i+=2) {
834
+ print "$headers[$i] = " . $headers[$i+1] . "\n";
835
+ }
836
+
837
+ ($page, $response, $headers, $server_cert)
838
+ = get_https3('www.bacus.pt', 443, '/');
839
+ print "$headers\n";
840
+
841
+ ($page, $response, %headers_ref, $server_cert)
842
+ = get_https4('www.bacus.pt', 443, '/');
843
+ for $k (sort keys %{headers_ref}) {
844
+ for $v (@{$headers_ref{$k}}) {
845
+ print "$k = $v\n";
846
+ }
847
+ }
848
+
849
+ All of the above code fragments accomplish the same thing: display all
850
+ values of all headers. The API functions ending in "3" return the
851
+ headers simply as a scalar string and it is up to the application to
852
+ split them up. The functions ending in "4" return a reference to
853
+ a hash of arrays (see L<perlref> and L<perllol> if you are
854
+ not familiar with complex perl data structures). To access a single value
855
+ of such a header hash you would do something like
856
+
857
+ print $headers_ref{COOKIE}[0];
858
+
859
+ Variants 3 and 4 also allow you to discover the server certificate
860
+ in case you would like to store or display it, e.g.
861
+
862
+ ($p, $resp, $hdrs, $server_cert) = get_https3('www.bacus.pt', 443, '/');
863
+ if (!defined($server_cert) || ($server_cert == 0)) {
864
+ warn "Subject Name: undefined, Issuer Name: undefined";
865
+ } else {
866
+ warn 'Subject Name: '
867
+ . Net::SSLeay::X509_NAME_oneline(
868
+ Net::SSLeay::X509_get_subject_name($server_cert))
869
+ . 'Issuer Name: '
870
+ . Net::SSLeay::X509_NAME_oneline(
871
+ Net::SSLeay::X509_get_issuer_name($server_cert));
872
+ }
873
+
874
+ Beware that this method only allows after the fact verification of
875
+ the certificate: by the time C<get_https3()> has returned the https
876
+ request has already been sent to the server, whether you decide to
877
+ trust it or not. To do the verification correctly you must either
878
+ employ the OpenSSL certificate verification framework or use
879
+ the lower level API to first connect and verify the certificate
880
+ and only then send the http data. See the implementation of C<ds_https3()>
881
+ for guidance on how to do this.
882
+
883
+ =head2 Using client certificates
884
+
885
+ Secure web communications are encrypted using symmetric crypto keys
886
+ exchanged using encryption based on the certificate of the
887
+ server. Therefore in all SSL connections the server must have a
888
+ certificate. This serves both to authenticate the server to the
889
+ clients and to perform the key exchange.
890
+
891
+ Sometimes it is necessary to authenticate the client as well. Two
892
+ options are available: HTTP basic authentication and a client side
893
+ certificate. The basic authentication over HTTPS is actually quite
894
+ safe because HTTPS guarantees that the password will not travel in
895
+ the clear. Never-the-less, problems like easily guessable passwords
896
+ remain. The client certificate method involves authentication of the
897
+ client at the SSL level using a certificate. For this to work, both the
898
+ client and the server have certificates (which typically are
899
+ different) and private keys.
900
+
901
+ The API functions outlined above accept additional arguments that
902
+ allow one to supply the client side certificate and key files. The
903
+ format of these files is the same as used for server certificates and
904
+ the caveat about encrypting private keys applies.
905
+
906
+ ($page, $result, %headers) = # 2c
907
+ = get_https('www.bacus.pt', 443, '/protected.html',
908
+ make_headers(Authorization =>
909
+ 'Basic ' . MIME::Base64::encode("$user:$pass",'')),
910
+ '', $mime_type6, $path_to_crt7, $path_to_key8);
911
+
912
+ ($page, $response, %reply_headers)
913
+ = post_https('www.bacus.pt', 443, '/foo.cgi', # 3b
914
+ make_headers('Authorization' =>
915
+ 'Basic ' . MIME::Base64::encode("$user:$pass",'')),
916
+ make_form(OK => '1', name => 'Sampo'),
917
+ $mime_type6, $path_to_crt7, $path_to_key8);
918
+
919
+ Case 2c demonstrates getting a password protected page that also requires
920
+ a client certificate, i.e. it is possible to use both authentication
921
+ methods simultaneously.
922
+
923
+ Case 3b is a full blown POST to a secure server that requires both password
924
+ authentication and a client certificate, just like in case 2c.
925
+
926
+ Note: The client will not send a certificate unless the server requests one.
927
+ This is typically achieved by setting the verify mode to C<VERIFY_PEER> on the
928
+ server:
929
+
930
+ Net::SSLeay::set_verify(ssl, Net::SSLeay::VERIFY_PEER, 0);
931
+
932
+ See C<perldoc ~openssl/doc/ssl/SSL_CTX_set_verify.pod> for a full description.
933
+
934
+ =head2 Working through a web proxy
935
+
936
+ C<Net::SSLeay> can use a web proxy to make its connections. You need to
937
+ first set the proxy host and port using C<set_proxy()> and then just
938
+ use the normal API functions, e.g:
939
+
940
+ Net::SSLeay::set_proxy('gateway.myorg.com', 8080);
941
+ ($page) = get_https('www.bacus.pt', 443, '/');
942
+
943
+ If your proxy requires authentication, you can supply a username and
944
+ password as well
945
+
946
+ Net::SSLeay::set_proxy('gateway.myorg.com', 8080, 'joe', 'salainen');
947
+ ($page, $result, %headers) =
948
+ = get_https('www.bacus.pt', 443, '/protected.html',
949
+ make_headers(Authorization =>
950
+ 'Basic ' . MIME::Base64::encode("susie:pass",''))
951
+ );
952
+
953
+ This example demonstrates the case where we authenticate to the proxy as
954
+ C<"joe"> and to the final web server as C<"susie">. Proxy authentication
955
+ requires the C<MIME::Base64> module to work.
956
+
957
+ =head2 Certificate verification and Certificate Revoocation Lists (CRLs)
958
+
959
+ OpenSSL supports the ability to verify peer certificates. It can also
960
+ optionally check the peer certificate against a Certificate Revocation
961
+ List (CRL) from the certificates issuer. A CRL is a file, created by
962
+ the certificate issuer that lists all the certificates that it
963
+ previously signed, but which it now revokes. CRLs are in PEM format.
964
+
965
+ You can enable C<Net::SSLeay CRL> checking like this:
966
+
967
+ &Net::SSLeay::X509_STORE_CTX_set_flags
968
+ (&Net::SSLeay::CTX_get_cert_store($ssl),
969
+ &Net::SSLeay::X509_V_FLAG_CRL_CHECK);
970
+
971
+ After setting this flag, if OpenSSL checks a peer's certificate, then
972
+ it will attempt to find a CRL for the issuer. It does this by looking
973
+ for a specially named file in the search directory specified by
974
+ CTX_load_verify_locations. CRL files are named with the hash of the
975
+ issuer's subject name, followed by C<.r0>, C<.r1> etc. For example
976
+ C<ab1331b2.r0>, C<ab1331b2.r1>. It will read all the .r files for the
977
+ issuer, and then check for a revocation of the peer cerificate in all
978
+ of them. (You can also force it to look in a specific named CRL
979
+ file., see below). You can find out the hash of the issuer subject
980
+ name in a CRL with
981
+
982
+ openssl crl -in crl.pem -hash -noout
983
+
984
+ If the peer certificate does not pass the revocation list, or if no
985
+ CRL is found, then the handshaking fails with an error.
986
+
987
+ You can also force OpenSSL to look for CRLs in one or more arbitrarily
988
+ named files.
989
+
990
+ my $bio = Net::SSLeay::BIO_new_file($crlfilename, 'r');
991
+ my $crl = Net::SSLeay::PEM_read_bio_X509_CRL($bio);
992
+ if ($crl) {
993
+ Net::SSLeay::X509_STORE_add_crl(Net::SSLeay::CTX_get_cert_store($ssl, $crl);
994
+ } else {
995
+ error reading CRL....
996
+ }
997
+
998
+
999
+ =head2 Convenience routines
1000
+
1001
+ To be used with Low level API
1002
+
1003
+ Net::SSLeay::randomize($rn_seed_file,$additional_seed);
1004
+ Net::SSLeay::set_cert_and_key($ctx, $cert_path, $key_path);
1005
+ $cert = Net::SSLeay::dump_peer_certificate($ssl);
1006
+ Net::SSLeay::ssl_write_all($ssl, $message) or die "ssl write failure";
1007
+ $got = Net::SSLeay::ssl_read_all($ssl) or die "ssl read failure";
1008
+
1009
+ $got = Net::SSLeay::ssl_read_CRLF($ssl [, $max_length]);
1010
+ $got = Net::SSLeay::ssl_read_until($ssl [, $delimit [, $max_length]]);
1011
+ Net::SSLeay::ssl_write_CRLF($ssl, $message);
1012
+
1013
+ C<randomize()> seeds the openssl PRNG with C</dev/urandom> (see the top of C<SSLeay.pm>
1014
+ for how to change or configure this) and optionally with user provided
1015
+ data. It is very important to properly seed your random numbers, so
1016
+ do not forget to call this. The high level API functions automatically
1017
+ call C<randomize()> so it is not needed with them. See also caveats.
1018
+
1019
+ C<set_cert_and_key()> takes two file names as arguments and sets
1020
+ the certificate and private key to those. This can be used to
1021
+ set either cerver certificates or client certificates.
1022
+
1023
+ C<dump_peer_certificate()> allows you to get a plaintext description of the
1024
+ certificate the peer (usually the server) presented to us.
1025
+
1026
+ C<ssl_read_all()> and C<ssl_write_all()> provide true blocking semantics for
1027
+ these operations (see limitation, below, for explanation). These are
1028
+ much preferred to the low level API equivalents (which implement BSD
1029
+ blocking semantics). The message argument to C<ssl_write_all()> can be
1030
+ a reference. This is helpful to avoid unnecessary copying when writing
1031
+ something big, e.g:
1032
+
1033
+ $data = 'A' x 1000000000;
1034
+ Net::SSLeay::ssl_write_all($ssl, \$data) or die "ssl write failed";
1035
+
1036
+ C<ssl_read_CRLF()> uses C<ssl_read_all()> to read in a line terminated with a
1037
+ carriage return followed by a linefeed (CRLF). The CRLF is included in
1038
+ the returned scalar.
1039
+
1040
+ C<ssl_read_until()> uses C<ssl_read_all()> to read from the SSL input
1041
+ stream until it encounters a programmer specified delimiter.
1042
+ If the delimiter is undefined, C<$/> is used. If C<$/> is undefined,
1043
+ C<\n> is used. One can optionally set a maximum length of bytes to read
1044
+ from the SSL input stream.
1045
+
1046
+ C<ssl_write_CRLF()> writes C<$message> and appends CRLF to the SSL output stream.
1047
+
1048
+ =head2 Low level API
1049
+
1050
+ In addition to the high level functions outlined above, this module
1051
+ contains straight-forward access to SSL part of OpenSSL C api. Only the SSL
1052
+ subpart of OpenSSL is implemented (if anyone wants to implement other
1053
+ parts, feel free to submit patches).
1054
+
1055
+ See the C<ssl.h> header from OpenSSL C distribution for a list of low level
1056
+ SSLeay functions to call (check SSLeay.xs to see if some function has been
1057
+ implemented). The module strips the initial C<"SSL_"> off of the SSLeay names. Generally you should use C<Net::SSLeay::> in its
1058
+ place. For example:
1059
+
1060
+ In C:
1061
+
1062
+ #include <ssl.h>
1063
+
1064
+ err = SSL_set_verify (ssl, SSL_VERIFY_CLIENT_ONCE,
1065
+ &your_call_back_here);
1066
+
1067
+ In Perl:
1068
+
1069
+ use Net::SSLeay;
1070
+
1071
+ $err = Net::SSLeay::set_verify ($ssl,
1072
+ Net::SSLeay::VERIFY_CLIENT_ONCE,
1073
+ \&your_call_back_here);
1074
+
1075
+ If the function does not start with C<SSL_> you should use the full
1076
+ function name, e.g.:
1077
+
1078
+ $err = Net::SSLeay::ERR_get_error;
1079
+
1080
+ The following new functions behave in perlish way:
1081
+
1082
+ $got = Net::SSLeay::read($ssl);
1083
+ # Performs SSL_read, but returns $got
1084
+ # resized according to data received.
1085
+ # Returns undef on failure.
1086
+
1087
+ Net::SSLeay::write($ssl, $foo) || die;
1088
+ # Performs SSL_write, but automatically
1089
+ # figures out the size of $foo
1090
+
1091
+ In order to use the low level API you should start your programs with
1092
+ the following incantation:
1093
+
1094
+ use Net::SSLeay qw(die_now die_if_ssl_error);
1095
+ Net::SSLeay::load_error_strings();
1096
+ Net::SSLeay::SSLeay_add_ssl_algorithms(); # Important!
1097
+ Net::SSLeay::ENGINE_load_builtin_engines(); # If you want built-in engines
1098
+ Net::SSLeay::ENGINE_register_all_complete(); # If you want built-in engines
1099
+ Net::SSLeay::randomize();
1100
+
1101
+ C<die_now()> and C<die_if_ssl_error()> are used to conveniently print the SSLeay error stack when something goes wrong, thusly:
1102
+
1103
+ Net::SSLeay::connect($ssl) or die_now("Failed SSL connect ($!)");
1104
+ Net::SSLeay::write($ssl, "foo") or die_if_ssl_error("SSL write ($!)");
1105
+
1106
+ You can also use C<Net::SSLeay::print_errs()> to dump the error stack without
1107
+ exiting the program. As can be seen, your code becomes much more readable
1108
+ if you import the error reporting functions into your main name space.
1109
+
1110
+ I can not emphasize the need to check for error enough. Use these
1111
+ functions even in the most simple programs, they will reduce debugging
1112
+ time greatly. Do not ask questions on the mailing list without having
1113
+ first sprinkled these in your code.
1114
+
1115
+ =head2 Sockets
1116
+
1117
+ Perl uses file handles for all I/O. While SSLeay has a quite flexible BIO
1118
+ mechanism and perl has an evolved PerlIO mechanism, this module still
1119
+ sticks to using file descriptors. Thus to attach SSLeay to a socket you
1120
+ should use C<fileno()> to extract the underlying file descriptor:
1121
+
1122
+ Net::SSLeay::set_fd($ssl, fileno(S)); # Must use fileno
1123
+
1124
+ You should also set C<$|> to 1 to eliminate STDIO buffering so you do not
1125
+ get confused if you use perl I/O functions to manipulate your socket
1126
+ handle.
1127
+
1128
+ If you need to C<select(2)> on the socket, go right ahead, but be warned
1129
+ that OpenSSL does some internal buffering so SSL_read does not always
1130
+ return data even if the socket selected for reading (just keep on
1131
+ selecting and trying to read). C<Net::SSLeay> is no different from the
1132
+ C language OpenSSL in this respect.
1133
+
1134
+ =head2 Callbacks
1135
+
1136
+ You can establish a per-context verify callback function something like this:
1137
+
1138
+ sub verify {
1139
+ my ($ok, $x509_store_ctx) = @_;
1140
+ print "Verifying certificate...\n";
1141
+ ...
1142
+ return $ok;
1143
+ }
1144
+
1145
+ It is used like this:
1146
+
1147
+ Net::SSLeay::set_verify ($ssl, Net::SSLeay::VERIFY_PEER, \&verify);
1148
+
1149
+ Per-context callbacks for decrypting private keys are implemented.
1150
+
1151
+ Net::SSLeay::CTX_set_default_passwd_cb($ctx, sub { "top-secret" });
1152
+ Net::SSLeay::CTX_use_PrivateKey_file($ctx, "key.pem",
1153
+ Net::SSLeay::FILETYPE_PEM)
1154
+ or die "Error reading private key";
1155
+ Net::SSLeay::CTX_set_default_passwd_cb($ctx, undef);
1156
+
1157
+ If Hello Extensions are supported by your OpenSSL,
1158
+ a session secret callback can be set up to be called when a session secret is set
1159
+ by openssl.
1160
+
1161
+ Establish it like this:
1162
+ Net::SSLeay::set_session_secret_cb($ssl, \&session_secret_cb, $somedata);
1163
+
1164
+ It will be called like this:
1165
+
1166
+ sub session_secret_cb
1167
+ {
1168
+ my ($secret, \@cipherlist, \$preferredcipher, $somedata) = @_;
1169
+ }
1170
+
1171
+
1172
+ No other callbacks are implemented. You do not need to use any
1173
+ callback for simple (i.e. normal) cases where the SSLeay built-in
1174
+ verify mechanism satisfies your needs.
1175
+
1176
+ It is required to reset these callbacks to undef immediately after use to prevent
1177
+ memory leaks, thread safety problems and crashes on exit that
1178
+ can occur if different threads set different callbacks.
1179
+
1180
+ If you want to use callback stuff, see examples/callback.pl! Its the
1181
+ only one I am able to make work reliably.
1182
+
1183
+ =head2 X509 and RAND stuff
1184
+
1185
+ This module largely lacks interface to the X509 and RAND routines, but
1186
+ as I was lazy and needed them, the following kludges are implemented:
1187
+
1188
+ $x509_name = Net::SSLeay::X509_get_subject_name($x509_cert);
1189
+ $x509_name = Net::SSLeay::X509_get_issuer_name($x509_cert);
1190
+ print Net::SSLeay::X509_NAME_oneline($x509_name);
1191
+ $text = Net::SSLeay::X509_NAME_get_text_by_NID($name, $nid);
1192
+
1193
+ ($type1, $subject1, $type2, $subject2, ...) =
1194
+ Net::SSLeay::X509_get_subjectAltNames($x509_cert)
1195
+
1196
+ subjectAltName types as per x509v3.h GEN_*, for example
1197
+ GEN_DNS or GEN_IPADD which can be imported.
1198
+
1199
+ Net::SSLeay::RAND_seed($buf); # Perlishly figures out buf size
1200
+ Net::SSLeay::RAND_bytes($buf, $num);
1201
+ Net::SSLeay::RAND_pseudo_bytes($buf, $num);
1202
+ Net::SSLeay::RAND_add($buf, $num, $entropy);
1203
+ Net::SSLeay::RAND_poll();
1204
+ Net::SSLeay::RAND_status();
1205
+ Net::SSLeay::RAND_cleanup();
1206
+ Net::SSLeay::RAND_file_name($num);
1207
+ Net::SSLeay::RAND_load_file($file_name, $how_many_bytes);
1208
+ Net::SSLeay::RAND_write_file($file_name);
1209
+ Net::SSLeay::RAND_egd($path);
1210
+ Net::SSLeay::RAND_egd_bytes($path, $bytes);
1211
+
1212
+ Actually you should consider using the following helper functions:
1213
+
1214
+ print Net::SSLeay::dump_peer_certificate($ssl);
1215
+ Net::SSLeay::randomize();
1216
+
1217
+ =head2 RSA interface
1218
+
1219
+ Some RSA functions are available:
1220
+
1221
+ $rsakey = Net::SSLeay::RSA_generate_key();
1222
+ Net::SSLeay::CTX_set_tmp_rsa($ctx, $rsakey);
1223
+ Net::SSLeay::RSA_free($rsakey);
1224
+
1225
+ =head2 Digests
1226
+
1227
+ Some Digest functions are available if supported by the underlying
1228
+ library. These may include MD2, MD4, MD5, and RIPEMD160:
1229
+
1230
+ $hash = Net::SSLeay::MD5($foo);
1231
+ print unpack('H*', $hash);
1232
+
1233
+ =head2 BIO interface
1234
+
1235
+ Some BIO functions are available:
1236
+
1237
+ Net::SSLeay::BIO_s_mem();
1238
+ $bio = Net::SSLeay::BIO_new(BIO_s_mem())
1239
+ $bio = Net::SSLeay::BIO_new_file($filename, $mode);
1240
+ Net::SSLeay::BIO_free($bio)
1241
+ $count = Net::SSLeay::BIO_write($data);
1242
+ $data = Net::SSLeay::BIO_read($bio);
1243
+ $data = Net::SSLeay::BIO_read($bio, $maxbytes);
1244
+ $is_eof = Net::SSLeay::BIO_eof($bio);
1245
+ $count = Net::SSLeay::BIO_pending($bio);
1246
+ $count = Net::SSLeay::BIO_wpending ($bio);
1247
+
1248
+ =head2 Low level API
1249
+
1250
+ Some very low level API functions are available:
1251
+
1252
+ $client_random = Net::SSLeay::get_client_random($ssl);
1253
+ $server_random = Net::SSLeay::get_server_random($ssl);
1254
+ $session = Net::SSLeay::get_session($ssl);
1255
+ $master_key = Net::SSLeay::SESSION_get_master_key($session);
1256
+ Net::SSLeay::SESSION_set_master_key($session, $master_secret);
1257
+ $keyblocksize = Net::SSLeay::get_keyblock_size($session);
1258
+
1259
+ =head2 HTTP (without S) API
1260
+
1261
+ Over the years it has become clear that it would be convenient to use
1262
+ the light-weight flavour API of C<Net::SSLeay> for normal HTTP as well (see
1263
+ C<LWP> for the heavy-weight object-oriented approach). In fact it would be
1264
+ nice to be able to flip https on and off on the fly. Thus regular HTTP
1265
+ support was evolved.
1266
+
1267
+ use Net::SSLeay qw(get_http post_http tcpcat
1268
+ get_httpx post_httpx tcpxcat
1269
+ make_headers make_form);
1270
+
1271
+ ($page, $result, %headers) =
1272
+ = get_http('www.bacus.pt', 443, '/protected.html',
1273
+ make_headers(Authorization =>
1274
+ 'Basic ' . MIME::Base64::encode("$user:$pass",''))
1275
+ );
1276
+
1277
+ ($page, $response, %reply_headers)
1278
+ = post_http('www.bacus.pt', 443, '/foo.cgi', '',
1279
+ make_form(OK => '1',
1280
+ name => 'Sampo'
1281
+ ));
1282
+
1283
+ ($reply, $err) = tcpcat($host, $port, $request);
1284
+
1285
+ ($page, $result, %headers) =
1286
+ = get_httpx($usessl, 'www.bacus.pt', 443, '/protected.html',
1287
+ make_headers(Authorization =>
1288
+ 'Basic ' . MIME::Base64::encode("$user:$pass",''))
1289
+ );
1290
+
1291
+ ($page, $response, %reply_headers)
1292
+ = post_httpx($usessl, 'www.bacus.pt', 443, '/foo.cgi', '',
1293
+ make_form(OK => '1', name => 'Sampo' ));
1294
+
1295
+ ($reply, $err, $server_cert) = tcpxcat($usessl, $host, $port, $request);
1296
+
1297
+ As can be seen, the C<"x"> family of APIs takes as the first argument a flag
1298
+ which indicates whether SSL is used or not.
1299
+
1300
+ =head1 EXAMPLES
1301
+
1302
+ One very good example to look at is the implementation of C<sslcat()> in the
1303
+ C<SSLeay.pm> file.
1304
+
1305
+ The following is a simple SSLeay client (with too little error checking :-(
1306
+
1307
+ #!/usr/local/bin/perl
1308
+ use Socket;
1309
+ use Net::SSLeay qw(die_now die_if_ssl_error) ;
1310
+ Net::SSLeay::load_error_strings();
1311
+ Net::SSLeay::SSLeay_add_ssl_algorithms();
1312
+ Net::SSLeay::randomize();
1313
+
1314
+ ($dest_serv, $port, $msg) = @ARGV; # Read command line
1315
+ $port = getservbyname ($port, 'tcp') unless $port =~ /^\d+$/;
1316
+ $dest_ip = gethostbyname ($dest_serv);
1317
+ $dest_serv_params = sockaddr_in($port, $dest_ip);
1318
+
1319
+ socket (S, &AF_INET, &SOCK_STREAM, 0) or die "socket: $!";
1320
+ connect (S, $dest_serv_params) or die "connect: $!";
1321
+ select (S); $| = 1; select (STDOUT); # Eliminate STDIO buffering
1322
+
1323
+ # The network connection is now open, lets fire up SSL
1324
+
1325
+ $ctx = Net::SSLeay::CTX_new() or die_now("Failed to create SSL_CTX $!");
1326
+ Net::SSLeay::CTX_set_options($ctx, &Net::SSLeay::OP_ALL)
1327
+ and die_if_ssl_error("ssl ctx set options");
1328
+ $ssl = Net::SSLeay::new($ctx) or die_now("Failed to create SSL $!");
1329
+ Net::SSLeay::set_fd($ssl, fileno(S)); # Must use fileno
1330
+ $res = Net::SSLeay::connect($ssl) and die_if_ssl_error("ssl connect");
1331
+ print "Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
1332
+
1333
+ # Exchange data
1334
+
1335
+ $res = Net::SSLeay::write($ssl, $msg); # Perl knows how long $msg is
1336
+ die_if_ssl_error("ssl write");
1337
+ CORE::shutdown S, 1; # Half close --> No more output, sends EOF to server
1338
+ $got = Net::SSLeay::read($ssl); # Perl returns undef on failure
1339
+ die_if_ssl_error("ssl read");
1340
+ print $got;
1341
+
1342
+ Net::SSLeay::free ($ssl); # Tear down connection
1343
+ Net::SSLeay::CTX_free ($ctx);
1344
+ close S;
1345
+
1346
+ The following is a simple SSLeay echo server (non forking):
1347
+
1348
+ #!/usr/local/bin/perl -w
1349
+ use Socket;
1350
+ use Net::SSLeay qw(die_now die_if_ssl_error);
1351
+ Net::SSLeay::load_error_strings();
1352
+ Net::SSLeay::SSLeay_add_ssl_algorithms();
1353
+ Net::SSLeay::randomize();
1354
+
1355
+ $our_ip = "\0\0\0\0"; # Bind to all interfaces
1356
+ $port = 1235;
1357
+ $sockaddr_template = 'S n a4 x8';
1358
+ $our_serv_params = pack ($sockaddr_template, &AF_INET, $port, $our_ip);
1359
+
1360
+ socket (S, &AF_INET, &SOCK_STREAM, 0) or die "socket: $!";
1361
+ bind (S, $our_serv_params) or die "bind: $!";
1362
+ listen (S, 5) or die "listen: $!";
1363
+ $ctx = Net::SSLeay::CTX_new () or die_now("CTX_new ($ctx): $!");
1364
+ Net::SSLeay::CTX_set_options($ctx, &Net::SSLeay::OP_ALL)
1365
+ and die_if_ssl_error("ssl ctx set options");
1366
+
1367
+ # Following will ask password unless private key is not encrypted
1368
+ Net::SSLeay::CTX_use_RSAPrivateKey_file ($ctx, 'plain-rsa.pem',
1369
+ &Net::SSLeay::FILETYPE_PEM);
1370
+ die_if_ssl_error("private key");
1371
+ Net::SSLeay::CTX_use_certificate_file ($ctx, 'plain-cert.pem',
1372
+ &Net::SSLeay::FILETYPE_PEM);
1373
+ die_if_ssl_error("certificate");
1374
+
1375
+ while (1) {
1376
+ print "Accepting connections...\n";
1377
+ ($addr = accept (NS, S)) or die "accept: $!";
1378
+ select (NS); $| = 1; select (STDOUT); # Piping hot!
1379
+
1380
+ ($af,$client_port,$client_ip) = unpack($sockaddr_template,$addr);
1381
+ @inetaddr = unpack('C4',$client_ip);
1382
+ print "$af connection from " .
1383
+ join ('.', @inetaddr) . ":$client_port\n";
1384
+
1385
+ # We now have a network connection, lets fire up SSLeay...
1386
+
1387
+ $ssl = Net::SSLeay::new($ctx) or die_now("SSL_new ($ssl): $!");
1388
+ Net::SSLeay::set_fd($ssl, fileno(NS));
1389
+
1390
+ $err = Net::SSLeay::accept($ssl) and die_if_ssl_error('ssl accept');
1391
+ print "Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
1392
+
1393
+ # Connected. Exchange some data.
1394
+
1395
+ $got = Net::SSLeay::read($ssl); # Returns undef on fail
1396
+ die_if_ssl_error("ssl read");
1397
+ print "Got `$got' (" . length ($got) . " chars)\n";
1398
+
1399
+ Net::SSLeay::write ($ssl, uc ($got)) or die "write: $!";
1400
+ die_if_ssl_error("ssl write");
1401
+
1402
+ Net::SSLeay::free ($ssl); # Tear down connection
1403
+ close NS;
1404
+ }
1405
+
1406
+ Yet another echo server. This one runs from C</etc/inetd.conf> so it avoids
1407
+ all the socket code overhead. Only caveat is opening an rsa key file -
1408
+ it had better be without any encryption or else it will not know where
1409
+ to ask for the password. Note how C<STDIN> and C<STDOUT> are wired to SSL.
1410
+
1411
+ #!/usr/local/bin/perl
1412
+ # /etc/inetd.conf
1413
+ # ssltst stream tcp nowait root /path/to/server.pl server.pl
1414
+ # /etc/services
1415
+ # ssltst 1234/tcp
1416
+
1417
+ use Net::SSLeay qw(die_now die_if_ssl_error);
1418
+ Net::SSLeay::load_error_strings();
1419
+ Net::SSLeay::SSLeay_add_ssl_algorithms();
1420
+ Net::SSLeay::randomize();
1421
+
1422
+ chdir '/key/dir' or die "chdir: $!";
1423
+ $| = 1; # Piping hot!
1424
+ open LOG, ">>/dev/console" or die "Can't open log file $!";
1425
+ select LOG; print "server.pl started\n";
1426
+
1427
+ $ctx = Net::SSLeay::CTX_new() or die_now "CTX_new ($ctx) ($!)";
1428
+ $ssl = Net::SSLeay::new($ctx) or die_now "new ($ssl) ($!)";
1429
+ Net::SSLeay::set_options($ssl, &Net::SSLeay::OP_ALL)
1430
+ and die_if_ssl_error("ssl set options");
1431
+
1432
+ # We get already open network connection from inetd, now we just
1433
+ # need to attach SSLeay to STDIN and STDOUT
1434
+ Net::SSLeay::set_rfd($ssl, fileno(STDIN));
1435
+ Net::SSLeay::set_wfd($ssl, fileno(STDOUT));
1436
+
1437
+ Net::SSLeay::use_RSAPrivateKey_file ($ssl, 'plain-rsa.pem',
1438
+ Net::SSLeay::FILETYPE_PEM);
1439
+ die_if_ssl_error("private key");
1440
+ Net::SSLeay::use_certificate_file ($ssl, 'plain-cert.pem',
1441
+ Net::SSLeay::FILETYPE_PEM);
1442
+ die_if_ssl_error("certificate");
1443
+
1444
+ Net::SSLeay::accept($ssl) and die_if_ssl_err("ssl accept: $!");
1445
+ print "Cipher `" . Net::SSLeay::get_cipher($ssl) . "'\n";
1446
+
1447
+ $got = Net::SSLeay::read($ssl);
1448
+ die_if_ssl_error("ssl read");
1449
+ print "Got `$got' (" . length ($got) . " chars)\n";
1450
+
1451
+ Net::SSLeay::write ($ssl, uc($got)) or die "write: $!";
1452
+ die_if_ssl_error("ssl write");
1453
+
1454
+ Net::SSLeay::free ($ssl); # Tear down the connection
1455
+ Net::SSLeay::CTX_free ($ctx);
1456
+ close LOG;
1457
+
1458
+ There are also a number of example/test programs in the examples directory:
1459
+
1460
+ sslecho.pl - A simple server, not unlike the one above
1461
+ minicli.pl - Implements a client using low level SSLeay routines
1462
+ sslcat.pl - Demonstrates using high level sslcat utility function
1463
+ get_page.pl - Is a utility for getting html pages from secure servers
1464
+ callback.pl - Demonstrates certificate verification and callback usage
1465
+ stdio_bulk.pl - Does SSL over Unix pipes
1466
+ ssl-inetd-serv.pl - SSL server that can be invoked from inetd.conf
1467
+ httpd-proxy-snif.pl - Utility that allows you to see how a browser
1468
+ sends https request to given server and what reply
1469
+ it gets back (very educative :-)
1470
+ makecert.pl - Creates a self signed cert (does not use this module)
1471
+
1472
+ =head1 LIMITATIONS
1473
+
1474
+ C<Net::SSLeay::read()> uses an internal buffer of 32KB, thus no single read
1475
+ will return more. In practice one read returns much less, usually
1476
+ as much as fits in one network packet. To work around this,
1477
+ you should use a loop like this:
1478
+
1479
+ $reply = '';
1480
+ while ($got = Net::SSLeay::read($ssl)) {
1481
+ last if print_errs('SSL_read');
1482
+ $reply .= $got;
1483
+ }
1484
+
1485
+ Although there is no built-in limit in C<Net::SSLeay::write()>, the network
1486
+ packet size limitation applies here as well, thus use:
1487
+
1488
+ $written = 0;
1489
+
1490
+ while ($written < length($message)) {
1491
+ $written += Net::SSLeay::write($ssl, substr($message, $written));
1492
+ last if print_errs('SSL_write');
1493
+ }
1494
+
1495
+ Or alternatively you can just use the following convenience functions:
1496
+
1497
+ Net::SSLeay::ssl_write_all($ssl, $message) or die "ssl write failure";
1498
+ $got = Net::SSLeay::ssl_read_all($ssl) or die "ssl read failure";
1499
+
1500
+ =head1 KNOWN BUGS AND CAVEATS
1501
+
1502
+ Autoloader emits a
1503
+
1504
+ Argument "xxx" isn't numeric in entersub at blib/lib/Net/SSLeay.pm'
1505
+
1506
+ warning if die_if_ssl_error is made autoloadable. If you figure out why,
1507
+ drop me a line.
1508
+
1509
+ Callback set using C<SSL_set_verify()> does not appear to work. This may
1510
+ well be an openssl problem (e.g. see C<ssl/ssl_lib.c> line 1029). Try using
1511
+ C<SSL_CTX_set_verify()> instead and do not be surprised if even this stops
1512
+ working in future versions.
1513
+
1514
+ Callback and certificate verification stuff is generally too little tested.
1515
+
1516
+ Random numbers are not initialized randomly enough, especially if you
1517
+ do not have C</dev/random> and/or C</dev/urandom> (such as in Solaris
1518
+ platforms - but I've been suggested that cryptorand daemon from the SUNski
1519
+ package solves this). In this case you should investigate third party
1520
+ software that can emulate these devices, e.g. by way of a named pipe
1521
+ to some program.
1522
+
1523
+ Another gotcha with random number initialization is randomness
1524
+ depletion. This phenomenon, which has been extensively discussed in
1525
+ OpenSSL, Apache-SSL, and Apache-mod_ssl forums, can cause your
1526
+ script to block if you use C</dev/random> or to operate insecurely
1527
+ if you use C</dev/urandom>. What happens is that when too much
1528
+ randomness is drawn from the operating system's randomness pool
1529
+ then randomness can temporarily be unavailable. C</dev/random> solves
1530
+ this problem by waiting until enough randomness can be gathered - and
1531
+ this can take a long time since blocking reduces activity in the
1532
+ machine and less activity provides less random events: a vicious circle.
1533
+ C</dev/urandom> solves this dilemma more pragmatically by simply returning
1534
+ predictable "random" numbers. SomeC< /dev/urandom> emulation software
1535
+ however actually seems to implement C</dev/random> semantics. Caveat emptor.
1536
+
1537
+ I've been pointed to two such daemons by Mik Firestone <mik@@speed.stdio._com>
1538
+ who has used them on Solaris 8:
1539
+
1540
+ =over
1541
+
1542
+ =item 1
1543
+
1544
+ Entropy Gathering Daemon (EGD) at L<http://www.lothar.com/tech/crypto/>
1545
+
1546
+ =item 2
1547
+
1548
+ Pseudo-random number generating daemon (PRNGD) at
1549
+ L<http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html>
1550
+
1551
+ =back
1552
+
1553
+ If you are using the low level API functions to communicate with other
1554
+ SSL implementations, you would do well to call
1555
+
1556
+ Net::SSLeay::CTX_set_options($ctx, &Net::SSLeay::OP_ALL)
1557
+ and die_if_ssl_error("ssl ctx set options");
1558
+
1559
+ to cope with some well know bugs in some other SSL
1560
+ implementations. The high level API functions always set all known
1561
+ compatibility options.
1562
+
1563
+ Sometimes C<sslcat()> (and the high level HTTPS functions that build on it)
1564
+ is too fast in signaling the EOF to legacy HTTPS servers. This causes
1565
+ the server to return empty page. To work around this problem you can
1566
+ set the global variable
1567
+
1568
+ $Net::SSLeay::slowly = 1; # Add sleep so broken servers can keep up
1569
+
1570
+ HTTP/1.1 is not supported. Specifically this module does not know to
1571
+ issue or serve multiple http requests per connection. This is a serious
1572
+ shortcoming, but using the SSL session cache on your server helps to
1573
+ alleviate the CPU load somewhat.
1574
+
1575
+ As of version 1.09 many newer OpenSSL auxiliary functions were
1576
+ added (from C<REM_AUTOMATICALLY_GENERATED_1_09> onwards in C<SSLeay.xs>).
1577
+ Unfortunately I have not had any opportunity to test these. Some of
1578
+ them are trivial enough that I believe they "just work", but others
1579
+ have rather complex interfaces with function pointers and all. In these
1580
+ cases you should proceed wit great caution.
1581
+
1582
+ This module defaults to using OpenSSL automatic protocol negotiation
1583
+ code for automatically detecting the version of the SSL protocol
1584
+ that the other end talks. With most web servers this works just
1585
+ fine, but once in a while I get complaints from people that the module
1586
+ does not work with some web servers. Usually this can be solved
1587
+ by explicitly setting the protocol version, e.g.
1588
+
1589
+ $Net::SSLeay::ssl_version = 2; # Insist on SSLv2
1590
+ $Net::SSLeay::ssl_version = 3; # Insist on SSLv3
1591
+ $Net::SSLeay::ssl_version = 10; # Insist on TLSv1
1592
+
1593
+ Although the autonegotiation is nice to have, the SSL standards
1594
+ do not formally specify any such mechanism. Most of the world has
1595
+ accepted the SSLeay/OpenSSL way of doing it as the de facto standard. But
1596
+ for the few that think differently, you have to explicitly speak
1597
+ the correct version. This is not really a bug, but rather a deficiency
1598
+ in the standards. If a site refuses to respond or sends back some
1599
+ nonsensical error codes (at the SSL handshake level), try this option
1600
+ before mailing me.
1601
+
1602
+ The high level API returns the certificate of the peer, thus allowing
1603
+ one to check what certificate was supplied. However, you will only be
1604
+ able to check the certificate after the fact, i.e. you already sent
1605
+ your form data by the time you find out that you did not trust them,
1606
+ oops.
1607
+
1608
+ So, while being able to know the certificate after the fact is surely
1609
+ useful, the security minded would still choose to do the connection
1610
+ and certificate verification first and only then exchange data
1611
+ with the site. Currently none of the high level API functions do
1612
+ this, thus you would have to program it using the low level API. A
1613
+ good place to start is to see how the C<Net::SSLeay::http_cat()> function
1614
+ is implemented.
1615
+
1616
+ The high level API functions use a global file handle C<SSLCAT_S>
1617
+ internally. This really should not be a problem because there is no
1618
+ way to interleave the high level API functions, unless you use threads
1619
+ (but threads are not very well supported in perl anyway (as of version
1620
+ 5.6.1). However, you may run into problems if you call undocumented
1621
+ internal functions in an interleaved fashion.
1622
+
1623
+ =head1 DIAGNOSTICS
1624
+
1625
+ =over
1626
+
1627
+ =item Random number generator not seeded!!!
1628
+
1629
+ B<(W)> This warning indicates that C<randomize()> was not able to read
1630
+ C</dev/random> or C</dev/urandom>, possibly because your system does not
1631
+ have them or they are differently named. You can still use SSL, but
1632
+ the encryption will not be as strong.
1633
+
1634
+ =item open_tcp_connection: destination host not found:`server' (port 123) ($!)
1635
+
1636
+ Name lookup for host named C<server> failed.
1637
+
1638
+ =item open_tcp_connection: failed `server', 123 ($!)
1639
+
1640
+ The name was resolved, but establising the TCP connection failed.
1641
+
1642
+ =item msg 123: 1 - error:140770F8:SSL routines:SSL23_GET_SERVER_HELLO:unknown proto
1643
+
1644
+ SSLeay error string. The first number (123) is the PID, the second number
1645
+ (1) indicates the position of the error message in SSLeay error stack.
1646
+ You often see a pile of these messages as errors cascade.
1647
+
1648
+ =item msg 123: 1 - error:02001002::lib(2) :func(1) :reason(2)
1649
+
1650
+ The same as above, but you didn't call load_error_strings() so SSLeay
1651
+ couldn't verbosely explain the error. You can still find out what it
1652
+ means with this command:
1653
+
1654
+ /usr/local/ssl/bin/ssleay errstr 02001002
1655
+
1656
+ =item Password is being asked for private key
1657
+
1658
+ This is normal behaviour if your private key is encrypted. Either
1659
+ you have to supply the password or you have to use an unencrypted
1660
+ private key. Scan OpenSSL.org for the FAQ that explains how to
1661
+ do this (or just study examples/makecert.pl which is used
1662
+ during C<make test> to do just that).
1663
+
1664
+ =back
1665
+
1666
+ =head1 BUGS AND SUPPORT
1667
+
1668
+ Please report any bugs or feature requests to
1669
+ C<bug-Net-SSLeay at rt.cpan.org>, or through the web interface at
1670
+ L<http://rt.cpan.org/Public/Dist/Display.html?Name=Net-SSLeay>.
1671
+ I will be notified, and then you'll automatically be notified of progress on
1672
+ your bug as I make changes.
1673
+
1674
+ Subversion access to the latest source code etc can be obtained at
1675
+ L<http://alioth.debian.org/projects/net-ssleay>
1676
+
1677
+ The developer mailing list (for people interested in contributing
1678
+ to the source code) can be found at
1679
+ L<http://lists.alioth.debian.org/mailman/listinfo/net-ssleay-devel>
1680
+
1681
+ You can find documentation for this module with the C<perldoc> command.
1682
+
1683
+ perldoc Net::SSLeay
1684
+
1685
+ You can also look for information at:
1686
+
1687
+ =over 4
1688
+
1689
+ =item * AnnoCPAN: Annotated CPAN documentation
1690
+
1691
+ L<http://annocpan.org/dist/Net-SSLeay>
1692
+
1693
+ =item * CPAN Ratings
1694
+
1695
+ L<http://cpanratings.perl.org/d/Net-SSLeay>
1696
+
1697
+ =item * Search CPAN
1698
+
1699
+ L<http://search.cpan.org/dist/Net-SSLeay>
1700
+
1701
+ =back
1702
+
1703
+ Commercial support for Net::SSLeay may be obtained from
1704
+
1705
+ Symlabs (netssleay@symlabs.com)
1706
+ Tel: +351-214.222.630
1707
+ Fax: +351-214.222.637
1708
+
1709
+ =head1 AUTHOR
1710
+
1711
+ Maintained by Mike McCauley and Florian Ragwitz since November 2005
1712
+
1713
+ Originally written by Sampo Kellom�ki <sampo@symlabs.com>
1714
+
1715
+ =head1 COPYRIGHT
1716
+
1717
+ Copyright (c) 1996-2003 Sampo Kellom�ki <sampo@symlabs.com>
1718
+
1719
+ Copyright (C) 2005-2006 Florian Ragwitz <rafl@debian.org>
1720
+
1721
+ Copyright (C) 2005 Mike McCauley <mikem@open.com.au>
1722
+
1723
+ All Rights Reserved.
1724
+
1725
+ Distribution and use of this module is under the same terms as the
1726
+ OpenSSL package itself (i.e. free, but mandatory attribution; NO
1727
+ WARRANTY). Please consult LICENSE file in the root of the OpenSSL
1728
+ distribution.
1729
+
1730
+ While the source distribution of this perl module does not contain
1731
+ Eric's or OpenSSL's code, if you use this module you will use OpenSSL
1732
+ library. Please give Eric and OpenSSL team credit (as required by
1733
+ their licenses).
1734
+
1735
+ And remember, you, and nobody else but you, are responsible for
1736
+ auditing this module and OpenSSL library for security problems,
1737
+ backdoors, and general suitability for your application.
1738
+
1739
+ =head1 SEE ALSO
1740
+
1741
+ Net::SSLeay::Handle - File handle interface
1742
+ ./examples - Example servers and a clients
1743
+ <http://www.openssl.org/> - OpenSSL source, documentation, etc
1744
+ openssl-users-request@openssl.org - General OpenSSL mailing list
1745
+ <http://www.ietf.org/rfc/rfc2246.txt> - TLS 1.0 specification
1746
+ <http://www.w3c.org> - HTTP specifications
1747
+ <http://www.ietf.org/rfc/rfc2617.txt> - How to send password
1748
+ <http://www.lothar.com/tech/crypto/> - Entropy Gathering Daemon (EGD)
1749
+ <http://www.aet.tu-cottbus.de/personen/jaenicke/postfix_tls/prngd.html>
1750
+ - pseudo-random number generating daemon (PRNGD)
1751
+ perl(1)
1752
+ perlref(1)
1753
+ perllol(1)
1754
+ perldoc ~openssl/doc/ssl/SSL_CTX_set_verify.pod
1755
+
1756
+ =cut
1757
+
1758
+ # ';
1759
+
1760
+ ### Some methods that are macros in C
1761
+
1762
+ sub want_nothing { want(shift) == 1 }
1763
+ sub want_read { want(shift) == 2 }
1764
+ sub want_write { want(shift) == 3 }
1765
+ sub want_X509_lookup { want(shift) == 4 }
1766
+
1767
+ ###
1768
+ ### Open TCP stream to given host and port, looking up the details
1769
+ ### from system databases or DNS.
1770
+ ###
1771
+
1772
+ sub open_tcp_connection {
1773
+ my ($dest_serv, $port) = @_;
1774
+ my ($errs);
1775
+
1776
+ $port = getservbyname($port, 'tcp') unless $port =~ /^\d+$/;
1777
+ my $dest_serv_ip = gethostbyname($dest_serv);
1778
+ unless (defined($dest_serv_ip)) {
1779
+ $errs = "$0 $$: open_tcp_connection: destination host not found:"
1780
+ . " `$dest_serv' (port $port) ($!)\n";
1781
+ warn $errs if $trace;
1782
+ return wantarray ? (0, $errs) : 0;
1783
+ }
1784
+ my $sin = sockaddr_in($port, $dest_serv_ip);
1785
+
1786
+ warn "Opening connection to $dest_serv:$port (" .
1787
+ inet_ntoa($dest_serv_ip) . ")" if $trace>2;
1788
+
1789
+ my $proto = getprotobyname('tcp');
1790
+ if (socket (SSLCAT_S, &PF_INET(), &SOCK_STREAM(), $proto)) {
1791
+ warn "next connect" if $trace>3;
1792
+ if (CORE::connect (SSLCAT_S, $sin)) {
1793
+ my $old_out = select (SSLCAT_S); $| = 1; select ($old_out);
1794
+ warn "connected to $dest_serv, $port" if $trace>3;
1795
+ return wantarray ? (1, undef) : 1; # Success
1796
+ }
1797
+ }
1798
+ $errs = "$0 $$: open_tcp_connection: failed `$dest_serv', $port ($!)\n";
1799
+ warn $errs if $trace;
1800
+ close SSLCAT_S;
1801
+ return wantarray ? (0, $errs) : 0; # Fail
1802
+ }
1803
+
1804
+ ### Open connection via standard web proxy, if one was defined
1805
+ ### using set_proxy().
1806
+
1807
+ sub open_proxy_tcp_connection {
1808
+ my ($dest_serv, $port) = @_;
1809
+ return open_tcp_connection($dest_serv, $port) if !$proxyhost;
1810
+
1811
+ warn "Connect via proxy: $proxyhost:$proxyport" if $trace>2;
1812
+ my ($ret, $errs) = open_tcp_connection($proxyhost, $proxyport);
1813
+ return wantarray ? (0, $errs) : 0 if !$ret; # Connection fail
1814
+
1815
+ warn "Asking proxy to connect to $dest_serv:$port" if $trace>2;
1816
+ #print SSLCAT_S "CONNECT $dest_serv:$port HTTP/1.0$proxyauth$CRLF$CRLF";
1817
+ #my $line = <SSLCAT_S>; # *** bug? Mixing stdio with syscall read?
1818
+ ($ret, $errs) =
1819
+ tcp_write_all("CONNECT $dest_serv:$port HTTP/1.0$proxyauth$CRLF$CRLF");
1820
+ return wantarray ? (0,$errs) : 0 if $errs;
1821
+ ($line, $errs) = tcp_read_until($CRLF . $CRLF, 1024);
1822
+ warn "Proxy response: $line" if $trace>2;
1823
+ return wantarray ? (0,$errs) : 0 if $errs;
1824
+ return wantarray ? (1,'') : 1; # Success
1825
+ }
1826
+
1827
+ ###
1828
+ ### read and write helpers that block
1829
+ ###
1830
+
1831
+ sub debug_read {
1832
+ my ($replyr, $gotr) = @_;
1833
+ my $vm = $trace>2 && $linux_debug ?
1834
+ (split ' ', `cat /proc/$$/stat`)[22] : 'vm_unknown';
1835
+ warn " got " . blength($$gotr) . ':'
1836
+ . blength($$replyr) . " bytes (VM=$vm).\n" if $trace == 3;
1837
+ warn " got `$$gotr' (" . blength($$gotr) . ':'
1838
+ . blength($$replyr) . " bytes, VM=$vm)\n" if $trace>3;
1839
+ }
1840
+
1841
+ sub ssl_read_all {
1842
+ my ($ssl,$how_much) = @_;
1843
+ $how_much = 2000000000 unless $how_much;
1844
+ my ($got, $errs);
1845
+ my $reply = '';
1846
+
1847
+ while ($how_much > 0) {
1848
+ $got = Net::SSLeay::read($ssl,
1849
+ ($how_much > 32768) ? 32768 : $how_much
1850
+ );
1851
+ last if $errs = print_errs('SSL_read');
1852
+ $how_much -= blength($got);
1853
+ debug_read(\$reply, \$got) if $trace>1;
1854
+ last if $got eq ''; # EOF
1855
+ $reply .= $got;
1856
+ }
1857
+
1858
+ return wantarray ? ($reply, $errs) : $reply;
1859
+ }
1860
+
1861
+ sub tcp_read_all {
1862
+ my ($how_much) = @_;
1863
+ $how_much = 2000000000 unless $how_much;
1864
+ my ($n, $got, $errs);
1865
+ my $reply = '';
1866
+
1867
+ my $bsize = 0x10000;
1868
+ while ($how_much > 0) {
1869
+ $n = sysread(SSLCAT_S,$got, (($bsize < $how_much) ? $bsize : $how_much));
1870
+ warn "Read error: $! ($n,$how_much)" unless defined $n;
1871
+ last if !$n; # EOF
1872
+ $how_much -= $n;
1873
+ debug_read(\$reply, \$got) if $trace>1;
1874
+ $reply .= $got;
1875
+ }
1876
+ return wantarray ? ($reply, $errs) : $reply;
1877
+ }
1878
+
1879
+ sub ssl_write_all {
1880
+ my $ssl = $_[0];
1881
+ my ($data_ref, $errs);
1882
+ if (ref $_[1]) {
1883
+ $data_ref = $_[1];
1884
+ } else {
1885
+ $data_ref = \$_[1];
1886
+ }
1887
+ my ($wrote, $written, $to_write) = (0,0, blength($$data_ref));
1888
+ my $vm = $trace>2 && $linux_debug ?
1889
+ (split ' ', `cat /proc/$$/stat`)[22] : 'vm_unknown';
1890
+ warn " write_all VM at entry=$vm\n" if $trace>2;
1891
+ while ($to_write) {
1892
+ #sleep 1; # *** DEBUG
1893
+ warn "partial `$$data_ref'\n" if $trace>3;
1894
+ $wrote = write_partial($ssl, $written, $to_write, $$data_ref);
1895
+ if (defined $wrote && ($wrote > 0)) { # write_partial can return -1
1896
+ $written += $wrote;
1897
+ $to_write -= $wrote;
1898
+ } else {
1899
+ if (defined $wrote) {
1900
+ # check error conditions via SSL_get_error per man page
1901
+ if ( my $sslerr = get_error($ssl, $wrote) ) {
1902
+ my $errstr = ERR_error_string($sslerr);
1903
+ my $errname = '';
1904
+ SWITCH: {
1905
+ $sslerr == constant("ERROR_NONE") && do {
1906
+ # according to map page SSL_get_error(3ssl):
1907
+ # The TLS/SSL I/O operation completed.
1908
+ # This result code is returned if and only if ret > 0
1909
+ # so if we received it here complain...
1910
+ warn "ERROR_NONE unexpected with invalid return value!"
1911
+ if $trace;
1912
+ $errname = "SSL_ERROR_NONE";
1913
+ };
1914
+ $sslerr == constant("ERROR_WANT_READ") && do {
1915
+ # operation did not complete, call again later, so do not
1916
+ # set errname and empty err_que since this is a known
1917
+ # error that is expected but, we should continue to try
1918
+ # writing the rest of our data with same io call and params.
1919
+ warn "ERROR_WANT_READ (TLS/SSL Handshake, will continue)\n"
1920
+ if $trace;
1921
+ print_errs('SSL_write(want read)');
1922
+ last SWITCH;
1923
+ };
1924
+ $sslerr == constant("ERROR_WANT_WRITE") && do {
1925
+ # operation did not complete, call again later, so do not
1926
+ # set errname and empty err_que since this is a known
1927
+ # error that is expected but, we should continue to try
1928
+ # writing the rest of our data with same io call and params.
1929
+ warn "ERROR_WANT_WRITE (TLS/SSL Handshake, will continue)\n"
1930
+ if $trace;
1931
+ print_errs('SSL_write(want write)');
1932
+ last SWITCH;
1933
+ };
1934
+ $sslerr == constant("ERROR_ZERO_RETURN") && do {
1935
+ # valid protocol closure from other side, no longer able to
1936
+ # write, since there is no longer a session...
1937
+ warn "ERROR_ZERO_RETURN($wrote): TLS/SSLv3 Closure alert\n"
1938
+ if $trace;
1939
+ $errname = "SSL_ERROR_ZERO_RETURN";
1940
+ last SWITCH;
1941
+ };
1942
+ $sslerr == constant("ERROR_SSL") && do {
1943
+ # library/protocol error
1944
+ warn "ERROR_SSL($wrote): Library/Protocol error occured\n"
1945
+ if $trace;
1946
+ $errname = "SSL_ERROR_SSL";
1947
+ last SWITCH;
1948
+ };
1949
+ $sslerr == constant("ERROR_WANT_CONNECT") && do {
1950
+ # according to man page, should never happen on call to
1951
+ # SSL_write, so complain, but handle as known error type
1952
+ warn "ERROR_WANT_CONNECT: Unexpected error for SSL_write\n"
1953
+ if $trace;
1954
+ $errname = "SSL_ERROR_WANT_CONNECT";
1955
+ last SWITCH;
1956
+ };
1957
+ $sslerr == constant("ERROR_WANT_ACCEPT") && do {
1958
+ # according to man page, should never happen on call to
1959
+ # SSL_write, so complain, but handle as known error type
1960
+ warn "ERROR_WANT_ACCEPT: Unexpected error for SSL_write\n"
1961
+ if $trace;
1962
+ $errname = "SSL_ERROR_WANT_ACCEPT";
1963
+ last SWITCH;
1964
+ };
1965
+ $sslerr == constant("ERROR_WANT_X509_LOOKUP") && do {
1966
+ # operation did not complete: waiting on call back,
1967
+ # call again later, so do not set errname and empty err_que
1968
+ # since this is a known error that is expected but, we should
1969
+ # continue to try writing the rest of our data with same io
1970
+ # call parameter.
1971
+ warn "ERROR_WANT_X509_LOOKUP: (Cert Callback asked for in ".
1972
+ "SSL_write will contine)\n" if $trace;
1973
+ print_errs('SSL_write(want x509');
1974
+ last SWITCH;
1975
+ };
1976
+ $sslerr == constant("ERROR_SYSCALL") && do {
1977
+ # some IO error occured. According to man page:
1978
+ # Check retval, ERR, fallback to errno
1979
+ if ($wrote==0) { # EOF
1980
+ warn "ERROR_SYSCALL($wrote): EOF violates protocol.\n"
1981
+ if $trace;
1982
+ $errname = "SSL_ERROR_SYSCALL(EOF)";
1983
+ } else { # -1 underlying BIO error reported.
1984
+ # check error que for details, don't set errname since we
1985
+ # are directly appending to errs
1986
+ my $chkerrs = print_errs('SSL_write (syscall)');
1987
+ if ($chkerrs) {
1988
+ warn "ERROR_SYSCALL($wrote): Have errors\n" if $trace;
1989
+ $errs .= "ssl_write_all $$: 1 - ERROR_SYSCALL($wrote,".
1990
+ "$sslerr,$errstr,$!)\n$chkerrs";
1991
+ } else { # que was empty, use errno
1992
+ warn "ERROR_SYSCALL($wrote): errno($!)\n" if $trace;
1993
+ $errs .= "ssl_write_all $$: 1 - ERROR_SYSCALL($wrote,".
1994
+ "$sslerr) : $!\n";
1995
+ }
1996
+ }
1997
+ last SWITCH;
1998
+ };
1999
+ warn "Unhandled val $sslerr from SSL_get_error(SSL,$wrote)\n"
2000
+ if $trace;
2001
+ $errname = "SSL_ERROR_?($sslerr)";
2002
+ } # end of SWITCH block
2003
+ if ($errname) { # if we had an errname set add the error
2004
+ $errs .= "ssl_write_all $$: 1 - $errname($wrote,$sslerr,".
2005
+ "$errstr,$!)\n";
2006
+ }
2007
+ } # endif on have SSL_get_error val
2008
+ } # endif on $wrote defined
2009
+ } # endelse on $wrote > 0
2010
+ $vm = $trace>2 && $linux_debug ?
2011
+ (split ' ', `cat /proc/$$/stat`)[22] : 'vm_unknown';
2012
+ warn " written so far $wrote:$written bytes (VM=$vm)\n" if $trace>2;
2013
+ # append remaining errors in que and report if errs exist
2014
+ $errs .= print_errs('SSL_write');
2015
+ return (wantarray ? (undef, $errs) : undef) if $errs;
2016
+ }
2017
+ return wantarray ? ($written, $errs) : $written;
2018
+ }
2019
+
2020
+ sub tcp_write_all {
2021
+ my ($data_ref, $errs);
2022
+ if (ref $_[0]) {
2023
+ $data_ref = $_[0];
2024
+ } else {
2025
+ $data_ref = \$_[0];
2026
+ }
2027
+ my ($wrote, $written, $to_write) = (0,0, blength($$data_ref));
2028
+ my $vm = $trace>2 && $linux_debug ?
2029
+ (split ' ', `cat /proc/$$/stat`)[22] : 'vm_unknown';
2030
+ warn " write_all VM at entry=$vm to_write=$to_write\n" if $trace>2;
2031
+ while ($to_write) {
2032
+ warn "partial `$$data_ref'\n" if $trace>3;
2033
+ $wrote = syswrite(SSLCAT_S, $$data_ref, $to_write, $written);
2034
+ if (defined $wrote && ($wrote > 0)) { # write_partial can return -1
2035
+ $written += $wrote;
2036
+ $to_write -= $wrote;
2037
+ } elsif (!defined($wrote)) {
2038
+ warn "tcp_write_all: $!";
2039
+ return (wantarray ? (undef, "$!") : undef);
2040
+ }
2041
+ $vm = $trace>2 && $linux_debug ?
2042
+ (split ' ', `cat /proc/$$/stat`)[22] : 'vm_unknown';
2043
+ warn " written so far $wrote:$written bytes (VM=$vm)\n" if $trace>2;
2044
+ }
2045
+ return wantarray ? ($written, '') : $written;
2046
+ }
2047
+
2048
+ ### from patch by Clinton Wong <clintdw@netcom.com>
2049
+
2050
+ # ssl_read_until($ssl [, $delimit [, $max_length]])
2051
+ # if $delimit missing, use $/ if it exists, otherwise use \n
2052
+ # read until delimiter reached, up to $max_length chars if defined
2053
+
2054
+ sub ssl_read_until ($;$$) {
2055
+ my ($ssl,$delim, $max_length) = @_;
2056
+ local $[;
2057
+
2058
+ # guess the delim string if missing
2059
+ if ( ! defined $delim ) {
2060
+ if ( defined $/ && length $/ ) { $delim = $/ }
2061
+ else { $delim = "\n" } # Note: \n,$/ value depends on the platform
2062
+ }
2063
+ my $len_delim = length $delim;
2064
+
2065
+ my ($got);
2066
+ my $reply = '';
2067
+
2068
+ # If we have OpenSSL 0.9.6a or later, we can use SSL_peek to
2069
+ # speed things up.
2070
+ # N.B. 0.9.6a has security problems, so the support for
2071
+ # anything earlier than 0.9.6e will be dropped soon.
2072
+ if (&Net::SSLeay::OPENSSL_VERSION_NUMBER >= 0x0090601f) {
2073
+ $max_length = 2000000000 unless (defined $max_length);
2074
+ my ($pending, $peek_length, $found, $done);
2075
+ while (blength($reply) < $max_length and !$done) {
2076
+ #Block if necessary until we get some data
2077
+ $got = Net::SSLeay::peek($ssl,1);
2078
+ last if print_errs('SSL_peek');
2079
+
2080
+ $pending = Net::SSLeay::pending($ssl) + blength($reply);
2081
+ $peek_length = ($pending > $max_length) ? $max_length : $pending;
2082
+ $peek_length -= blength($reply);
2083
+ $got = Net::SSLeay::peek($ssl, $peek_length);
2084
+ last if print_errs('SSL_peek');
2085
+ $peek_length = blength($got);
2086
+
2087
+ #$found = index($got, $delim); # Old and broken
2088
+
2089
+ # the delimiter may be split across two gets, so we prepend
2090
+ # a little from the last get onto this one before we check
2091
+ # for a match
2092
+ my $match;
2093
+ if(blength($reply) >= blength($delim) - 1) {
2094
+ #if what we've read so far is greater or equal
2095
+ #in length of what we need to prepatch
2096
+ $match = substr $reply, blength($reply) - blength($delim) + 1;
2097
+ } else {
2098
+ $match = $reply;
2099
+ }
2100
+
2101
+ $match .= $got;
2102
+ $found = index($match, $delim);
2103
+
2104
+ if ($found > -1) {
2105
+ #$got = Net::SSLeay::read($ssl, $found+$len_delim);
2106
+ #read up to the end of the delimiter
2107
+ $got = Net::SSLeay::read($ssl,
2108
+ $found + $len_delim
2109
+ - ((blength $match) - (blength $got)));
2110
+ $done = 1;
2111
+ } else {
2112
+ $got = Net::SSLeay::read($ssl, $peek_length);
2113
+ $done = 1 if ($peek_length == $max_length - blength($reply));
2114
+ }
2115
+
2116
+ last if print_errs('SSL_read');
2117
+ debug_read(\$reply, \$got) if $trace>1;
2118
+ last if $got eq '';
2119
+ $reply .= $got;
2120
+ }
2121
+ } else {
2122
+ while (!defined $max_length || length $reply < $max_length) {
2123
+ $got = Net::SSLeay::read($ssl,1); # one by one
2124
+ last if print_errs('SSL_read');
2125
+ debug_read(\$reply, \$got) if $trace>1;
2126
+ last if $got eq '';
2127
+ $reply .= $got;
2128
+ last if $len_delim
2129
+ && substr($reply, blength($reply)-$len_delim) eq $delim;
2130
+ }
2131
+ }
2132
+ return $reply;
2133
+ }
2134
+
2135
+ sub tcp_read_until {
2136
+ my ($delim, $max_length) = @_;
2137
+ local $[;
2138
+
2139
+ # guess the delim string if missing
2140
+ if ( ! defined $delim ) {
2141
+ if ( defined $/ && length $/ ) { $delim = $/ }
2142
+ else { $delim = "\n" } # Note: \n,$/ value depends on the platform
2143
+ }
2144
+ my $len_delim = length $delim;
2145
+
2146
+ my ($n,$got);
2147
+ my $reply = '';
2148
+
2149
+ while (!defined $max_length || length $reply < $max_length) {
2150
+ $n = sysread(SSLCAT_S, $got, 1); # one by one
2151
+ warn "tcp_read_until: $!" if !defined $n;
2152
+ debug_read(\$reply, \$got) if $trace>1;
2153
+ last if !$n; # EOF
2154
+ $reply .= $got;
2155
+ last if $len_delim
2156
+ && substr($reply, blength($reply)-$len_delim) eq $delim;
2157
+ }
2158
+ return $reply;
2159
+ }
2160
+
2161
+ # ssl_read_CRLF($ssl [, $max_length])
2162
+ sub ssl_read_CRLF ($;$) { ssl_read_until($_[0], $CRLF, $_[1]) }
2163
+ sub tcp_read_CRLF { tcp_read_until($CRLF, $_[0]) }
2164
+
2165
+ # ssl_write_CRLF($ssl, $message) writes $message and appends CRLF
2166
+ sub ssl_write_CRLF ($$) {
2167
+ # the next line uses less memory but might use more network packets
2168
+ return ssl_write_all($_[0], $_[1]) + ssl_write_all($_[0], $CRLF);
2169
+
2170
+ # the next few lines do the same thing at the expense of memory, with
2171
+ # the chance that it will use less packets, since CRLF is in the original
2172
+ # message and won't be sent separately.
2173
+
2174
+ #my $data_ref;
2175
+ #if (ref $_[1]) { $data_ref = $_[1] }
2176
+ # else { $data_ref = \$_[1] }
2177
+ #my $message = $$data_ref . $CRLF;
2178
+ #return ssl_write_all($_[0], \$message);
2179
+ }
2180
+
2181
+ sub tcp_write_CRLF {
2182
+ # the next line uses less memory but might use more network packets
2183
+ return tcp_write_all($_[0]) + tcp_write_all($CRLF);
2184
+
2185
+ # the next few lines do the same thing at the expense of memory, with
2186
+ # the chance that it will use less packets, since CRLF is in the original
2187
+ # message and won't be sent separately.
2188
+
2189
+ #my $data_ref;
2190
+ #if (ref $_[1]) { $data_ref = $_[1] }
2191
+ # else { $data_ref = \$_[1] }
2192
+ #my $message = $$data_ref . $CRLF;
2193
+ #return tcp_write_all($_[0], \$message);
2194
+ }
2195
+
2196
+ ### Quickly print out with whom we're talking
2197
+
2198
+ sub dump_peer_certificate ($) {
2199
+ my ($ssl) = @_;
2200
+ my $cert = get_peer_certificate($ssl);
2201
+ return if print_errs('get_peer_certificate');
2202
+ print "no cert defined\n" if !defined($cert);
2203
+ # Cipher=NONE with empty cert fix
2204
+ if (!defined($cert) || ($cert == 0)) {
2205
+ warn "cert = `$cert'\n" if $trace;
2206
+ return "Subject Name: undefined\nIssuer Name: undefined\n";
2207
+ } else {
2208
+ my $x = 'Subject Name: '
2209
+ . X509_NAME_oneline(X509_get_subject_name($cert)) . "\n"
2210
+ . 'Issuer Name: '
2211
+ . X509_NAME_oneline(X509_get_issuer_name($cert)) . "\n";
2212
+ Net::SSLeay::X509_free($cert);
2213
+ return $x;
2214
+ }
2215
+ }
2216
+
2217
+ ### Arrange some randomness for eay PRNG
2218
+
2219
+ sub randomize (;$$) {
2220
+ my ($rn_seed_file, $seed, $egd_path) = @_;
2221
+ my $rnsf = defined($rn_seed_file) && -r $rn_seed_file;
2222
+
2223
+ $egd_path = '';
2224
+ $egd_path = $ENV{'EGD_PATH'} if $ENV{'EGD_PATH'};
2225
+
2226
+ RAND_seed(rand() + $$); # Stir it with time and pid
2227
+
2228
+ unless ($rnsf || -r $Net::SSLeay::random_device || $seed || -S $egd_path) {
2229
+ warn "Random number generator not seeded!!!" if $trace;
2230
+ }
2231
+
2232
+ RAND_load_file($rn_seed_file, -s _) if $rnsf;
2233
+ RAND_seed($seed) if $seed;
2234
+ RAND_seed($ENV{RND_SEED}) if $ENV{RND_SEED};
2235
+ RAND_egd($egd_path) if -e $egd_path && -S _;
2236
+ RAND_load_file($Net::SSLeay::random_device, $Net::SSLeay::how_random/8)
2237
+ if -r $Net::SSLeay::random_device;
2238
+ }
2239
+
2240
+ sub new_x_ctx {
2241
+ if ($ssl_version == 2) { $ctx = CTX_v2_new(); }
2242
+ elsif ($ssl_version == 3) { $ctx = CTX_v3_new(); }
2243
+ elsif ($ssl_version == 10) { $ctx = CTX_tlsv1_new(); }
2244
+ else { $ctx = CTX_new(); }
2245
+ return $ctx;
2246
+ }
2247
+
2248
+ ###
2249
+ ### Basic request - response primitive (don't use for https)
2250
+ ###
2251
+
2252
+ sub sslcat { # address, port, message, $crt, $key --> reply / (reply,errs,cert)
2253
+ my ($dest_serv, $port, $out_message, $crt_path, $key_path) = @_;
2254
+ my ($ctx, $ssl, $got, $errs, $written);
2255
+
2256
+ ($got, $errs) = open_proxy_tcp_connection($dest_serv, $port);
2257
+ return (wantarray ? (undef, $errs) : undef) unless $got;
2258
+
2259
+ ### Do SSL negotiation stuff
2260
+
2261
+ warn "Creating SSL $ssl_version context...\n" if $trace>2;
2262
+ load_error_strings(); # Some bloat, but I'm after ease of use
2263
+ SSLeay_add_ssl_algorithms(); # and debuggability.
2264
+ randomize();
2265
+
2266
+ $ctx = new_x_ctx();
2267
+ goto cleanup2 if $errs = print_errs('CTX_new') or !$ctx;
2268
+
2269
+ CTX_set_options($ctx, &OP_ALL);
2270
+ goto cleanup2 if $errs = print_errs('CTX_set_options');
2271
+
2272
+ warn "Cert `$crt_path' given without key" if $crt_path && !$key_path;
2273
+ set_cert_and_key($ctx, $crt_path, $key_path) if $crt_path;
2274
+
2275
+ warn "Creating SSL connection (context was '$ctx')...\n" if $trace>2;
2276
+ $ssl = new($ctx);
2277
+ goto cleanup if $errs = print_errs('SSL_new') or !$ssl;
2278
+
2279
+ warn "Setting fd (ctx $ctx, con $ssl)...\n" if $trace>2;
2280
+ set_fd($ssl, fileno(SSLCAT_S));
2281
+ goto cleanup if $errs = print_errs('set_fd');
2282
+
2283
+ warn "Entering SSL negotiation phase...\n" if $trace>2;
2284
+
2285
+ if ($trace>2) {
2286
+ my $i = 0;
2287
+ my $p = '';
2288
+ my $cipher_list = 'Cipher list: ';
2289
+ $p=Net::SSLeay::get_cipher_list($ssl,$i);
2290
+ $cipher_list .= $p if $p;
2291
+ do {
2292
+ $i++;
2293
+ $cipher_list .= ', ' . $p if $p;
2294
+ $p=Net::SSLeay::get_cipher_list($ssl,$i);
2295
+ } while $p;
2296
+ $cipher_list .= '\n';
2297
+ warn $cipher_list;
2298
+ }
2299
+
2300
+ $got = Net::SSLeay::connect($ssl);
2301
+ warn "SSLeay connect returned $got\n" if $trace>2;
2302
+ goto cleanup if $errs = print_errs('SSL_connect');
2303
+
2304
+ my $server_cert = get_peer_certificate($ssl);
2305
+ print_errs('get_peer_certificate');
2306
+ if ($trace>1) {
2307
+ warn "Cipher `" . get_cipher($ssl) . "'\n";
2308
+ print_errs('get_ciper');
2309
+ warn dump_peer_certificate($ssl);
2310
+ }
2311
+
2312
+ ### Connected. Exchange some data (doing repeated tries if necessary).
2313
+
2314
+ warn "sslcat $$: sending " . blength($out_message) . " bytes...\n"
2315
+ if $trace==3;
2316
+ warn "sslcat $$: sending `$out_message' (" . blength($out_message)
2317
+ . " bytes)...\n" if $trace>3;
2318
+ ($written, $errs) = ssl_write_all($ssl, $out_message);
2319
+ goto cleanup unless $written;
2320
+
2321
+ sleep $slowly if $slowly; # Closing too soon can abort broken servers
2322
+ CORE::shutdown SSLCAT_S, 1; # Half close --> No more output, send EOF to server
2323
+
2324
+ warn "waiting for reply...\n" if $trace>2;
2325
+ ($got, $errs) = ssl_read_all($ssl);
2326
+ warn "Got " . blength($got) . " bytes.\n" if $trace==3;
2327
+ warn "Got `$got' (" . blength($got) . " bytes)\n" if $trace>3;
2328
+
2329
+ cleanup:
2330
+ free ($ssl);
2331
+ $errs .= print_errs('SSL_free');
2332
+ cleanup2:
2333
+ CTX_free ($ctx);
2334
+ $errs .= print_errs('CTX_free');
2335
+ close SSLCAT_S;
2336
+ return wantarray ? ($got, $errs, $server_cert) : $got;
2337
+ }
2338
+
2339
+ sub tcpcat { # address, port, message, $crt, $key --> reply / (reply,errs,cert)
2340
+ my ($dest_serv, $port, $out_message) = @_;
2341
+ my ($got, $errs, $written);
2342
+
2343
+ ($got, $errs) = open_proxy_tcp_connection($dest_serv, $port);
2344
+ return (wantarray ? (undef, $errs) : undef) unless $got;
2345
+
2346
+ ### Connected. Exchange some data (doing repeated tries if necessary).
2347
+
2348
+ warn "tcpcat $$: sending " . blength($out_message) . " bytes...\n"
2349
+ if $trace==3;
2350
+ warn "tcpcat $$: sending `$out_message' (" . blength($out_message)
2351
+ . " bytes)...\n" if $trace>3;
2352
+ ($written, $errs) = tcp_write_all($out_message);
2353
+ goto cleanup unless $written;
2354
+
2355
+ sleep $slowly if $slowly; # Closing too soon can abort broken servers
2356
+ CORE::shutdown SSLCAT_S, 1; # Half close --> No more output, send EOF to server
2357
+
2358
+ warn "waiting for reply...\n" if $trace>2;
2359
+ ($got, $errs) = tcp_read_all($ssl);
2360
+ warn "Got " . blength($got) . " bytes.\n" if $trace==3;
2361
+ warn "Got `$got' (" . blength($got) . " bytes)\n" if $trace>3;
2362
+
2363
+ cleanup:
2364
+ close SSLCAT_S;
2365
+ return wantarray ? ($got, $errs) : $got;
2366
+ }
2367
+
2368
+ sub tcpxcat {
2369
+ my ($usessl, $site, $port, $req, $crt_path, $key_path) = @_;
2370
+ if ($usessl) {
2371
+ return sslcat($site, $port, $req, $crt_path, $key_path);
2372
+ } else {
2373
+ return tcpcat($site, $port, $req);
2374
+ }
2375
+ }
2376
+
2377
+ ###
2378
+ ### Basic request - response primitive, this is different from sslcat
2379
+ ### because this does not shutdown the connection.
2380
+ ###
2381
+
2382
+ sub https_cat { # address, port, message --> returns reply / (reply,errs,cert)
2383
+ my ($dest_serv, $port, $out_message, $crt_path, $key_path) = @_;
2384
+ my ($ctx, $ssl, $got, $errs, $written);
2385
+
2386
+ ($got, $errs) = open_proxy_tcp_connection($dest_serv, $port);
2387
+ return (wantarray ? (undef, $errs) : undef) unless $got;
2388
+
2389
+ ### Do SSL negotiation stuff
2390
+
2391
+ warn "Creating SSL $ssl_version context...\n" if $trace>2;
2392
+ load_error_strings(); # Some bloat, but I'm after ease of use
2393
+ SSLeay_add_ssl_algorithms(); # and debuggability.
2394
+ randomize();
2395
+
2396
+ $ctx = new_x_ctx();
2397
+ goto cleanup2 if $errs = print_errs('CTX_new') or !$ctx;
2398
+
2399
+ CTX_set_options($ctx, &OP_ALL);
2400
+ goto cleanup2 if $errs = print_errs('CTX_set_options');
2401
+
2402
+ warn "Cert `$crt_path' given without key" if $crt_path && !$key_path;
2403
+ set_cert_and_key($ctx, $crt_path, $key_path) if $crt_path;
2404
+
2405
+ warn "Creating SSL connection (context was '$ctx')...\n" if $trace>2;
2406
+ $ssl = new($ctx);
2407
+ goto cleanup if $errs = print_errs('SSL_new') or !$ssl;
2408
+
2409
+ warn "Setting fd (ctx $ctx, con $ssl)...\n" if $trace>2;
2410
+ set_fd($ssl, fileno(SSLCAT_S));
2411
+ goto cleanup if $errs = print_errs('set_fd');
2412
+
2413
+ warn "Entering SSL negotiation phase...\n" if $trace>2;
2414
+
2415
+ if ($trace>2) {
2416
+ my $i = 0;
2417
+ my $p = '';
2418
+ my $cipher_list = 'Cipher list: ';
2419
+ $p=Net::SSLeay::get_cipher_list($ssl,$i);
2420
+ $cipher_list .= $p if $p;
2421
+ do {
2422
+ $i++;
2423
+ $cipher_list .= ', ' . $p if $p;
2424
+ $p=Net::SSLeay::get_cipher_list($ssl,$i);
2425
+ } while $p;
2426
+ $cipher_list .= '\n';
2427
+ warn $cipher_list;
2428
+ }
2429
+
2430
+ $got = Net::SSLeay::connect($ssl);
2431
+ warn "SSLeay connect failed" if $trace>2 && $got==0;
2432
+ goto cleanup if $errs = print_errs('SSL_connect');
2433
+
2434
+ my $server_cert = get_peer_certificate($ssl);
2435
+ print_errs('get_peer_certificate');
2436
+ if ($trace>1) {
2437
+ warn "Cipher `" . get_cipher($ssl) . "'\n";
2438
+ print_errs('get_ciper');
2439
+ warn dump_peer_certificate($ssl);
2440
+ }
2441
+
2442
+ ### Connected. Exchange some data (doing repeated tries if necessary).
2443
+
2444
+ warn "https_cat $$: sending " . blength($out_message) . " bytes...\n"
2445
+ if $trace==3;
2446
+ warn "https_cat $$: sending `$out_message' (" . blength($out_message)
2447
+ . " bytes)...\n" if $trace>3;
2448
+ ($written, $errs) = ssl_write_all($ssl, $out_message);
2449
+ goto cleanup unless $written;
2450
+
2451
+ warn "waiting for reply...\n" if $trace>2;
2452
+ ($got, $errs) = ssl_read_all($ssl);
2453
+ warn "Got " . blength($got) . " bytes.\n" if $trace==3;
2454
+ warn "Got `$got' (" . blength($got) . " bytes)\n" if $trace>3;
2455
+
2456
+ cleanup:
2457
+ free ($ssl);
2458
+ $errs .= print_errs('SSL_free');
2459
+ cleanup2:
2460
+ CTX_free ($ctx);
2461
+ $errs .= print_errs('CTX_free');
2462
+ close SSLCAT_S;
2463
+ return wantarray ? ($got, $errs, $server_cert) : $got;
2464
+ }
2465
+
2466
+ sub http_cat { # address, port, message --> returns reply / (reply,errs,cert)
2467
+ my ($dest_serv, $port, $out_message) = @_;
2468
+ my ($got, $errs, $written);
2469
+
2470
+ ($got, $errs) = open_proxy_tcp_connection($dest_serv, $port);
2471
+ return (wantarray ? (undef, $errs) : undef) unless $got;
2472
+
2473
+ ### Connected. Exchange some data (doing repeated tries if necessary).
2474
+
2475
+ warn "http_cat $$: sending " . blength($out_message) . " bytes...\n"
2476
+ if $trace==3;
2477
+ warn "http_cat $$: sending `$out_message' (" . blength($out_message)
2478
+ . " bytes)...\n" if $trace>3;
2479
+ ($written, $errs) = tcp_write_all($out_message);
2480
+ goto cleanup unless $written;
2481
+
2482
+ warn "waiting for reply...\n" if $trace>2;
2483
+ ($got, $errs) = tcp_read_all(200000);
2484
+ warn "Got " . blength($got) . " bytes.\n" if $trace==3;
2485
+ warn "Got `$got' (" . blength($got) . " bytes)\n" if $trace>3;
2486
+
2487
+ cleanup:
2488
+ close SSLCAT_S;
2489
+ return wantarray ? ($got, $errs) : $got;
2490
+ }
2491
+
2492
+ sub httpx_cat {
2493
+ my ($usessl, $site, $port, $req, $crt_path, $key_path) = @_;
2494
+ warn "httpx_cat: usessl=$usessl ($site:$port)" if $trace;
2495
+ if ($usessl) {
2496
+ return https_cat($site, $port, $req, $crt_path, $key_path);
2497
+ } else {
2498
+ return http_cat($site, $port, $req);
2499
+ }
2500
+ }
2501
+
2502
+ ###
2503
+ ### Easy set up of private key and certificate
2504
+ ###
2505
+
2506
+ sub set_cert_and_key ($$$) {
2507
+ my ($ctx, $cert_path, $key_path) = @_;
2508
+ my $errs = '';
2509
+ # Following will ask password unless private key is not encrypted
2510
+ CTX_use_RSAPrivateKey_file ($ctx, $key_path, &FILETYPE_PEM);
2511
+ $errs .= print_errs("private key `$key_path' ($!)");
2512
+ CTX_use_certificate_file ($ctx, $cert_path, &FILETYPE_PEM);
2513
+ $errs .= print_errs("certificate `$cert_path' ($!)");
2514
+ return wantarray ? (undef, $errs) : ($errs eq '');
2515
+ }
2516
+
2517
+ ### Old deprecated API
2518
+
2519
+ sub set_server_cert_and_key ($$$) { &set_cert_and_key }
2520
+
2521
+ ### Set up to use web proxy
2522
+
2523
+ sub set_proxy ($$;**) {
2524
+ ($proxyhost, $proxyport, $proxyuser, $proxypass) = @_;
2525
+ require MIME::Base64 if $proxyuser;
2526
+ $proxyauth = $CRLF . 'Proxy-authorization: Basic '
2527
+ . MIME::Base64::encode("$proxyuser:$proxypass", '')
2528
+ if $proxyuser;
2529
+ }
2530
+
2531
+ ###
2532
+ ### Easy https manipulation routines
2533
+ ###
2534
+
2535
+ sub make_form {
2536
+ my (@fields) = @_;
2537
+ my $form;
2538
+ while (@fields) {
2539
+ my ($name, $data) = (shift(@fields), shift(@fields));
2540
+ $data =~ s/([^\w\-.\@\$ ])/sprintf("%%%2.2x",ord($1))/gse;
2541
+ $data =~ tr[ ][+];
2542
+ $form .= "$name=$data&";
2543
+ }
2544
+ chop $form;
2545
+ return $form;
2546
+ }
2547
+
2548
+ sub make_headers {
2549
+ my (@headers) = @_;
2550
+ my $headers;
2551
+ while (@headers) {
2552
+ my $header = shift(@headers);
2553
+ my $value = shift(@headers);
2554
+ $header =~ s/:$//;
2555
+ $value =~ s/\x0d?\x0a$//; # because we add it soon, see below
2556
+ $headers .= "$header: $value$CRLF";
2557
+ }
2558
+ return $headers;
2559
+ }
2560
+
2561
+ sub do_httpx3 {
2562
+ my ($method, $usessl, $site, $port, $path, $headers,
2563
+ $content, $mime_type, $crt_path, $key_path) = @_;
2564
+ my ($response, $page, $h,$v);
2565
+
2566
+ if ($content) {
2567
+ $mime_type = "application/x-www-form-urlencoded" unless $mime_type;
2568
+ my $len = blength($content);
2569
+ $content = "Content-Type: $mime_type$CRLF"
2570
+ . "Content-Length: $len$CRLF$CRLF$content";
2571
+ } else {
2572
+ $content = "$CRLF$CRLF";
2573
+ }
2574
+ my $req = "$method $path HTTP/1.0$CRLF";
2575
+ unless (defined $headers && $headers =~ /^Host:/m) {
2576
+ $req .= "Host: $site";
2577
+ unless (($port == 80 && !$usessl) || ($port == 443 && $usessl)) {
2578
+ $req .= ":$port";
2579
+ }
2580
+ $req .= $CRLF;
2581
+ }
2582
+ $req .= (defined $headers ? $headers : '') . "Accept: */*$CRLF$content";
2583
+
2584
+ warn "do_httpx3($method,$usessl,$site:$port)" if $trace;
2585
+ my ($http, $errs, $server_cert)
2586
+ = httpx_cat($usessl, $site, $port, $req, $crt_path, $key_path);
2587
+ return (undef, "HTTP/1.0 900 NET OR SSL ERROR$CRLF$CRLF$errs") if $errs;
2588
+
2589
+ $http = '' if !defined $http;
2590
+ ($headers, $page) = split /\s?\n\s?\n/, $http, 2;
2591
+ warn "headers >$headers< page >>$page<< http >>>$http<<<" if $trace>1;
2592
+ ($response, $headers) = split /\s?\n/, $headers, 2;
2593
+ return ($page, $response, $headers, $server_cert);
2594
+ }
2595
+
2596
+ sub do_https3 { splice(@_,1,0) = 1; do_httpx3; } # Legacy undocumented
2597
+
2598
+ ### do_https2() is a legacy version in the sense that it is unable
2599
+ ### to return all instances of duplicate headers.
2600
+
2601
+ sub do_httpx2 {
2602
+ my ($page, $response, $headers, $server_cert) = &do_httpx3;
2603
+ X509_free($server_cert) if defined $server_cert;
2604
+ return ($page, $response,
2605
+ map( { ($h,$v)=/^(\S+)\:\s*(.*)$/; (uc($h),$v); }
2606
+ split(/\s?\n/, $headers)
2607
+ )
2608
+ );
2609
+ }
2610
+
2611
+ sub do_https2 { splice(@_,1,0) = 1; do_httpx2; } # Legacy undocumented
2612
+
2613
+ ### Returns headers as a hash where multiple instances of same header
2614
+ ### are handled correctly.
2615
+
2616
+ sub do_httpx4 {
2617
+ my ($page, $response, $headers, $server_cert) = &do_httpx3;
2618
+ X509_free($server_cert) if defined $server_cert;
2619
+ my %hr = ();
2620
+ for my $hh (split /\s?\n/, $headers) {
2621
+ my ($h,$v)=/^(\S+)\:\s*(.*)$/;
2622
+ push @{$hr{uc($h)}}, $v;
2623
+ }
2624
+ return ($page, $response, \%hr);
2625
+ }
2626
+
2627
+ sub do_https4 { splice(@_,1,0) = 1; do_httpx4; } # Legacy undocumented
2628
+
2629
+ # https
2630
+
2631
+ sub get_https { do_httpx2(GET => 1, @_) }
2632
+ sub post_https { do_httpx2(POST => 1, @_) }
2633
+ sub put_https { do_httpx2(PUT => 1, @_) }
2634
+ sub head_https { do_httpx2(HEAD => 1, @_) }
2635
+
2636
+ sub get_https3 { do_httpx3(GET => 1, @_) }
2637
+ sub post_https3 { do_httpx3(POST => 1, @_) }
2638
+ sub put_https3 { do_httpx3(PUT => 1, @_) }
2639
+ sub head_https3 { do_httpx3(HEAD => 1, @_) }
2640
+
2641
+ sub get_https4 { do_httpx4(GET => 1, @_) }
2642
+ sub post_https4 { do_httpx4(POST => 1, @_) }
2643
+ sub put_https4 { do_httpx4(PUT => 1, @_) }
2644
+ sub head_https4 { do_httpx4(HEAD => 1, @_) }
2645
+
2646
+ # http
2647
+
2648
+ sub get_http { do_httpx2(GET => 0, @_) }
2649
+ sub post_http { do_httpx2(POST => 0, @_) }
2650
+ sub put_http { do_httpx2(PUT => 0, @_) }
2651
+ sub head_http { do_httpx2(HEAD => 0, @_) }
2652
+
2653
+ sub get_http3 { do_httpx3(GET => 0, @_) }
2654
+ sub post_http3 { do_httpx3(POST => 0, @_) }
2655
+ sub put_http3 { do_httpx3(PUT => 0, @_) }
2656
+ sub head_http3 { do_httpx3(HEAD => 0, @_) }
2657
+
2658
+ sub get_http4 { do_httpx4(GET => 0, @_) }
2659
+ sub post_http4 { do_httpx4(POST => 0, @_) }
2660
+ sub put_http4 { do_httpx4(PUT => 0, @_) }
2661
+ sub head_http4 { do_httpx4(HEAD => 0, @_) }
2662
+
2663
+ # Either https or http
2664
+
2665
+ sub get_httpx { do_httpx2(GET => @_) }
2666
+ sub post_httpx { do_httpx2(POST => @_) }
2667
+ sub put_httpx { do_httpx2(PUT => @_) }
2668
+ sub head_httpx { do_httpx2(HEAD => @_) }
2669
+
2670
+ sub get_httpx3 { do_httpx3(GET => @_) }
2671
+ sub post_httpx3 { do_httpx3(POST => @_) }
2672
+ sub put_httpx3 { do_httpx3(PUT => @_) }
2673
+ sub head_httpx3 { do_httpx3(HEAD => @_) }
2674
+
2675
+ sub get_httpx4 { do_httpx4(GET => @_) }
2676
+ sub post_httpx4 { do_httpx4(POST => @_) }
2677
+ sub put_httpx4 { do_httpx4(PUT => @_) }
2678
+ sub head_httpx4 { do_httpx4(HEAD => @_) }
2679
+
2680
+ ### Legacy, don't use
2681
+ # ($page, $respone_or_err, %headers) = do_https(...);
2682
+
2683
+ sub do_https {
2684
+ my ($site, $port, $path, $method, $headers,
2685
+ $content, $mime_type, $crt_path, $key_path) = @_;
2686
+
2687
+ do_https2($method, $site, $port, $path, $headers,
2688
+ $content, $mime_type, $crt_path, $key_path);
2689
+ }
2690
+
2691
+ 1;
2692
+ __END__