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,2970 @@
1
+ package Math::BigInt::Calc;
2
+
3
+ use 5.006002;
4
+ use strict;
5
+ # use warnings; # dont use warnings for older Perls
6
+
7
+ our $VERSION = '1.993';
8
+
9
+ # Package to store unsigned big integers in decimal and do math with them
10
+
11
+ # Internally the numbers are stored in an array with at least 1 element, no
12
+ # leading zero parts (except the first) and in base 1eX where X is determined
13
+ # automatically at loading time to be the maximum possible value
14
+
15
+ # todo:
16
+ # - fully remove funky $# stuff in div() (maybe - that code scares me...)
17
+
18
+ # USE_MUL: due to problems on certain os (os390, posix-bc) "* 1e-5" is used
19
+ # instead of "/ 1e5" at some places, (marked with USE_MUL). Other platforms
20
+ # BS2000, some Crays need USE_DIV instead.
21
+ # The BEGIN block is used to determine which of the two variants gives the
22
+ # correct result.
23
+
24
+ # Beware of things like:
25
+ # $i = $i * $y + $car; $car = int($i / $BASE); $i = $i % $BASE;
26
+ # This works on x86, but fails on ARM (SA1100, iPAQ) due to whoknows what
27
+ # reasons. So, use this instead (slower, but correct):
28
+ # $i = $i * $y + $car; $car = int($i / $BASE); $i -= $BASE * $car;
29
+
30
+ ##############################################################################
31
+ # global constants, flags and accessory
32
+
33
+ # announce that we are compatible with MBI v1.83 and up
34
+ sub api_version () { 2; }
35
+
36
+ # constants for easier life
37
+ my ($BASE,$BASE_LEN,$RBASE,$MAX_VAL);
38
+ my ($AND_BITS,$XOR_BITS,$OR_BITS);
39
+ my ($AND_MASK,$XOR_MASK,$OR_MASK);
40
+
41
+ sub _base_len
42
+ {
43
+ # Set/get the BASE_LEN and assorted other, connected values.
44
+ # Used only by the testsuite, the set variant is used only by the BEGIN
45
+ # block below:
46
+ shift;
47
+
48
+ my ($b, $int) = @_;
49
+ if (defined $b)
50
+ {
51
+ # avoid redefinitions
52
+ undef &_mul;
53
+ undef &_div;
54
+
55
+ if ($] >= 5.008 && $int && $b > 7)
56
+ {
57
+ $BASE_LEN = $b;
58
+ *_mul = \&_mul_use_div_64;
59
+ *_div = \&_div_use_div_64;
60
+ $BASE = int("1e".$BASE_LEN);
61
+ $MAX_VAL = $BASE-1;
62
+ return $BASE_LEN unless wantarray;
63
+ return ($BASE_LEN, $BASE, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN, $MAX_VAL,);
64
+ }
65
+
66
+ # find whether we can use mul or div in mul()/div()
67
+ $BASE_LEN = $b+1;
68
+ my $caught = 0;
69
+ while (--$BASE_LEN > 5)
70
+ {
71
+ $BASE = int("1e".$BASE_LEN);
72
+ $RBASE = abs('1e-'.$BASE_LEN); # see USE_MUL
73
+ $caught = 0;
74
+ $caught += 1 if (int($BASE * $RBASE) != 1); # should be 1
75
+ $caught += 2 if (int($BASE / $BASE) != 1); # should be 1
76
+ last if $caught != 3;
77
+ }
78
+ $BASE = int("1e".$BASE_LEN);
79
+ $RBASE = abs('1e-'.$BASE_LEN); # see USE_MUL
80
+ $MAX_VAL = $BASE-1;
81
+
82
+ # ($caught & 1) != 0 => cannot use MUL
83
+ # ($caught & 2) != 0 => cannot use DIV
84
+ if ($caught == 2) # 2
85
+ {
86
+ # must USE_MUL since we cannot use DIV
87
+ *_mul = \&_mul_use_mul;
88
+ *_div = \&_div_use_mul;
89
+ }
90
+ else # 0 or 1
91
+ {
92
+ # can USE_DIV instead
93
+ *_mul = \&_mul_use_div;
94
+ *_div = \&_div_use_div;
95
+ }
96
+ }
97
+ return $BASE_LEN unless wantarray;
98
+ return ($BASE_LEN, $BASE, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN, $MAX_VAL);
99
+ }
100
+
101
+ sub _new
102
+ {
103
+ # (ref to string) return ref to num_array
104
+ # Convert a number from string format (without sign) to internal base
105
+ # 1ex format. Assumes normalized value as input.
106
+ my $il = length($_[1])-1;
107
+
108
+ # < BASE_LEN due len-1 above
109
+ return [ int($_[1]) ] if $il < $BASE_LEN; # shortcut for short numbers
110
+
111
+ # this leaves '00000' instead of int 0 and will be corrected after any op
112
+ [ reverse(unpack("a" . ($il % $BASE_LEN+1)
113
+ . ("a$BASE_LEN" x ($il / $BASE_LEN)), $_[1])) ];
114
+ }
115
+
116
+ BEGIN
117
+ {
118
+ # from Daniel Pfeiffer: determine largest group of digits that is precisely
119
+ # multipliable with itself plus carry
120
+ # Test now changed to expect the proper pattern, not a result off by 1 or 2
121
+ my ($e, $num) = 3; # lowest value we will use is 3+1-1 = 3
122
+ do
123
+ {
124
+ $num = ('9' x ++$e) + 0;
125
+ $num *= $num + 1.0;
126
+ } while ("$num" =~ /9{$e}0{$e}/); # must be a certain pattern
127
+ $e--; # last test failed, so retract one step
128
+ # the limits below brush the problems with the test above under the rug:
129
+ # the test should be able to find the proper $e automatically
130
+ $e = 5 if $^O =~ /^uts/; # UTS get's some special treatment
131
+ $e = 5 if $^O =~ /^unicos/; # unicos is also problematic (6 seems to work
132
+ # there, but we play safe)
133
+
134
+ my $int = 0;
135
+ if ($e > 7)
136
+ {
137
+ use integer;
138
+ my $e1 = 7;
139
+ $num = 7;
140
+ do
141
+ {
142
+ $num = ('9' x ++$e1) + 0;
143
+ $num *= $num + 1;
144
+ } while ("$num" =~ /9{$e1}0{$e1}/); # must be a certain pattern
145
+ $e1--; # last test failed, so retract one step
146
+ if ($e1 > 7)
147
+ {
148
+ $int = 1; $e = $e1;
149
+ }
150
+ }
151
+
152
+ __PACKAGE__->_base_len($e,$int); # set and store
153
+
154
+ use integer;
155
+ # find out how many bits _and, _or and _xor can take (old default = 16)
156
+ # I don't think anybody has yet 128 bit scalars, so let's play safe.
157
+ local $^W = 0; # don't warn about 'nonportable number'
158
+ $AND_BITS = 15; $XOR_BITS = 15; $OR_BITS = 15;
159
+
160
+ # find max bits, we will not go higher than numberofbits that fit into $BASE
161
+ # to make _and etc simpler (and faster for smaller, slower for large numbers)
162
+ my $max = 16;
163
+ while (2 ** $max < $BASE) { $max++; }
164
+ {
165
+ no integer;
166
+ $max = 16 if $] < 5.006; # older Perls might not take >16 too well
167
+ }
168
+ my ($x,$y,$z);
169
+ do {
170
+ $AND_BITS++;
171
+ $x = CORE::oct('0b' . '1' x $AND_BITS); $y = $x & $x;
172
+ $z = (2 ** $AND_BITS) - 1;
173
+ } while ($AND_BITS < $max && $x == $z && $y == $x);
174
+ $AND_BITS --; # retreat one step
175
+ do {
176
+ $XOR_BITS++;
177
+ $x = CORE::oct('0b' . '1' x $XOR_BITS); $y = $x ^ 0;
178
+ $z = (2 ** $XOR_BITS) - 1;
179
+ } while ($XOR_BITS < $max && $x == $z && $y == $x);
180
+ $XOR_BITS --; # retreat one step
181
+ do {
182
+ $OR_BITS++;
183
+ $x = CORE::oct('0b' . '1' x $OR_BITS); $y = $x | $x;
184
+ $z = (2 ** $OR_BITS) - 1;
185
+ } while ($OR_BITS < $max && $x == $z && $y == $x);
186
+ $OR_BITS --; # retreat one step
187
+
188
+ $AND_MASK = __PACKAGE__->_new( ( 2 ** $AND_BITS ));
189
+ $XOR_MASK = __PACKAGE__->_new( ( 2 ** $XOR_BITS ));
190
+ $OR_MASK = __PACKAGE__->_new( ( 2 ** $OR_BITS ));
191
+
192
+ # We can compute the approximate length no faster than the real length:
193
+ *_alen = \&_len;
194
+ }
195
+
196
+ ###############################################################################
197
+
198
+ sub _zero
199
+ {
200
+ # create a zero
201
+ [ 0 ];
202
+ }
203
+
204
+ sub _one
205
+ {
206
+ # create a one
207
+ [ 1 ];
208
+ }
209
+
210
+ sub _two
211
+ {
212
+ # create a two (used internally for shifting)
213
+ [ 2 ];
214
+ }
215
+
216
+ sub _ten
217
+ {
218
+ # create a 10 (used internally for shifting)
219
+ [ 10 ];
220
+ }
221
+
222
+ sub _1ex
223
+ {
224
+ # create a 1Ex
225
+ my $rem = $_[1] % $BASE_LEN; # remainder
226
+ my $parts = $_[1] / $BASE_LEN; # parts
227
+
228
+ # 000000, 000000, 100
229
+ [ (0) x $parts, '1' . ('0' x $rem) ];
230
+ }
231
+
232
+ sub _copy
233
+ {
234
+ # make a true copy
235
+ [ @{$_[1]} ];
236
+ }
237
+
238
+ # catch and throw away
239
+ sub import { }
240
+
241
+ ##############################################################################
242
+ # convert back to string and number
243
+
244
+ sub _str
245
+ {
246
+ # (ref to BINT) return num_str
247
+ # Convert number from internal base 100000 format to string format.
248
+ # internal format is always normalized (no leading zeros, "-0" => "+0")
249
+ my $ar = $_[1];
250
+
251
+ my $l = scalar @$ar; # number of parts
252
+ if ($l < 1) # should not happen
253
+ {
254
+ require Carp;
255
+ Carp::croak("$_[1] has no elements");
256
+ }
257
+
258
+ my $ret = "";
259
+ # handle first one different to strip leading zeros from it (there are no
260
+ # leading zero parts in internal representation)
261
+ $l --; $ret .= int($ar->[$l]); $l--;
262
+ # Interestingly, the pre-padd method uses more time
263
+ # the old grep variant takes longer (14 vs. 10 sec)
264
+ my $z = '0' x ($BASE_LEN-1);
265
+ while ($l >= 0)
266
+ {
267
+ $ret .= substr($z.$ar->[$l],-$BASE_LEN); # fastest way I could think of
268
+ $l--;
269
+ }
270
+ $ret;
271
+ }
272
+
273
+ sub _num
274
+ {
275
+ # Make a Perl scalar number (int/float) from a BigInt object.
276
+ my $x = $_[1];
277
+
278
+ return 0 + $x->[0] if scalar @$x == 1; # below $BASE
279
+
280
+ # Start with the most significant element and work towards the least
281
+ # significant element. Avoid multiplying "inf" (which happens if the number
282
+ # overflows) with "0" (if there are zero elements in $x) since this gives
283
+ # "nan" which propagates to the output.
284
+
285
+ my $num = 0;
286
+ for (my $i = $#$x ; $i >= 0 ; --$i) {
287
+ $num *= $BASE;
288
+ $num += $x -> [$i];
289
+ }
290
+ return $num;
291
+ }
292
+
293
+ ##############################################################################
294
+ # actual math code
295
+
296
+ sub _add
297
+ {
298
+ # (ref to int_num_array, ref to int_num_array)
299
+ # routine to add two base 1eX numbers
300
+ # stolen from Knuth Vol 2 Algorithm A pg 231
301
+ # there are separate routines to add and sub as per Knuth pg 233
302
+ # This routine modifies array x, but not y.
303
+
304
+ my ($c,$x,$y) = @_;
305
+
306
+ return $x if (@$y == 1) && $y->[0] == 0; # $x + 0 => $x
307
+ if ((@$x == 1) && $x->[0] == 0) # 0 + $y => $y->copy
308
+ {
309
+ # twice as slow as $x = [ @$y ], but nec. to retain $x as ref :(
310
+ @$x = @$y; return $x;
311
+ }
312
+
313
+ # for each in Y, add Y to X and carry. If after that, something is left in
314
+ # X, foreach in X add carry to X and then return X, carry
315
+ # Trades one "$j++" for having to shift arrays
316
+ my $i; my $car = 0; my $j = 0;
317
+ for $i (@$y)
318
+ {
319
+ $x->[$j] -= $BASE if $car = (($x->[$j] += $i + $car) >= $BASE) ? 1 : 0;
320
+ $j++;
321
+ }
322
+ while ($car != 0)
323
+ {
324
+ $x->[$j] -= $BASE if $car = (($x->[$j] += $car) >= $BASE) ? 1 : 0; $j++;
325
+ }
326
+ $x;
327
+ }
328
+
329
+ sub _inc
330
+ {
331
+ # (ref to int_num_array, ref to int_num_array)
332
+ # Add 1 to $x, modify $x in place
333
+ my ($c,$x) = @_;
334
+
335
+ for my $i (@$x)
336
+ {
337
+ return $x if (($i += 1) < $BASE); # early out
338
+ $i = 0; # overflow, next
339
+ }
340
+ push @$x,1 if (($x->[-1] || 0) == 0); # last overflowed, so extend
341
+ $x;
342
+ }
343
+
344
+ sub _dec
345
+ {
346
+ # (ref to int_num_array, ref to int_num_array)
347
+ # Sub 1 from $x, modify $x in place
348
+ my ($c,$x) = @_;
349
+
350
+ my $MAX = $BASE-1; # since MAX_VAL based on BASE
351
+ for my $i (@$x)
352
+ {
353
+ last if (($i -= 1) >= 0); # early out
354
+ $i = $MAX; # underflow, next
355
+ }
356
+ pop @$x if $x->[-1] == 0 && @$x > 1; # last underflowed (but leave 0)
357
+ $x;
358
+ }
359
+
360
+ sub _sub
361
+ {
362
+ # (ref to int_num_array, ref to int_num_array, swap)
363
+ # subtract base 1eX numbers -- stolen from Knuth Vol 2 pg 232, $x > $y
364
+ # subtract Y from X by modifying x in place
365
+ my ($c,$sx,$sy,$s) = @_;
366
+
367
+ my $car = 0; my $i; my $j = 0;
368
+ if (!$s)
369
+ {
370
+ for $i (@$sx)
371
+ {
372
+ last unless defined $sy->[$j] || $car;
373
+ $i += $BASE if $car = (($i -= ($sy->[$j] || 0) + $car) < 0); $j++;
374
+ }
375
+ # might leave leading zeros, so fix that
376
+ return __strip_zeros($sx);
377
+ }
378
+ for $i (@$sx)
379
+ {
380
+ # we can't do an early out if $x is < than $y, since we
381
+ # need to copy the high chunks from $y. Found by Bob Mathews.
382
+ #last unless defined $sy->[$j] || $car;
383
+ $sy->[$j] += $BASE
384
+ if $car = (($sy->[$j] = $i-($sy->[$j]||0) - $car) < 0);
385
+ $j++;
386
+ }
387
+ # might leave leading zeros, so fix that
388
+ __strip_zeros($sy);
389
+ }
390
+
391
+ sub _mul_use_mul
392
+ {
393
+ # (ref to int_num_array, ref to int_num_array)
394
+ # multiply two numbers in internal representation
395
+ # modifies first arg, second need not be different from first
396
+ my ($c,$xv,$yv) = @_;
397
+
398
+ if (@$yv == 1)
399
+ {
400
+ # shortcut for two very short numbers (improved by Nathan Zook)
401
+ # works also if xv and yv are the same reference, and handles also $x == 0
402
+ if (@$xv == 1)
403
+ {
404
+ if (($xv->[0] *= $yv->[0]) >= $BASE)
405
+ {
406
+ $xv->[0] = $xv->[0] - ($xv->[1] = int($xv->[0] * $RBASE)) * $BASE;
407
+ };
408
+ return $xv;
409
+ }
410
+ # $x * 0 => 0
411
+ if ($yv->[0] == 0)
412
+ {
413
+ @$xv = (0);
414
+ return $xv;
415
+ }
416
+ # multiply a large number a by a single element one, so speed up
417
+ my $y = $yv->[0]; my $car = 0;
418
+ foreach my $i (@$xv)
419
+ {
420
+ $i = $i * $y + $car; $car = int($i * $RBASE); $i -= $car * $BASE;
421
+ }
422
+ push @$xv, $car if $car != 0;
423
+ return $xv;
424
+ }
425
+ # shortcut for result $x == 0 => result = 0
426
+ return $xv if ( ((@$xv == 1) && ($xv->[0] == 0)) );
427
+
428
+ # since multiplying $x with $x fails, make copy in this case
429
+ $yv = [@$xv] if $xv == $yv; # same references?
430
+
431
+ my @prod = (); my ($prod,$car,$cty,$xi,$yi);
432
+
433
+ for $xi (@$xv)
434
+ {
435
+ $car = 0; $cty = 0;
436
+
437
+ # slow variant
438
+ # for $yi (@$yv)
439
+ # {
440
+ # $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
441
+ # $prod[$cty++] =
442
+ # $prod - ($car = int($prod * RBASE)) * $BASE; # see USE_MUL
443
+ # }
444
+ # $prod[$cty] += $car if $car; # need really to check for 0?
445
+ # $xi = shift @prod;
446
+
447
+ # faster variant
448
+ # looping through this if $xi == 0 is silly - so optimize it away!
449
+ $xi = (shift @prod || 0), next if $xi == 0;
450
+ for $yi (@$yv)
451
+ {
452
+ $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
453
+ ## this is actually a tad slower
454
+ ## $prod = $prod[$cty]; $prod += ($car + $xi * $yi); # no ||0 here
455
+ $prod[$cty++] =
456
+ $prod - ($car = int($prod * $RBASE)) * $BASE; # see USE_MUL
457
+ }
458
+ $prod[$cty] += $car if $car; # need really to check for 0?
459
+ $xi = shift @prod || 0; # || 0 makes v5.005_3 happy
460
+ }
461
+ push @$xv, @prod;
462
+ # can't have leading zeros
463
+ # __strip_zeros($xv);
464
+ $xv;
465
+ }
466
+
467
+ sub _mul_use_div_64
468
+ {
469
+ # (ref to int_num_array, ref to int_num_array)
470
+ # multiply two numbers in internal representation
471
+ # modifies first arg, second need not be different from first
472
+ # works for 64 bit integer with "use integer"
473
+ my ($c,$xv,$yv) = @_;
474
+
475
+ use integer;
476
+ if (@$yv == 1)
477
+ {
478
+ # shortcut for two small numbers, also handles $x == 0
479
+ if (@$xv == 1)
480
+ {
481
+ # shortcut for two very short numbers (improved by Nathan Zook)
482
+ # works also if xv and yv are the same reference, and handles also $x == 0
483
+ if (($xv->[0] *= $yv->[0]) >= $BASE)
484
+ {
485
+ $xv->[0] =
486
+ $xv->[0] - ($xv->[1] = $xv->[0] / $BASE) * $BASE;
487
+ };
488
+ return $xv;
489
+ }
490
+ # $x * 0 => 0
491
+ if ($yv->[0] == 0)
492
+ {
493
+ @$xv = (0);
494
+ return $xv;
495
+ }
496
+ # multiply a large number a by a single element one, so speed up
497
+ my $y = $yv->[0]; my $car = 0;
498
+ foreach my $i (@$xv)
499
+ {
500
+ #$i = $i * $y + $car; $car = $i / $BASE; $i -= $car * $BASE;
501
+ $i = $i * $y + $car; $i -= ($car = $i / $BASE) * $BASE;
502
+ }
503
+ push @$xv, $car if $car != 0;
504
+ return $xv;
505
+ }
506
+ # shortcut for result $x == 0 => result = 0
507
+ return $xv if ( ((@$xv == 1) && ($xv->[0] == 0)) );
508
+
509
+ # since multiplying $x with $x fails, make copy in this case
510
+ $yv = [@$xv] if $xv == $yv; # same references?
511
+
512
+ my @prod = (); my ($prod,$car,$cty,$xi,$yi);
513
+ for $xi (@$xv)
514
+ {
515
+ $car = 0; $cty = 0;
516
+ # looping through this if $xi == 0 is silly - so optimize it away!
517
+ $xi = (shift @prod || 0), next if $xi == 0;
518
+ for $yi (@$yv)
519
+ {
520
+ $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
521
+ $prod[$cty++] = $prod - ($car = $prod / $BASE) * $BASE;
522
+ }
523
+ $prod[$cty] += $car if $car; # need really to check for 0?
524
+ $xi = shift @prod || 0; # || 0 makes v5.005_3 happy
525
+ }
526
+ push @$xv, @prod;
527
+ $xv;
528
+ }
529
+
530
+ sub _mul_use_div
531
+ {
532
+ # (ref to int_num_array, ref to int_num_array)
533
+ # multiply two numbers in internal representation
534
+ # modifies first arg, second need not be different from first
535
+ my ($c,$xv,$yv) = @_;
536
+
537
+ if (@$yv == 1)
538
+ {
539
+ # shortcut for two small numbers, also handles $x == 0
540
+ if (@$xv == 1)
541
+ {
542
+ # shortcut for two very short numbers (improved by Nathan Zook)
543
+ # works also if xv and yv are the same reference, and handles also $x == 0
544
+ if (($xv->[0] *= $yv->[0]) >= $BASE)
545
+ {
546
+ $xv->[0] =
547
+ $xv->[0] - ($xv->[1] = int($xv->[0] / $BASE)) * $BASE;
548
+ };
549
+ return $xv;
550
+ }
551
+ # $x * 0 => 0
552
+ if ($yv->[0] == 0)
553
+ {
554
+ @$xv = (0);
555
+ return $xv;
556
+ }
557
+ # multiply a large number a by a single element one, so speed up
558
+ my $y = $yv->[0]; my $car = 0;
559
+ foreach my $i (@$xv)
560
+ {
561
+ $i = $i * $y + $car; $car = int($i / $BASE); $i -= $car * $BASE;
562
+ # This (together with use integer;) does not work on 32-bit Perls
563
+ #$i = $i * $y + $car; $i -= ($car = $i / $BASE) * $BASE;
564
+ }
565
+ push @$xv, $car if $car != 0;
566
+ return $xv;
567
+ }
568
+ # shortcut for result $x == 0 => result = 0
569
+ return $xv if ( ((@$xv == 1) && ($xv->[0] == 0)) );
570
+
571
+ # since multiplying $x with $x fails, make copy in this case
572
+ $yv = [@$xv] if $xv == $yv; # same references?
573
+
574
+ my @prod = (); my ($prod,$car,$cty,$xi,$yi);
575
+ for $xi (@$xv)
576
+ {
577
+ $car = 0; $cty = 0;
578
+ # looping through this if $xi == 0 is silly - so optimize it away!
579
+ $xi = (shift @prod || 0), next if $xi == 0;
580
+ for $yi (@$yv)
581
+ {
582
+ $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
583
+ $prod[$cty++] = $prod - ($car = int($prod / $BASE)) * $BASE;
584
+ }
585
+ $prod[$cty] += $car if $car; # need really to check for 0?
586
+ $xi = shift @prod || 0; # || 0 makes v5.005_3 happy
587
+ }
588
+ push @$xv, @prod;
589
+ # can't have leading zeros
590
+ # __strip_zeros($xv);
591
+ $xv;
592
+ }
593
+
594
+ sub _div_use_mul
595
+ {
596
+ # ref to array, ref to array, modify first array and return remainder if
597
+ # in list context
598
+
599
+ # see comments in _div_use_div() for more explanations
600
+
601
+ my ($c,$x,$yorg) = @_;
602
+
603
+ # the general div algorithm here is about O(N*N) and thus quite slow, so
604
+ # we first check for some special cases and use shortcuts to handle them.
605
+
606
+ # This works, because we store the numbers in a chunked format where each
607
+ # element contains 5..7 digits (depending on system).
608
+
609
+ # if both numbers have only one element:
610
+ if (@$x == 1 && @$yorg == 1)
611
+ {
612
+ # shortcut, $yorg and $x are two small numbers
613
+ if (wantarray)
614
+ {
615
+ my $r = [ $x->[0] % $yorg->[0] ];
616
+ $x->[0] = int($x->[0] / $yorg->[0]);
617
+ return ($x,$r);
618
+ }
619
+ else
620
+ {
621
+ $x->[0] = int($x->[0] / $yorg->[0]);
622
+ return $x;
623
+ }
624
+ }
625
+
626
+ # if x has more than one, but y has only one element:
627
+ if (@$yorg == 1)
628
+ {
629
+ my $rem;
630
+ $rem = _mod($c,[ @$x ],$yorg) if wantarray;
631
+
632
+ # shortcut, $y is < $BASE
633
+ my $j = scalar @$x; my $r = 0;
634
+ my $y = $yorg->[0]; my $b;
635
+ while ($j-- > 0)
636
+ {
637
+ $b = $r * $BASE + $x->[$j];
638
+ $x->[$j] = int($b/$y);
639
+ $r = $b % $y;
640
+ }
641
+ pop @$x if @$x > 1 && $x->[-1] == 0; # splice up a leading zero
642
+ return ($x,$rem) if wantarray;
643
+ return $x;
644
+ }
645
+
646
+ # now x and y have more than one element
647
+
648
+ # check whether y has more elements than x, if yet, the result will be 0
649
+ if (@$yorg > @$x)
650
+ {
651
+ my $rem;
652
+ $rem = [@$x] if wantarray; # make copy
653
+ splice (@$x,1); # keep ref to original array
654
+ $x->[0] = 0; # set to 0
655
+ return ($x,$rem) if wantarray; # including remainder?
656
+ return $x; # only x, which is [0] now
657
+ }
658
+ # check whether the numbers have the same number of elements, in that case
659
+ # the result will fit into one element and can be computed efficiently
660
+ if (@$yorg == @$x)
661
+ {
662
+ my $rem;
663
+ # if $yorg has more digits than $x (it's leading element is longer than
664
+ # the one from $x), the result will also be 0:
665
+ if (length(int($yorg->[-1])) > length(int($x->[-1])))
666
+ {
667
+ $rem = [@$x] if wantarray; # make copy
668
+ splice (@$x,1); # keep ref to org array
669
+ $x->[0] = 0; # set to 0
670
+ return ($x,$rem) if wantarray; # including remainder?
671
+ return $x;
672
+ }
673
+ # now calculate $x / $yorg
674
+ if (length(int($yorg->[-1])) == length(int($x->[-1])))
675
+ {
676
+ # same length, so make full compare
677
+
678
+ my $a = 0; my $j = scalar @$x - 1;
679
+ # manual way (abort if unequal, good for early ne)
680
+ while ($j >= 0)
681
+ {
682
+ last if ($a = $x->[$j] - $yorg->[$j]); $j--;
683
+ }
684
+ # $a contains the result of the compare between X and Y
685
+ # a < 0: x < y, a == 0: x == y, a > 0: x > y
686
+ if ($a <= 0)
687
+ {
688
+ $rem = [ 0 ]; # a = 0 => x == y => rem 0
689
+ $rem = [@$x] if $a != 0; # a < 0 => x < y => rem = x
690
+ splice(@$x,1); # keep single element
691
+ $x->[0] = 0; # if $a < 0
692
+ $x->[0] = 1 if $a == 0; # $x == $y
693
+ return ($x,$rem) if wantarray;
694
+ return $x;
695
+ }
696
+ # $x >= $y, so proceed normally
697
+ }
698
+ }
699
+
700
+ # all other cases:
701
+
702
+ my $y = [ @$yorg ]; # always make copy to preserve
703
+
704
+ my ($car,$bar,$prd,$dd,$xi,$yi,@q,$v2,$v1,@d,$tmp,$q,$u2,$u1,$u0);
705
+
706
+ $car = $bar = $prd = 0;
707
+ if (($dd = int($BASE/($y->[-1]+1))) != 1)
708
+ {
709
+ for $xi (@$x)
710
+ {
711
+ $xi = $xi * $dd + $car;
712
+ $xi -= ($car = int($xi * $RBASE)) * $BASE; # see USE_MUL
713
+ }
714
+ push(@$x, $car); $car = 0;
715
+ for $yi (@$y)
716
+ {
717
+ $yi = $yi * $dd + $car;
718
+ $yi -= ($car = int($yi * $RBASE)) * $BASE; # see USE_MUL
719
+ }
720
+ }
721
+ else
722
+ {
723
+ push(@$x, 0);
724
+ }
725
+ @q = (); ($v2,$v1) = @$y[-2,-1];
726
+ $v2 = 0 unless $v2;
727
+ while ($#$x > $#$y)
728
+ {
729
+ ($u2,$u1,$u0) = @$x[-3..-1];
730
+ $u2 = 0 unless $u2;
731
+ #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
732
+ # if $v1 == 0;
733
+ $q = (($u0 == $v1) ? $MAX_VAL : int(($u0*$BASE+$u1)/$v1));
734
+ --$q while ($v2*$q > ($u0*$BASE+$u1-$q*$v1)*$BASE+$u2);
735
+ if ($q)
736
+ {
737
+ ($car, $bar) = (0,0);
738
+ for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi)
739
+ {
740
+ $prd = $q * $y->[$yi] + $car;
741
+ $prd -= ($car = int($prd * $RBASE)) * $BASE; # see USE_MUL
742
+ $x->[$xi] += $BASE if ($bar = (($x->[$xi] -= $prd + $bar) < 0));
743
+ }
744
+ if ($x->[-1] < $car + $bar)
745
+ {
746
+ $car = 0; --$q;
747
+ for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi)
748
+ {
749
+ $x->[$xi] -= $BASE
750
+ if ($car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE));
751
+ }
752
+ }
753
+ }
754
+ pop(@$x);
755
+ unshift(@q, $q);
756
+ }
757
+ if (wantarray)
758
+ {
759
+ @d = ();
760
+ if ($dd != 1)
761
+ {
762
+ $car = 0;
763
+ for $xi (reverse @$x)
764
+ {
765
+ $prd = $car * $BASE + $xi;
766
+ $car = $prd - ($tmp = int($prd / $dd)) * $dd; # see USE_MUL
767
+ unshift(@d, $tmp);
768
+ }
769
+ }
770
+ else
771
+ {
772
+ @d = @$x;
773
+ }
774
+ @$x = @q;
775
+ my $d = \@d;
776
+ __strip_zeros($x);
777
+ __strip_zeros($d);
778
+ return ($x,$d);
779
+ }
780
+ @$x = @q;
781
+ __strip_zeros($x);
782
+ $x;
783
+ }
784
+
785
+ sub _div_use_div_64
786
+ {
787
+ # ref to array, ref to array, modify first array and return remainder if
788
+ # in list context
789
+ # This version works on 64 bit integers
790
+ my ($c,$x,$yorg) = @_;
791
+
792
+ use integer;
793
+ # the general div algorithm here is about O(N*N) and thus quite slow, so
794
+ # we first check for some special cases and use shortcuts to handle them.
795
+
796
+ # This works, because we store the numbers in a chunked format where each
797
+ # element contains 5..7 digits (depending on system).
798
+
799
+ # if both numbers have only one element:
800
+ if (@$x == 1 && @$yorg == 1)
801
+ {
802
+ # shortcut, $yorg and $x are two small numbers
803
+ if (wantarray)
804
+ {
805
+ my $r = [ $x->[0] % $yorg->[0] ];
806
+ $x->[0] = int($x->[0] / $yorg->[0]);
807
+ return ($x,$r);
808
+ }
809
+ else
810
+ {
811
+ $x->[0] = int($x->[0] / $yorg->[0]);
812
+ return $x;
813
+ }
814
+ }
815
+ # if x has more than one, but y has only one element:
816
+ if (@$yorg == 1)
817
+ {
818
+ my $rem;
819
+ $rem = _mod($c,[ @$x ],$yorg) if wantarray;
820
+
821
+ # shortcut, $y is < $BASE
822
+ my $j = scalar @$x; my $r = 0;
823
+ my $y = $yorg->[0]; my $b;
824
+ while ($j-- > 0)
825
+ {
826
+ $b = $r * $BASE + $x->[$j];
827
+ $x->[$j] = int($b/$y);
828
+ $r = $b % $y;
829
+ }
830
+ pop @$x if @$x > 1 && $x->[-1] == 0; # splice up a leading zero
831
+ return ($x,$rem) if wantarray;
832
+ return $x;
833
+ }
834
+ # now x and y have more than one element
835
+
836
+ # check whether y has more elements than x, if yet, the result will be 0
837
+ if (@$yorg > @$x)
838
+ {
839
+ my $rem;
840
+ $rem = [@$x] if wantarray; # make copy
841
+ splice (@$x,1); # keep ref to original array
842
+ $x->[0] = 0; # set to 0
843
+ return ($x,$rem) if wantarray; # including remainder?
844
+ return $x; # only x, which is [0] now
845
+ }
846
+ # check whether the numbers have the same number of elements, in that case
847
+ # the result will fit into one element and can be computed efficiently
848
+ if (@$yorg == @$x)
849
+ {
850
+ my $rem;
851
+ # if $yorg has more digits than $x (it's leading element is longer than
852
+ # the one from $x), the result will also be 0:
853
+ if (length(int($yorg->[-1])) > length(int($x->[-1])))
854
+ {
855
+ $rem = [@$x] if wantarray; # make copy
856
+ splice (@$x,1); # keep ref to org array
857
+ $x->[0] = 0; # set to 0
858
+ return ($x,$rem) if wantarray; # including remainder?
859
+ return $x;
860
+ }
861
+ # now calculate $x / $yorg
862
+
863
+ if (length(int($yorg->[-1])) == length(int($x->[-1])))
864
+ {
865
+ # same length, so make full compare
866
+
867
+ my $a = 0; my $j = scalar @$x - 1;
868
+ # manual way (abort if unequal, good for early ne)
869
+ while ($j >= 0)
870
+ {
871
+ last if ($a = $x->[$j] - $yorg->[$j]); $j--;
872
+ }
873
+ # $a contains the result of the compare between X and Y
874
+ # a < 0: x < y, a == 0: x == y, a > 0: x > y
875
+ if ($a <= 0)
876
+ {
877
+ $rem = [ 0 ]; # a = 0 => x == y => rem 0
878
+ $rem = [@$x] if $a != 0; # a < 0 => x < y => rem = x
879
+ splice(@$x,1); # keep single element
880
+ $x->[0] = 0; # if $a < 0
881
+ $x->[0] = 1 if $a == 0; # $x == $y
882
+ return ($x,$rem) if wantarray; # including remainder?
883
+ return $x;
884
+ }
885
+ # $x >= $y, so proceed normally
886
+
887
+ }
888
+ }
889
+
890
+ # all other cases:
891
+
892
+ my $y = [ @$yorg ]; # always make copy to preserve
893
+
894
+ my ($car,$bar,$prd,$dd,$xi,$yi,@q,$v2,$v1,@d,$tmp,$q,$u2,$u1,$u0);
895
+
896
+ $car = $bar = $prd = 0;
897
+ if (($dd = int($BASE/($y->[-1]+1))) != 1)
898
+ {
899
+ for $xi (@$x)
900
+ {
901
+ $xi = $xi * $dd + $car;
902
+ $xi -= ($car = int($xi / $BASE)) * $BASE;
903
+ }
904
+ push(@$x, $car); $car = 0;
905
+ for $yi (@$y)
906
+ {
907
+ $yi = $yi * $dd + $car;
908
+ $yi -= ($car = int($yi / $BASE)) * $BASE;
909
+ }
910
+ }
911
+ else
912
+ {
913
+ push(@$x, 0);
914
+ }
915
+
916
+ # @q will accumulate the final result, $q contains the current computed
917
+ # part of the final result
918
+
919
+ @q = (); ($v2,$v1) = @$y[-2,-1];
920
+ $v2 = 0 unless $v2;
921
+ while ($#$x > $#$y)
922
+ {
923
+ ($u2,$u1,$u0) = @$x[-3..-1];
924
+ $u2 = 0 unless $u2;
925
+ #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
926
+ # if $v1 == 0;
927
+ $q = (($u0 == $v1) ? $MAX_VAL : int(($u0*$BASE+$u1)/$v1));
928
+ --$q while ($v2*$q > ($u0*$BASE+$u1-$q*$v1)*$BASE+$u2);
929
+ if ($q)
930
+ {
931
+ ($car, $bar) = (0,0);
932
+ for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi)
933
+ {
934
+ $prd = $q * $y->[$yi] + $car;
935
+ $prd -= ($car = int($prd / $BASE)) * $BASE;
936
+ $x->[$xi] += $BASE if ($bar = (($x->[$xi] -= $prd + $bar) < 0));
937
+ }
938
+ if ($x->[-1] < $car + $bar)
939
+ {
940
+ $car = 0; --$q;
941
+ for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi)
942
+ {
943
+ $x->[$xi] -= $BASE
944
+ if ($car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE));
945
+ }
946
+ }
947
+ }
948
+ pop(@$x); unshift(@q, $q);
949
+ }
950
+ if (wantarray)
951
+ {
952
+ @d = ();
953
+ if ($dd != 1)
954
+ {
955
+ $car = 0;
956
+ for $xi (reverse @$x)
957
+ {
958
+ $prd = $car * $BASE + $xi;
959
+ $car = $prd - ($tmp = int($prd / $dd)) * $dd;
960
+ unshift(@d, $tmp);
961
+ }
962
+ }
963
+ else
964
+ {
965
+ @d = @$x;
966
+ }
967
+ @$x = @q;
968
+ my $d = \@d;
969
+ __strip_zeros($x);
970
+ __strip_zeros($d);
971
+ return ($x,$d);
972
+ }
973
+ @$x = @q;
974
+ __strip_zeros($x);
975
+ $x;
976
+ }
977
+
978
+ sub _div_use_div
979
+ {
980
+ # ref to array, ref to array, modify first array and return remainder if
981
+ # in list context
982
+ my ($c,$x,$yorg) = @_;
983
+
984
+ # the general div algorithm here is about O(N*N) and thus quite slow, so
985
+ # we first check for some special cases and use shortcuts to handle them.
986
+
987
+ # This works, because we store the numbers in a chunked format where each
988
+ # element contains 5..7 digits (depending on system).
989
+
990
+ # if both numbers have only one element:
991
+ if (@$x == 1 && @$yorg == 1)
992
+ {
993
+ # shortcut, $yorg and $x are two small numbers
994
+ if (wantarray)
995
+ {
996
+ my $r = [ $x->[0] % $yorg->[0] ];
997
+ $x->[0] = int($x->[0] / $yorg->[0]);
998
+ return ($x,$r);
999
+ }
1000
+ else
1001
+ {
1002
+ $x->[0] = int($x->[0] / $yorg->[0]);
1003
+ return $x;
1004
+ }
1005
+ }
1006
+ # if x has more than one, but y has only one element:
1007
+ if (@$yorg == 1)
1008
+ {
1009
+ my $rem;
1010
+ $rem = _mod($c,[ @$x ],$yorg) if wantarray;
1011
+
1012
+ # shortcut, $y is < $BASE
1013
+ my $j = scalar @$x; my $r = 0;
1014
+ my $y = $yorg->[0]; my $b;
1015
+ while ($j-- > 0)
1016
+ {
1017
+ $b = $r * $BASE + $x->[$j];
1018
+ $x->[$j] = int($b/$y);
1019
+ $r = $b % $y;
1020
+ }
1021
+ pop @$x if @$x > 1 && $x->[-1] == 0; # splice up a leading zero
1022
+ return ($x,$rem) if wantarray;
1023
+ return $x;
1024
+ }
1025
+ # now x and y have more than one element
1026
+
1027
+ # check whether y has more elements than x, if yet, the result will be 0
1028
+ if (@$yorg > @$x)
1029
+ {
1030
+ my $rem;
1031
+ $rem = [@$x] if wantarray; # make copy
1032
+ splice (@$x,1); # keep ref to original array
1033
+ $x->[0] = 0; # set to 0
1034
+ return ($x,$rem) if wantarray; # including remainder?
1035
+ return $x; # only x, which is [0] now
1036
+ }
1037
+ # check whether the numbers have the same number of elements, in that case
1038
+ # the result will fit into one element and can be computed efficiently
1039
+ if (@$yorg == @$x)
1040
+ {
1041
+ my $rem;
1042
+ # if $yorg has more digits than $x (it's leading element is longer than
1043
+ # the one from $x), the result will also be 0:
1044
+ if (length(int($yorg->[-1])) > length(int($x->[-1])))
1045
+ {
1046
+ $rem = [@$x] if wantarray; # make copy
1047
+ splice (@$x,1); # keep ref to org array
1048
+ $x->[0] = 0; # set to 0
1049
+ return ($x,$rem) if wantarray; # including remainder?
1050
+ return $x;
1051
+ }
1052
+ # now calculate $x / $yorg
1053
+
1054
+ if (length(int($yorg->[-1])) == length(int($x->[-1])))
1055
+ {
1056
+ # same length, so make full compare
1057
+
1058
+ my $a = 0; my $j = scalar @$x - 1;
1059
+ # manual way (abort if unequal, good for early ne)
1060
+ while ($j >= 0)
1061
+ {
1062
+ last if ($a = $x->[$j] - $yorg->[$j]); $j--;
1063
+ }
1064
+ # $a contains the result of the compare between X and Y
1065
+ # a < 0: x < y, a == 0: x == y, a > 0: x > y
1066
+ if ($a <= 0)
1067
+ {
1068
+ $rem = [ 0 ]; # a = 0 => x == y => rem 0
1069
+ $rem = [@$x] if $a != 0; # a < 0 => x < y => rem = x
1070
+ splice(@$x,1); # keep single element
1071
+ $x->[0] = 0; # if $a < 0
1072
+ $x->[0] = 1 if $a == 0; # $x == $y
1073
+ return ($x,$rem) if wantarray; # including remainder?
1074
+ return $x;
1075
+ }
1076
+ # $x >= $y, so proceed normally
1077
+
1078
+ }
1079
+ }
1080
+
1081
+ # all other cases:
1082
+
1083
+ my $y = [ @$yorg ]; # always make copy to preserve
1084
+
1085
+ my ($car,$bar,$prd,$dd,$xi,$yi,@q,$v2,$v1,@d,$tmp,$q,$u2,$u1,$u0);
1086
+
1087
+ $car = $bar = $prd = 0;
1088
+ if (($dd = int($BASE/($y->[-1]+1))) != 1)
1089
+ {
1090
+ for $xi (@$x)
1091
+ {
1092
+ $xi = $xi * $dd + $car;
1093
+ $xi -= ($car = int($xi / $BASE)) * $BASE;
1094
+ }
1095
+ push(@$x, $car); $car = 0;
1096
+ for $yi (@$y)
1097
+ {
1098
+ $yi = $yi * $dd + $car;
1099
+ $yi -= ($car = int($yi / $BASE)) * $BASE;
1100
+ }
1101
+ }
1102
+ else
1103
+ {
1104
+ push(@$x, 0);
1105
+ }
1106
+
1107
+ # @q will accumulate the final result, $q contains the current computed
1108
+ # part of the final result
1109
+
1110
+ @q = (); ($v2,$v1) = @$y[-2,-1];
1111
+ $v2 = 0 unless $v2;
1112
+ while ($#$x > $#$y)
1113
+ {
1114
+ ($u2,$u1,$u0) = @$x[-3..-1];
1115
+ $u2 = 0 unless $u2;
1116
+ #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
1117
+ # if $v1 == 0;
1118
+ $q = (($u0 == $v1) ? $MAX_VAL : int(($u0*$BASE+$u1)/$v1));
1119
+ --$q while ($v2*$q > ($u0*$BASE+$u1-$q*$v1)*$BASE+$u2);
1120
+ if ($q)
1121
+ {
1122
+ ($car, $bar) = (0,0);
1123
+ for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi)
1124
+ {
1125
+ $prd = $q * $y->[$yi] + $car;
1126
+ $prd -= ($car = int($prd / $BASE)) * $BASE;
1127
+ $x->[$xi] += $BASE if ($bar = (($x->[$xi] -= $prd + $bar) < 0));
1128
+ }
1129
+ if ($x->[-1] < $car + $bar)
1130
+ {
1131
+ $car = 0; --$q;
1132
+ for ($yi = 0, $xi = $#$x-$#$y-1; $yi <= $#$y; ++$yi,++$xi)
1133
+ {
1134
+ $x->[$xi] -= $BASE
1135
+ if ($car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE));
1136
+ }
1137
+ }
1138
+ }
1139
+ pop(@$x); unshift(@q, $q);
1140
+ }
1141
+ if (wantarray)
1142
+ {
1143
+ @d = ();
1144
+ if ($dd != 1)
1145
+ {
1146
+ $car = 0;
1147
+ for $xi (reverse @$x)
1148
+ {
1149
+ $prd = $car * $BASE + $xi;
1150
+ $car = $prd - ($tmp = int($prd / $dd)) * $dd;
1151
+ unshift(@d, $tmp);
1152
+ }
1153
+ }
1154
+ else
1155
+ {
1156
+ @d = @$x;
1157
+ }
1158
+ @$x = @q;
1159
+ my $d = \@d;
1160
+ __strip_zeros($x);
1161
+ __strip_zeros($d);
1162
+ return ($x,$d);
1163
+ }
1164
+ @$x = @q;
1165
+ __strip_zeros($x);
1166
+ $x;
1167
+ }
1168
+
1169
+ ##############################################################################
1170
+ # testing
1171
+
1172
+ sub _acmp
1173
+ {
1174
+ # internal absolute post-normalized compare (ignore signs)
1175
+ # ref to array, ref to array, return <0, 0, >0
1176
+ # arrays must have at least one entry; this is not checked for
1177
+ my ($c,$cx,$cy) = @_;
1178
+
1179
+ # shortcut for short numbers
1180
+ return (($cx->[0] <=> $cy->[0]) <=> 0)
1181
+ if scalar @$cx == scalar @$cy && scalar @$cx == 1;
1182
+
1183
+ # fast comp based on number of array elements (aka pseudo-length)
1184
+ my $lxy = (scalar @$cx - scalar @$cy)
1185
+ # or length of first element if same number of elements (aka difference 0)
1186
+ ||
1187
+ # need int() here because sometimes the last element is '00018' vs '18'
1188
+ (length(int($cx->[-1])) - length(int($cy->[-1])));
1189
+ return -1 if $lxy < 0; # already differs, ret
1190
+ return 1 if $lxy > 0; # ditto
1191
+
1192
+ # manual way (abort if unequal, good for early ne)
1193
+ my $a; my $j = scalar @$cx;
1194
+ while (--$j >= 0)
1195
+ {
1196
+ last if ($a = $cx->[$j] - $cy->[$j]);
1197
+ }
1198
+ $a <=> 0;
1199
+ }
1200
+
1201
+ sub _len
1202
+ {
1203
+ # compute number of digits in base 10
1204
+
1205
+ # int() because add/sub sometimes leaves strings (like '00005') instead of
1206
+ # '5' in this place, thus causing length() to report wrong length
1207
+ my $cx = $_[1];
1208
+
1209
+ (@$cx-1)*$BASE_LEN+length(int($cx->[-1]));
1210
+ }
1211
+
1212
+ sub _digit
1213
+ {
1214
+ # Return the nth digit. Zero is rightmost, so _digit(123,0) gives 3.
1215
+ # Negative values count from the left, so _digit(123, -1) gives 1.
1216
+ my ($c,$x,$n) = @_;
1217
+
1218
+ my $len = _len('',$x);
1219
+
1220
+ $n += $len if $n < 0; # -1 last, -2 second-to-last
1221
+ return "0" if $n < 0 || $n >= $len; # return 0 for digits out of range
1222
+
1223
+ my $elem = int($n / $BASE_LEN); # which array element
1224
+ my $digit = $n % $BASE_LEN; # which digit in this element
1225
+ substr("$x->[$elem]", -$digit-1, 1);
1226
+ }
1227
+
1228
+ sub _zeros
1229
+ {
1230
+ # return amount of trailing zeros in decimal
1231
+ # check each array elem in _m for having 0 at end as long as elem == 0
1232
+ # Upon finding a elem != 0, stop
1233
+ my $x = $_[1];
1234
+
1235
+ return 0 if scalar @$x == 1 && $x->[0] == 0;
1236
+
1237
+ my $zeros = 0; my $elem;
1238
+ foreach my $e (@$x)
1239
+ {
1240
+ if ($e != 0)
1241
+ {
1242
+ $elem = "$e"; # preserve x
1243
+ $elem =~ s/.*?(0*$)/$1/; # strip anything not zero
1244
+ $zeros *= $BASE_LEN; # elems * 5
1245
+ $zeros += length($elem); # count trailing zeros
1246
+ last; # early out
1247
+ }
1248
+ $zeros ++; # real else branch: 50% slower!
1249
+ }
1250
+ $zeros;
1251
+ }
1252
+
1253
+ ##############################################################################
1254
+ # _is_* routines
1255
+
1256
+ sub _is_zero
1257
+ {
1258
+ # return true if arg is zero
1259
+ (((scalar @{$_[1]} == 1) && ($_[1]->[0] == 0))) <=> 0;
1260
+ }
1261
+
1262
+ sub _is_even
1263
+ {
1264
+ # return true if arg is even
1265
+ (!($_[1]->[0] & 1)) <=> 0;
1266
+ }
1267
+
1268
+ sub _is_odd
1269
+ {
1270
+ # return true if arg is odd
1271
+ (($_[1]->[0] & 1)) <=> 0;
1272
+ }
1273
+
1274
+ sub _is_one
1275
+ {
1276
+ # return true if arg is one
1277
+ (scalar @{$_[1]} == 1) && ($_[1]->[0] == 1) <=> 0;
1278
+ }
1279
+
1280
+ sub _is_two
1281
+ {
1282
+ # return true if arg is two
1283
+ (scalar @{$_[1]} == 1) && ($_[1]->[0] == 2) <=> 0;
1284
+ }
1285
+
1286
+ sub _is_ten
1287
+ {
1288
+ # return true if arg is ten
1289
+ (scalar @{$_[1]} == 1) && ($_[1]->[0] == 10) <=> 0;
1290
+ }
1291
+
1292
+ sub __strip_zeros
1293
+ {
1294
+ # internal normalization function that strips leading zeros from the array
1295
+ # args: ref to array
1296
+ my $s = shift;
1297
+
1298
+ my $cnt = scalar @$s; # get count of parts
1299
+ my $i = $cnt-1;
1300
+ push @$s,0 if $i < 0; # div might return empty results, so fix it
1301
+
1302
+ return $s if @$s == 1; # early out
1303
+
1304
+ #print "strip: cnt $cnt i $i\n";
1305
+ # '0', '3', '4', '0', '0',
1306
+ # 0 1 2 3 4
1307
+ # cnt = 5, i = 4
1308
+ # i = 4
1309
+ # i = 3
1310
+ # => fcnt = cnt - i (5-2 => 3, cnt => 5-1 = 4, throw away from 4th pos)
1311
+ # >= 1: skip first part (this can be zero)
1312
+ while ($i > 0) { last if $s->[$i] != 0; $i--; }
1313
+ $i++; splice @$s,$i if ($i < $cnt); # $i cant be 0
1314
+ $s;
1315
+ }
1316
+
1317
+ ###############################################################################
1318
+ # check routine to test internal state for corruptions
1319
+
1320
+ sub _check
1321
+ {
1322
+ # used by the test suite
1323
+ my $x = $_[1];
1324
+
1325
+ return "$x is not a reference" if !ref($x);
1326
+
1327
+ # are all parts are valid?
1328
+ my $i = 0; my $j = scalar @$x; my ($e,$try);
1329
+ while ($i < $j)
1330
+ {
1331
+ $e = $x->[$i]; $e = 'undef' unless defined $e;
1332
+ $try = '=~ /^[\+]?[0-9]+\$/; '."($x, $e)";
1333
+ last if $e !~ /^[+]?[0-9]+$/;
1334
+ $try = '=~ /^[\+]?[0-9]+\$/; '."($x, $e) (stringify)";
1335
+ last if "$e" !~ /^[+]?[0-9]+$/;
1336
+ $try = '=~ /^[\+]?[0-9]+\$/; '."($x, $e) (cat-stringify)";
1337
+ last if '' . "$e" !~ /^[+]?[0-9]+$/;
1338
+ $try = ' < 0 || >= $BASE; '."($x, $e)";
1339
+ last if $e <0 || $e >= $BASE;
1340
+ # this test is disabled, since new/bnorm and certain ops (like early out
1341
+ # in add/sub) are allowed/expected to leave '00000' in some elements
1342
+ #$try = '=~ /^00+/; '."($x, $e)";
1343
+ #last if $e =~ /^00+/;
1344
+ $i++;
1345
+ }
1346
+ return "Illegal part '$e' at pos $i (tested: $try)" if $i < $j;
1347
+ 0;
1348
+ }
1349
+
1350
+
1351
+ ###############################################################################
1352
+
1353
+ sub _mod
1354
+ {
1355
+ # if possible, use mod shortcut
1356
+ my ($c,$x,$yo) = @_;
1357
+
1358
+ # slow way since $y too big
1359
+ if (scalar @$yo > 1)
1360
+ {
1361
+ my ($xo,$rem) = _div($c,$x,$yo);
1362
+ @$x = @$rem;
1363
+ return $x;
1364
+ }
1365
+
1366
+ my $y = $yo->[0];
1367
+
1368
+ # if both are single element arrays
1369
+ if (scalar @$x == 1)
1370
+ {
1371
+ $x->[0] %= $y;
1372
+ return $x;
1373
+ }
1374
+
1375
+ # if @$x has more than one element, but @$y is a single element
1376
+ my $b = $BASE % $y;
1377
+ if ($b == 0)
1378
+ {
1379
+ # when BASE % Y == 0 then (B * BASE) % Y == 0
1380
+ # (B * BASE) % $y + A % Y => A % Y
1381
+ # so need to consider only last element: O(1)
1382
+ $x->[0] %= $y;
1383
+ }
1384
+ elsif ($b == 1)
1385
+ {
1386
+ # else need to go through all elements in @$x: O(N), but loop is a bit
1387
+ # simplified
1388
+ my $r = 0;
1389
+ foreach (@$x)
1390
+ {
1391
+ $r = ($r + $_) % $y; # not much faster, but heh...
1392
+ #$r += $_ % $y; $r %= $y;
1393
+ }
1394
+ $r = 0 if $r == $y;
1395
+ $x->[0] = $r;
1396
+ }
1397
+ else
1398
+ {
1399
+ # else need to go through all elements in @$x: O(N)
1400
+ my $r = 0;
1401
+ my $bm = 1;
1402
+ foreach (@$x)
1403
+ {
1404
+ $r = ($_ * $bm + $r) % $y;
1405
+ $bm = ($bm * $b) % $y;
1406
+
1407
+ #$r += ($_ % $y) * $bm;
1408
+ #$bm *= $b;
1409
+ #$bm %= $y;
1410
+ #$r %= $y;
1411
+ }
1412
+ $r = 0 if $r == $y;
1413
+ $x->[0] = $r;
1414
+ }
1415
+ @$x = $x->[0]; # keep one element of @$x
1416
+ return $x;
1417
+ }
1418
+
1419
+ ##############################################################################
1420
+ # shifts
1421
+
1422
+ sub _rsft
1423
+ {
1424
+ my ($c,$x,$y,$n) = @_;
1425
+
1426
+ if ($n != 10)
1427
+ {
1428
+ $n = _new($c,$n); return _div($c,$x, _pow($c,$n,$y));
1429
+ }
1430
+
1431
+ # shortcut (faster) for shifting by 10)
1432
+ # multiples of $BASE_LEN
1433
+ my $dst = 0; # destination
1434
+ my $src = _num($c,$y); # as normal int
1435
+ my $xlen = (@$x-1)*$BASE_LEN+length(int($x->[-1])); # len of x in digits
1436
+ if ($src >= $xlen or ($src == $xlen and ! defined $x->[1]))
1437
+ {
1438
+ # 12345 67890 shifted right by more than 10 digits => 0
1439
+ splice (@$x,1); # leave only one element
1440
+ $x->[0] = 0; # set to zero
1441
+ return $x;
1442
+ }
1443
+ my $rem = $src % $BASE_LEN; # remainder to shift
1444
+ $src = int($src / $BASE_LEN); # source
1445
+ if ($rem == 0)
1446
+ {
1447
+ splice (@$x,0,$src); # even faster, 38.4 => 39.3
1448
+ }
1449
+ else
1450
+ {
1451
+ my $len = scalar @$x - $src; # elems to go
1452
+ my $vd; my $z = '0'x $BASE_LEN;
1453
+ $x->[scalar @$x] = 0; # avoid || 0 test inside loop
1454
+ while ($dst < $len)
1455
+ {
1456
+ $vd = $z.$x->[$src];
1457
+ $vd = substr($vd,-$BASE_LEN,$BASE_LEN-$rem);
1458
+ $src++;
1459
+ $vd = substr($z.$x->[$src],-$rem,$rem) . $vd;
1460
+ $vd = substr($vd,-$BASE_LEN,$BASE_LEN) if length($vd) > $BASE_LEN;
1461
+ $x->[$dst] = int($vd);
1462
+ $dst++;
1463
+ }
1464
+ splice (@$x,$dst) if $dst > 0; # kill left-over array elems
1465
+ pop @$x if $x->[-1] == 0 && @$x > 1; # kill last element if 0
1466
+ } # else rem == 0
1467
+ $x;
1468
+ }
1469
+
1470
+ sub _lsft
1471
+ {
1472
+ my ($c,$x,$y,$n) = @_;
1473
+
1474
+ if ($n != 10)
1475
+ {
1476
+ $n = _new($c,$n); return _mul($c,$x, _pow($c,$n,$y));
1477
+ }
1478
+
1479
+ # shortcut (faster) for shifting by 10) since we are in base 10eX
1480
+ # multiples of $BASE_LEN:
1481
+ my $src = scalar @$x; # source
1482
+ my $len = _num($c,$y); # shift-len as normal int
1483
+ my $rem = $len % $BASE_LEN; # remainder to shift
1484
+ my $dst = $src + int($len/$BASE_LEN); # destination
1485
+ my $vd; # further speedup
1486
+ $x->[$src] = 0; # avoid first ||0 for speed
1487
+ my $z = '0' x $BASE_LEN;
1488
+ while ($src >= 0)
1489
+ {
1490
+ $vd = $x->[$src]; $vd = $z.$vd;
1491
+ $vd = substr($vd,-$BASE_LEN+$rem,$BASE_LEN-$rem);
1492
+ $vd .= $src > 0 ? substr($z.$x->[$src-1],-$BASE_LEN,$rem) : '0' x $rem;
1493
+ $vd = substr($vd,-$BASE_LEN,$BASE_LEN) if length($vd) > $BASE_LEN;
1494
+ $x->[$dst] = int($vd);
1495
+ $dst--; $src--;
1496
+ }
1497
+ # set lowest parts to 0
1498
+ while ($dst >= 0) { $x->[$dst--] = 0; }
1499
+ # fix spurious last zero element
1500
+ splice @$x,-1 if $x->[-1] == 0;
1501
+ $x;
1502
+ }
1503
+
1504
+ sub _pow
1505
+ {
1506
+ # power of $x to $y
1507
+ # ref to array, ref to array, return ref to array
1508
+ my ($c,$cx,$cy) = @_;
1509
+
1510
+ if (scalar @$cy == 1 && $cy->[0] == 0)
1511
+ {
1512
+ splice (@$cx,1); $cx->[0] = 1; # y == 0 => x => 1
1513
+ return $cx;
1514
+ }
1515
+ if ((scalar @$cx == 1 && $cx->[0] == 1) || # x == 1
1516
+ (scalar @$cy == 1 && $cy->[0] == 1)) # or y == 1
1517
+ {
1518
+ return $cx;
1519
+ }
1520
+ if (scalar @$cx == 1 && $cx->[0] == 0)
1521
+ {
1522
+ splice (@$cx,1); $cx->[0] = 0; # 0 ** y => 0 (if not y <= 0)
1523
+ return $cx;
1524
+ }
1525
+
1526
+ my $pow2 = _one();
1527
+
1528
+ my $y_bin = _as_bin($c,$cy); $y_bin =~ s/^0b//;
1529
+ my $len = length($y_bin);
1530
+ while (--$len > 0)
1531
+ {
1532
+ _mul($c,$pow2,$cx) if substr($y_bin,$len,1) eq '1'; # is odd?
1533
+ _mul($c,$cx,$cx);
1534
+ }
1535
+
1536
+ _mul($c,$cx,$pow2);
1537
+ $cx;
1538
+ }
1539
+
1540
+ sub _nok {
1541
+ # Return binomial coefficient (n over k).
1542
+ # Given refs to arrays, return ref to array.
1543
+ # First input argument is modified.
1544
+
1545
+ my ($c, $n, $k) = @_;
1546
+
1547
+ # If k > n/2, or, equivalently, 2*k > n, compute nok(n, k) as
1548
+ # nok(n, n-k), to minimize the number if iterations in the loop.
1549
+
1550
+ {
1551
+ my $twok = _mul($c, _two($c), _copy($c, $k)); # 2 * k
1552
+ if (_acmp($c, $twok, $n) > 0) { # if 2*k > n
1553
+ $k = _sub($c, _copy($c, $n), $k); # k = n - k
1554
+ }
1555
+ }
1556
+
1557
+ # Example:
1558
+ #
1559
+ # / 7 \ 7! 1*2*3*4 * 5*6*7 5 * 6 * 7 6 7
1560
+ # | | = --------- = --------------- = --------- = 5 * - * -
1561
+ # \ 3 / (7-3)! 3! 1*2*3*4 * 1*2*3 1 * 2 * 3 2 3
1562
+
1563
+ if (_is_zero($c, $k)) {
1564
+ @$n = 1;
1565
+ }
1566
+
1567
+ else {
1568
+
1569
+ # Make a copy of the original n, since we'll be modifing n in-place.
1570
+
1571
+ my $n_orig = _copy($c, $n);
1572
+
1573
+ # n = 5, f = 6, d = 2 (cf. example above)
1574
+
1575
+ _sub($c, $n, $k);
1576
+ _inc($c, $n);
1577
+
1578
+ my $f = _copy($c, $n);
1579
+ _inc($c, $f);
1580
+
1581
+ my $d = _two($c);
1582
+
1583
+ # while f <= n (the original n, that is) ...
1584
+
1585
+ while (_acmp($c, $f, $n_orig) <= 0) {
1586
+
1587
+ # n = (n * f / d) == 5 * 6 / 2 (cf. example above)
1588
+
1589
+ _mul($c, $n, $f);
1590
+ _div($c, $n, $d);
1591
+
1592
+ # f = 7, d = 3 (cf. example above)
1593
+
1594
+ _inc($c, $f);
1595
+ _inc($c, $d);
1596
+ }
1597
+
1598
+ }
1599
+
1600
+ return $n;
1601
+ }
1602
+
1603
+ my @factorials = (
1604
+ 1,
1605
+ 1,
1606
+ 2,
1607
+ 2*3,
1608
+ 2*3*4,
1609
+ 2*3*4*5,
1610
+ 2*3*4*5*6,
1611
+ 2*3*4*5*6*7,
1612
+ );
1613
+
1614
+ sub _fac
1615
+ {
1616
+ # factorial of $x
1617
+ # ref to array, return ref to array
1618
+ my ($c,$cx) = @_;
1619
+
1620
+ if ((@$cx == 1) && ($cx->[0] <= 7))
1621
+ {
1622
+ $cx->[0] = $factorials[$cx->[0]]; # 0 => 1, 1 => 1, 2 => 2 etc.
1623
+ return $cx;
1624
+ }
1625
+
1626
+ if ((@$cx == 1) && # we do this only if $x >= 12 and $x <= 7000
1627
+ ($cx->[0] >= 12 && $cx->[0] < 7000))
1628
+ {
1629
+
1630
+ # Calculate (k-j) * (k-j+1) ... k .. (k+j-1) * (k + j)
1631
+ # See http://blogten.blogspot.com/2007/01/calculating-n.html
1632
+ # The above series can be expressed as factors:
1633
+ # k * k - (j - i) * 2
1634
+ # We cache k*k, and calculate (j * j) as the sum of the first j odd integers
1635
+
1636
+ # This will not work when N exceeds the storage of a Perl scalar, however,
1637
+ # in this case the algorithm would be way to slow to terminate, anyway.
1638
+
1639
+ # As soon as the last element of $cx is 0, we split it up and remember
1640
+ # how many zeors we got so far. The reason is that n! will accumulate
1641
+ # zeros at the end rather fast.
1642
+ my $zero_elements = 0;
1643
+
1644
+ # If n is even, set n = n -1
1645
+ my $k = _num($c,$cx); my $even = 1;
1646
+ if (($k & 1) == 0)
1647
+ {
1648
+ $even = $k; $k --;
1649
+ }
1650
+ # set k to the center point
1651
+ $k = ($k + 1) / 2;
1652
+ # print "k $k even: $even\n";
1653
+ # now calculate k * k
1654
+ my $k2 = $k * $k;
1655
+ my $odd = 1; my $sum = 1;
1656
+ my $i = $k - 1;
1657
+ # keep reference to x
1658
+ my $new_x = _new($c, $k * $even);
1659
+ @$cx = @$new_x;
1660
+ if ($cx->[0] == 0)
1661
+ {
1662
+ $zero_elements ++; shift @$cx;
1663
+ }
1664
+ # print STDERR "x = ", _str($c,$cx),"\n";
1665
+ my $BASE2 = int(sqrt($BASE))-1;
1666
+ my $j = 1;
1667
+ while ($j <= $i)
1668
+ {
1669
+ my $m = ($k2 - $sum); $odd += 2; $sum += $odd; $j++;
1670
+ while ($j <= $i && ($m < $BASE2) && (($k2 - $sum) < $BASE2))
1671
+ {
1672
+ $m *= ($k2 - $sum);
1673
+ $odd += 2; $sum += $odd; $j++;
1674
+ # print STDERR "\n k2 $k2 m $m sum $sum odd $odd\n"; sleep(1);
1675
+ }
1676
+ if ($m < $BASE)
1677
+ {
1678
+ _mul($c,$cx,[$m]);
1679
+ }
1680
+ else
1681
+ {
1682
+ _mul($c,$cx,$c->_new($m));
1683
+ }
1684
+ if ($cx->[0] == 0)
1685
+ {
1686
+ $zero_elements ++; shift @$cx;
1687
+ }
1688
+ # print STDERR "Calculate $k2 - $sum = $m (x = ", _str($c,$cx),")\n";
1689
+ }
1690
+ # multiply in the zeros again
1691
+ unshift @$cx, (0) x $zero_elements;
1692
+ return $cx;
1693
+ }
1694
+
1695
+ # go forward until $base is exceeded
1696
+ # limit is either $x steps (steps == 100 means a result always too high) or
1697
+ # $base.
1698
+ my $steps = 100; $steps = $cx->[0] if @$cx == 1;
1699
+ my $r = 2; my $cf = 3; my $step = 2; my $last = $r;
1700
+ while ($r*$cf < $BASE && $step < $steps)
1701
+ {
1702
+ $last = $r; $r *= $cf++; $step++;
1703
+ }
1704
+ if ((@$cx == 1) && $step == $cx->[0])
1705
+ {
1706
+ # completely done, so keep reference to $x and return
1707
+ $cx->[0] = $r;
1708
+ return $cx;
1709
+ }
1710
+
1711
+ # now we must do the left over steps
1712
+ my $n; # steps still to do
1713
+ if (scalar @$cx == 1)
1714
+ {
1715
+ $n = $cx->[0];
1716
+ }
1717
+ else
1718
+ {
1719
+ $n = _copy($c,$cx);
1720
+ }
1721
+
1722
+ # Set $cx to the last result below $BASE (but keep ref to $x)
1723
+ $cx->[0] = $last; splice (@$cx,1);
1724
+ # As soon as the last element of $cx is 0, we split it up and remember
1725
+ # how many zeors we got so far. The reason is that n! will accumulate
1726
+ # zeros at the end rather fast.
1727
+ my $zero_elements = 0;
1728
+
1729
+ # do left-over steps fit into a scalar?
1730
+ if (ref $n eq 'ARRAY')
1731
+ {
1732
+ # No, so use slower inc() & cmp()
1733
+ # ($n is at least $BASE here)
1734
+ my $base_2 = int(sqrt($BASE)) - 1;
1735
+ #print STDERR "base_2: $base_2\n";
1736
+ while ($step < $base_2)
1737
+ {
1738
+ if ($cx->[0] == 0)
1739
+ {
1740
+ $zero_elements ++; shift @$cx;
1741
+ }
1742
+ my $b = $step * ($step + 1); $step += 2;
1743
+ _mul($c,$cx,[$b]);
1744
+ }
1745
+ $step = [$step];
1746
+ while (_acmp($c,$step,$n) <= 0)
1747
+ {
1748
+ if ($cx->[0] == 0)
1749
+ {
1750
+ $zero_elements ++; shift @$cx;
1751
+ }
1752
+ _mul($c,$cx,$step); _inc($c,$step);
1753
+ }
1754
+ }
1755
+ else
1756
+ {
1757
+ # Yes, so we can speed it up slightly
1758
+
1759
+ # print "# left over steps $n\n";
1760
+
1761
+ my $base_4 = int(sqrt(sqrt($BASE))) - 2;
1762
+ #print STDERR "base_4: $base_4\n";
1763
+ my $n4 = $n - 4;
1764
+ while ($step < $n4 && $step < $base_4)
1765
+ {
1766
+ if ($cx->[0] == 0)
1767
+ {
1768
+ $zero_elements ++; shift @$cx;
1769
+ }
1770
+ my $b = $step * ($step + 1); $step += 2; $b *= $step * ($step + 1); $step += 2;
1771
+ _mul($c,$cx,[$b]);
1772
+ }
1773
+ my $base_2 = int(sqrt($BASE)) - 1;
1774
+ my $n2 = $n - 2;
1775
+ #print STDERR "base_2: $base_2\n";
1776
+ while ($step < $n2 && $step < $base_2)
1777
+ {
1778
+ if ($cx->[0] == 0)
1779
+ {
1780
+ $zero_elements ++; shift @$cx;
1781
+ }
1782
+ my $b = $step * ($step + 1); $step += 2;
1783
+ _mul($c,$cx,[$b]);
1784
+ }
1785
+ # do what's left over
1786
+ while ($step <= $n)
1787
+ {
1788
+ _mul($c,$cx,[$step]); $step++;
1789
+ if ($cx->[0] == 0)
1790
+ {
1791
+ $zero_elements ++; shift @$cx;
1792
+ }
1793
+ }
1794
+ }
1795
+ # multiply in the zeros again
1796
+ unshift @$cx, (0) x $zero_elements;
1797
+ $cx; # return result
1798
+ }
1799
+
1800
+ #############################################################################
1801
+
1802
+ sub _log_int
1803
+ {
1804
+ # calculate integer log of $x to base $base
1805
+ # ref to array, ref to array - return ref to array
1806
+ my ($c,$x,$base) = @_;
1807
+
1808
+ # X == 0 => NaN
1809
+ return if (scalar @$x == 1 && $x->[0] == 0);
1810
+ # BASE 0 or 1 => NaN
1811
+ return if (scalar @$base == 1 && $base->[0] < 2);
1812
+ my $cmp = _acmp($c,$x,$base); # X == BASE => 1
1813
+ if ($cmp == 0)
1814
+ {
1815
+ splice (@$x,1); $x->[0] = 1;
1816
+ return ($x,1)
1817
+ }
1818
+ # X < BASE
1819
+ if ($cmp < 0)
1820
+ {
1821
+ splice (@$x,1); $x->[0] = 0;
1822
+ return ($x,undef);
1823
+ }
1824
+
1825
+ my $x_org = _copy($c,$x); # preserve x
1826
+ splice(@$x,1); $x->[0] = 1; # keep ref to $x
1827
+
1828
+ # Compute a guess for the result based on:
1829
+ # $guess = int ( length_in_base_10(X) / ( log(base) / log(10) ) )
1830
+ my $len = _len($c,$x_org);
1831
+ my $log = log($base->[-1]) / log(10);
1832
+
1833
+ # for each additional element in $base, we add $BASE_LEN to the result,
1834
+ # based on the observation that log($BASE,10) is BASE_LEN and
1835
+ # log(x*y) == log(x) + log(y):
1836
+ $log += ((scalar @$base)-1) * $BASE_LEN;
1837
+
1838
+ # calculate now a guess based on the values obtained above:
1839
+ my $res = int($len / $log);
1840
+
1841
+ $x->[0] = $res;
1842
+ my $trial = _pow ($c, _copy($c, $base), $x);
1843
+ my $a = _acmp($c,$trial,$x_org);
1844
+
1845
+ # print STDERR "# trial ", _str($c,$x)," was: $a (0 = exact, -1 too small, +1 too big)\n";
1846
+
1847
+ # found an exact result?
1848
+ return ($x,1) if $a == 0;
1849
+
1850
+ if ($a > 0)
1851
+ {
1852
+ # or too big
1853
+ _div($c,$trial,$base); _dec($c, $x);
1854
+ while (($a = _acmp($c,$trial,$x_org)) > 0)
1855
+ {
1856
+ # print STDERR "# big _log_int at ", _str($c,$x), "\n";
1857
+ _div($c,$trial,$base); _dec($c, $x);
1858
+ }
1859
+ # result is now exact (a == 0), or too small (a < 0)
1860
+ return ($x, $a == 0 ? 1 : 0);
1861
+ }
1862
+
1863
+ # else: result was to small
1864
+ _mul($c,$trial,$base);
1865
+
1866
+ # did we now get the right result?
1867
+ $a = _acmp($c,$trial,$x_org);
1868
+
1869
+ if ($a == 0) # yes, exactly
1870
+ {
1871
+ _inc($c, $x);
1872
+ return ($x,1);
1873
+ }
1874
+ return ($x,0) if $a > 0;
1875
+
1876
+ # Result still too small (we should come here only if the estimate above
1877
+ # was very off base):
1878
+
1879
+ # Now let the normal trial run obtain the real result
1880
+ # Simple loop that increments $x by 2 in each step, possible overstepping
1881
+ # the real result
1882
+
1883
+ my $base_mul = _mul($c, _copy($c,$base), $base); # $base * $base
1884
+
1885
+ while (($a = _acmp($c,$trial,$x_org)) < 0)
1886
+ {
1887
+ # print STDERR "# small _log_int at ", _str($c,$x), "\n";
1888
+ _mul($c,$trial,$base_mul); _add($c, $x, [2]);
1889
+ }
1890
+
1891
+ my $exact = 1;
1892
+ if ($a > 0)
1893
+ {
1894
+ # overstepped the result
1895
+ _dec($c, $x);
1896
+ _div($c,$trial,$base);
1897
+ $a = _acmp($c,$trial,$x_org);
1898
+ if ($a > 0)
1899
+ {
1900
+ _dec($c, $x);
1901
+ }
1902
+ $exact = 0 if $a != 0; # a = -1 => not exact result, a = 0 => exact
1903
+ }
1904
+
1905
+ ($x,$exact); # return result
1906
+ }
1907
+
1908
+ # for debugging:
1909
+ use constant DEBUG => 0;
1910
+ my $steps = 0;
1911
+ sub steps { $steps };
1912
+
1913
+ sub _sqrt
1914
+ {
1915
+ # square-root of $x in place
1916
+ # Compute a guess of the result (by rule of thumb), then improve it via
1917
+ # Newton's method.
1918
+ my ($c,$x) = @_;
1919
+
1920
+ if (scalar @$x == 1)
1921
+ {
1922
+ # fits into one Perl scalar, so result can be computed directly
1923
+ $x->[0] = int(sqrt($x->[0]));
1924
+ return $x;
1925
+ }
1926
+ my $y = _copy($c,$x);
1927
+ # hopefully _len/2 is < $BASE, the -1 is to always undershot the guess
1928
+ # since our guess will "grow"
1929
+ my $l = int((_len($c,$x)-1) / 2);
1930
+
1931
+ my $lastelem = $x->[-1]; # for guess
1932
+ my $elems = scalar @$x - 1;
1933
+ # not enough digits, but could have more?
1934
+ if ((length($lastelem) <= 3) && ($elems > 1))
1935
+ {
1936
+ # right-align with zero pad
1937
+ my $len = length($lastelem) & 1;
1938
+ print "$lastelem => " if DEBUG;
1939
+ $lastelem .= substr($x->[-2] . '0' x $BASE_LEN,0,$BASE_LEN);
1940
+ # former odd => make odd again, or former even to even again
1941
+ $lastelem = $lastelem / 10 if (length($lastelem) & 1) != $len;
1942
+ print "$lastelem\n" if DEBUG;
1943
+ }
1944
+
1945
+ # construct $x (instead of _lsft($c,$x,$l,10)
1946
+ my $r = $l % $BASE_LEN; # 10000 00000 00000 00000 ($BASE_LEN=5)
1947
+ $l = int($l / $BASE_LEN);
1948
+ print "l = $l " if DEBUG;
1949
+
1950
+ splice @$x,$l; # keep ref($x), but modify it
1951
+
1952
+ # we make the first part of the guess not '1000...0' but int(sqrt($lastelem))
1953
+ # that gives us:
1954
+ # 14400 00000 => sqrt(14400) => guess first digits to be 120
1955
+ # 144000 000000 => sqrt(144000) => guess 379
1956
+
1957
+ print "$lastelem (elems $elems) => " if DEBUG;
1958
+ $lastelem = $lastelem / 10 if ($elems & 1 == 1); # odd or even?
1959
+ my $g = sqrt($lastelem); $g =~ s/\.//; # 2.345 => 2345
1960
+ $r -= 1 if $elems & 1 == 0; # 70 => 7
1961
+
1962
+ # padd with zeros if result is too short
1963
+ $x->[$l--] = int(substr($g . '0' x $r,0,$r+1));
1964
+ print "now ",$x->[-1] if DEBUG;
1965
+ print " would have been ", int('1' . '0' x $r),"\n" if DEBUG;
1966
+
1967
+ # If @$x > 1, we could compute the second elem of the guess, too, to create
1968
+ # an even better guess. Not implemented yet. Does it improve performance?
1969
+ $x->[$l--] = 0 while ($l >= 0); # all other digits of guess are zero
1970
+
1971
+ print "start x= ",_str($c,$x),"\n" if DEBUG;
1972
+ my $two = _two();
1973
+ my $last = _zero();
1974
+ my $lastlast = _zero();
1975
+ $steps = 0 if DEBUG;
1976
+ while (_acmp($c,$last,$x) != 0 && _acmp($c,$lastlast,$x) != 0)
1977
+ {
1978
+ $steps++ if DEBUG;
1979
+ $lastlast = _copy($c,$last);
1980
+ $last = _copy($c,$x);
1981
+ _add($c,$x, _div($c,_copy($c,$y),$x));
1982
+ _div($c,$x, $two );
1983
+ print " x= ",_str($c,$x),"\n" if DEBUG;
1984
+ }
1985
+ print "\nsteps in sqrt: $steps, " if DEBUG;
1986
+ _dec($c,$x) if _acmp($c,$y,_mul($c,_copy($c,$x),$x)) < 0; # overshot?
1987
+ print " final ",$x->[-1],"\n" if DEBUG;
1988
+ $x;
1989
+ }
1990
+
1991
+ sub _root
1992
+ {
1993
+ # take n'th root of $x in place (n >= 3)
1994
+ my ($c,$x,$n) = @_;
1995
+
1996
+ if (scalar @$x == 1)
1997
+ {
1998
+ if (scalar @$n > 1)
1999
+ {
2000
+ # result will always be smaller than 2 so trunc to 1 at once
2001
+ $x->[0] = 1;
2002
+ }
2003
+ else
2004
+ {
2005
+ # fits into one Perl scalar, so result can be computed directly
2006
+ # cannot use int() here, because it rounds wrongly (try
2007
+ # (81 ** 3) ** (1/3) to see what I mean)
2008
+ #$x->[0] = int( $x->[0] ** (1 / $n->[0]) );
2009
+ # round to 8 digits, then truncate result to integer
2010
+ $x->[0] = int ( sprintf ("%.8f", $x->[0] ** (1 / $n->[0]) ) );
2011
+ }
2012
+ return $x;
2013
+ }
2014
+
2015
+ # we know now that X is more than one element long
2016
+
2017
+ # if $n is a power of two, we can repeatedly take sqrt($X) and find the
2018
+ # proper result, because sqrt(sqrt($x)) == root($x,4)
2019
+ my $b = _as_bin($c,$n);
2020
+ if ($b =~ /0b1(0+)$/)
2021
+ {
2022
+ my $count = CORE::length($1); # 0b100 => len('00') => 2
2023
+ my $cnt = $count; # counter for loop
2024
+ unshift (@$x, 0); # add one element, together with one
2025
+ # more below in the loop this makes 2
2026
+ while ($cnt-- > 0)
2027
+ {
2028
+ # 'inflate' $X by adding one element, basically computing
2029
+ # $x * $BASE * $BASE. This gives us more $BASE_LEN digits for result
2030
+ # since len(sqrt($X)) approx == len($x) / 2.
2031
+ unshift (@$x, 0);
2032
+ # calculate sqrt($x), $x is now one element to big, again. In the next
2033
+ # round we make that two, again.
2034
+ _sqrt($c,$x);
2035
+ }
2036
+ # $x is now one element to big, so truncate result by removing it
2037
+ splice (@$x,0,1);
2038
+ }
2039
+ else
2040
+ {
2041
+ # trial computation by starting with 2,4,8,16 etc until we overstep
2042
+ my $step;
2043
+ my $trial = _two();
2044
+
2045
+ # while still to do more than X steps
2046
+ do
2047
+ {
2048
+ $step = _two();
2049
+ while (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) < 0)
2050
+ {
2051
+ _mul ($c, $step, [2]);
2052
+ _add ($c, $trial, $step);
2053
+ }
2054
+
2055
+ # hit exactly?
2056
+ if (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) == 0)
2057
+ {
2058
+ @$x = @$trial; # make copy while preserving ref to $x
2059
+ return $x;
2060
+ }
2061
+ # overstepped, so go back on step
2062
+ _sub($c, $trial, $step);
2063
+ } while (scalar @$step > 1 || $step->[0] > 128);
2064
+
2065
+ # reset step to 2
2066
+ $step = _two();
2067
+ # add two, because $trial cannot be exactly the result (otherwise we would
2068
+ # already have found it)
2069
+ _add($c, $trial, $step);
2070
+
2071
+ # and now add more and more (2,4,6,8,10 etc)
2072
+ while (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) < 0)
2073
+ {
2074
+ _add ($c, $trial, $step);
2075
+ }
2076
+
2077
+ # hit not exactly? (overstepped)
2078
+ if (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) > 0)
2079
+ {
2080
+ _dec($c,$trial);
2081
+ }
2082
+
2083
+ # hit not exactly? (overstepped)
2084
+ # 80 too small, 81 slightly too big, 82 too big
2085
+ if (_acmp($c, _pow($c, _copy($c, $trial), $n), $x) > 0)
2086
+ {
2087
+ _dec ($c, $trial);
2088
+ }
2089
+
2090
+ @$x = @$trial; # make copy while preserving ref to $x
2091
+ return $x;
2092
+ }
2093
+ $x;
2094
+ }
2095
+
2096
+ ##############################################################################
2097
+ # binary stuff
2098
+
2099
+ sub _and
2100
+ {
2101
+ my ($c,$x,$y) = @_;
2102
+
2103
+ # the shortcut makes equal, large numbers _really_ fast, and makes only a
2104
+ # very small performance drop for small numbers (e.g. something with less
2105
+ # than 32 bit) Since we optimize for large numbers, this is enabled.
2106
+ return $x if _acmp($c,$x,$y) == 0; # shortcut
2107
+
2108
+ my $m = _one(); my ($xr,$yr);
2109
+ my $mask = $AND_MASK;
2110
+
2111
+ my $x1 = $x;
2112
+ my $y1 = _copy($c,$y); # make copy
2113
+ $x = _zero();
2114
+ my ($b,$xrr,$yrr);
2115
+ use integer;
2116
+ while (!_is_zero($c,$x1) && !_is_zero($c,$y1))
2117
+ {
2118
+ ($x1, $xr) = _div($c,$x1,$mask);
2119
+ ($y1, $yr) = _div($c,$y1,$mask);
2120
+
2121
+ # make ints() from $xr, $yr
2122
+ # this is when the AND_BITS are greater than $BASE and is slower for
2123
+ # small (<256 bits) numbers, but faster for large numbers. Disabled
2124
+ # due to KISS principle
2125
+
2126
+ # $b = 1; $xrr = 0; foreach (@$xr) { $xrr += $_ * $b; $b *= $BASE; }
2127
+ # $b = 1; $yrr = 0; foreach (@$yr) { $yrr += $_ * $b; $b *= $BASE; }
2128
+ # _add($c,$x, _mul($c, _new( $c, ($xrr & $yrr) ), $m) );
2129
+
2130
+ # 0+ due to '&' doesn't work in strings
2131
+ _add($c,$x, _mul($c, [ 0+$xr->[0] & 0+$yr->[0] ], $m) );
2132
+ _mul($c,$m,$mask);
2133
+ }
2134
+ $x;
2135
+ }
2136
+
2137
+ sub _xor
2138
+ {
2139
+ my ($c,$x,$y) = @_;
2140
+
2141
+ return _zero() if _acmp($c,$x,$y) == 0; # shortcut (see -and)
2142
+
2143
+ my $m = _one(); my ($xr,$yr);
2144
+ my $mask = $XOR_MASK;
2145
+
2146
+ my $x1 = $x;
2147
+ my $y1 = _copy($c,$y); # make copy
2148
+ $x = _zero();
2149
+ my ($b,$xrr,$yrr);
2150
+ use integer;
2151
+ while (!_is_zero($c,$x1) && !_is_zero($c,$y1))
2152
+ {
2153
+ ($x1, $xr) = _div($c,$x1,$mask);
2154
+ ($y1, $yr) = _div($c,$y1,$mask);
2155
+ # make ints() from $xr, $yr (see _and())
2156
+ #$b = 1; $xrr = 0; foreach (@$xr) { $xrr += $_ * $b; $b *= $BASE; }
2157
+ #$b = 1; $yrr = 0; foreach (@$yr) { $yrr += $_ * $b; $b *= $BASE; }
2158
+ #_add($c,$x, _mul($c, _new( $c, ($xrr ^ $yrr) ), $m) );
2159
+
2160
+ # 0+ due to '^' doesn't work in strings
2161
+ _add($c,$x, _mul($c, [ 0+$xr->[0] ^ 0+$yr->[0] ], $m) );
2162
+ _mul($c,$m,$mask);
2163
+ }
2164
+ # the loop stops when the shorter of the two numbers is exhausted
2165
+ # the remainder of the longer one will survive bit-by-bit, so we simple
2166
+ # multiply-add it in
2167
+ _add($c,$x, _mul($c, $x1, $m) ) if !_is_zero($c,$x1);
2168
+ _add($c,$x, _mul($c, $y1, $m) ) if !_is_zero($c,$y1);
2169
+
2170
+ $x;
2171
+ }
2172
+
2173
+ sub _or
2174
+ {
2175
+ my ($c,$x,$y) = @_;
2176
+
2177
+ return $x if _acmp($c,$x,$y) == 0; # shortcut (see _and)
2178
+
2179
+ my $m = _one(); my ($xr,$yr);
2180
+ my $mask = $OR_MASK;
2181
+
2182
+ my $x1 = $x;
2183
+ my $y1 = _copy($c,$y); # make copy
2184
+ $x = _zero();
2185
+ my ($b,$xrr,$yrr);
2186
+ use integer;
2187
+ while (!_is_zero($c,$x1) && !_is_zero($c,$y1))
2188
+ {
2189
+ ($x1, $xr) = _div($c,$x1,$mask);
2190
+ ($y1, $yr) = _div($c,$y1,$mask);
2191
+ # make ints() from $xr, $yr (see _and())
2192
+ # $b = 1; $xrr = 0; foreach (@$xr) { $xrr += $_ * $b; $b *= $BASE; }
2193
+ # $b = 1; $yrr = 0; foreach (@$yr) { $yrr += $_ * $b; $b *= $BASE; }
2194
+ # _add($c,$x, _mul($c, _new( $c, ($xrr | $yrr) ), $m) );
2195
+
2196
+ # 0+ due to '|' doesn't work in strings
2197
+ _add($c,$x, _mul($c, [ 0+$xr->[0] | 0+$yr->[0] ], $m) );
2198
+ _mul($c,$m,$mask);
2199
+ }
2200
+ # the loop stops when the shorter of the two numbers is exhausted
2201
+ # the remainder of the longer one will survive bit-by-bit, so we simple
2202
+ # multiply-add it in
2203
+ _add($c,$x, _mul($c, $x1, $m) ) if !_is_zero($c,$x1);
2204
+ _add($c,$x, _mul($c, $y1, $m) ) if !_is_zero($c,$y1);
2205
+
2206
+ $x;
2207
+ }
2208
+
2209
+ sub _as_hex
2210
+ {
2211
+ # convert a decimal number to hex (ref to array, return ref to string)
2212
+ my ($c,$x) = @_;
2213
+
2214
+ # fits into one element (handle also 0x0 case)
2215
+ return sprintf("0x%x",$x->[0]) if @$x == 1;
2216
+
2217
+ my $x1 = _copy($c,$x);
2218
+
2219
+ my $es = '';
2220
+ my ($xr, $h, $x10000);
2221
+ if ($] >= 5.006)
2222
+ {
2223
+ $x10000 = [ 0x10000 ]; $h = 'h4';
2224
+ }
2225
+ else
2226
+ {
2227
+ $x10000 = [ 0x1000 ]; $h = 'h3';
2228
+ }
2229
+ while (@$x1 != 1 || $x1->[0] != 0) # _is_zero()
2230
+ {
2231
+ ($x1, $xr) = _div($c,$x1,$x10000);
2232
+ $es .= unpack($h,pack('V',$xr->[0]));
2233
+ }
2234
+ $es = reverse $es;
2235
+ $es =~ s/^[0]+//; # strip leading zeros
2236
+ '0x' . $es; # return result prepended with 0x
2237
+ }
2238
+
2239
+ sub _as_bin
2240
+ {
2241
+ # convert a decimal number to bin (ref to array, return ref to string)
2242
+ my ($c,$x) = @_;
2243
+
2244
+ # fits into one element (and Perl recent enough), handle also 0b0 case
2245
+ # handle zero case for older Perls
2246
+ if ($] <= 5.005 && @$x == 1 && $x->[0] == 0)
2247
+ {
2248
+ my $t = '0b0'; return $t;
2249
+ }
2250
+ if (@$x == 1 && $] >= 5.006)
2251
+ {
2252
+ my $t = sprintf("0b%b",$x->[0]);
2253
+ return $t;
2254
+ }
2255
+ my $x1 = _copy($c,$x);
2256
+
2257
+ my $es = '';
2258
+ my ($xr, $b, $x10000);
2259
+ if ($] >= 5.006)
2260
+ {
2261
+ $x10000 = [ 0x10000 ]; $b = 'b16';
2262
+ }
2263
+ else
2264
+ {
2265
+ $x10000 = [ 0x1000 ]; $b = 'b12';
2266
+ }
2267
+ while (!(@$x1 == 1 && $x1->[0] == 0)) # _is_zero()
2268
+ {
2269
+ ($x1, $xr) = _div($c,$x1,$x10000);
2270
+ $es .= unpack($b,pack('v',$xr->[0]));
2271
+ }
2272
+ $es = reverse $es;
2273
+ $es =~ s/^[0]+//; # strip leading zeros
2274
+ '0b' . $es; # return result prepended with 0b
2275
+ }
2276
+
2277
+ sub _as_oct
2278
+ {
2279
+ # convert a decimal number to octal (ref to array, return ref to string)
2280
+ my ($c,$x) = @_;
2281
+
2282
+ # fits into one element (handle also 0 case)
2283
+ return sprintf("0%o",$x->[0]) if @$x == 1;
2284
+
2285
+ my $x1 = _copy($c,$x);
2286
+
2287
+ my $es = '';
2288
+ my $xr;
2289
+ my $x1000 = [ 0100000 ];
2290
+ while (@$x1 != 1 || $x1->[0] != 0) # _is_zero()
2291
+ {
2292
+ ($x1, $xr) = _div($c,$x1,$x1000);
2293
+ $es .= reverse sprintf("%05o", $xr->[0]);
2294
+ }
2295
+ $es = reverse $es;
2296
+ $es =~ s/^[0]+//; # strip leading zeros
2297
+ '0' . $es; # return result prepended with 0
2298
+ }
2299
+
2300
+ sub _from_oct
2301
+ {
2302
+ # convert a octal number to decimal (string, return ref to array)
2303
+ my ($c,$os) = @_;
2304
+
2305
+ # for older Perls, play safe
2306
+ my $m = [ 0100000 ];
2307
+ my $d = 5; # 5 digits at a time
2308
+
2309
+ my $mul = _one();
2310
+ my $x = _zero();
2311
+
2312
+ my $len = int( (length($os)-1)/$d ); # $d digit parts, w/o the '0'
2313
+ my $val; my $i = -$d;
2314
+ while ($len >= 0)
2315
+ {
2316
+ $val = substr($os,$i,$d); # get oct digits
2317
+ $val = CORE::oct($val);
2318
+ $i -= $d; $len --;
2319
+ my $adder = [ $val ];
2320
+ _add ($c, $x, _mul ($c, $adder, $mul ) ) if $val != 0;
2321
+ _mul ($c, $mul, $m ) if $len >= 0; # skip last mul
2322
+ }
2323
+ $x;
2324
+ }
2325
+
2326
+ sub _from_hex
2327
+ {
2328
+ # convert a hex number to decimal (string, return ref to array)
2329
+ my ($c,$hs) = @_;
2330
+
2331
+ my $m = _new($c, 0x10000000); # 28 bit at a time (<32 bit!)
2332
+ my $d = 7; # 7 digits at a time
2333
+ if ($] <= 5.006)
2334
+ {
2335
+ # for older Perls, play safe
2336
+ $m = [ 0x10000 ]; # 16 bit at a time (<32 bit!)
2337
+ $d = 4; # 4 digits at a time
2338
+ }
2339
+
2340
+ my $mul = _one();
2341
+ my $x = _zero();
2342
+
2343
+ my $len = int( (length($hs)-2)/$d ); # $d digit parts, w/o the '0x'
2344
+ my $val; my $i = -$d;
2345
+ while ($len >= 0)
2346
+ {
2347
+ $val = substr($hs,$i,$d); # get hex digits
2348
+ $val =~ s/^0x// if $len == 0; # for last part only because
2349
+ $val = CORE::hex($val); # hex does not like wrong chars
2350
+ $i -= $d; $len --;
2351
+ my $adder = [ $val ];
2352
+ # if the resulting number was to big to fit into one element, create a
2353
+ # two-element version (bug found by Mark Lakata - Thanx!)
2354
+ if (CORE::length($val) > $BASE_LEN)
2355
+ {
2356
+ $adder = _new($c,$val);
2357
+ }
2358
+ _add ($c, $x, _mul ($c, $adder, $mul ) ) if $val != 0;
2359
+ _mul ($c, $mul, $m ) if $len >= 0; # skip last mul
2360
+ }
2361
+ $x;
2362
+ }
2363
+
2364
+ sub _from_bin
2365
+ {
2366
+ # convert a hex number to decimal (string, return ref to array)
2367
+ my ($c,$bs) = @_;
2368
+
2369
+ # instead of converting X (8) bit at a time, it is faster to "convert" the
2370
+ # number to hex, and then call _from_hex.
2371
+
2372
+ my $hs = $bs;
2373
+ $hs =~ s/^[+-]?0b//; # remove sign and 0b
2374
+ my $l = length($hs); # bits
2375
+ $hs = '0' x (8-($l % 8)) . $hs if ($l % 8) != 0; # padd left side w/ 0
2376
+ my $h = '0x' . unpack('H*', pack ('B*', $hs)); # repack as hex
2377
+
2378
+ $c->_from_hex($h);
2379
+ }
2380
+
2381
+ ##############################################################################
2382
+ # special modulus functions
2383
+
2384
+ sub _modinv
2385
+ {
2386
+ # modular multiplicative inverse
2387
+ my ($c,$x,$y) = @_;
2388
+
2389
+ # modulo zero
2390
+ if (_is_zero($c, $y)) {
2391
+ return (undef, undef);
2392
+ }
2393
+
2394
+ # modulo one
2395
+ if (_is_one($c, $y)) {
2396
+ return (_zero($c), '+');
2397
+ }
2398
+
2399
+ my $u = _zero($c);
2400
+ my $v = _one($c);
2401
+ my $a = _copy($c,$y);
2402
+ my $b = _copy($c,$x);
2403
+
2404
+ # Euclid's Algorithm for bgcd(), only that we calc bgcd() ($a) and the result
2405
+ # ($u) at the same time. See comments in BigInt for why this works.
2406
+ my $q;
2407
+ my $sign = 1;
2408
+ {
2409
+ ($a, $q, $b) = ($b, _div($c, $a, $b)); # step 1
2410
+ last if _is_zero($c, $b);
2411
+
2412
+ my $t = _add($c, # step 2:
2413
+ _mul($c, _copy($c, $v), $q) , # t = v * q
2414
+ $u ); # + u
2415
+ $u = $v; # u = v
2416
+ $v = $t; # v = t
2417
+ $sign = -$sign;
2418
+ redo;
2419
+ }
2420
+
2421
+ # if the gcd is not 1, then return NaN
2422
+ return (undef, undef) unless _is_one($c, $a);
2423
+
2424
+ ($v, $sign == 1 ? '+' : '-');
2425
+ }
2426
+
2427
+ sub _modpow
2428
+ {
2429
+ # modulus of power ($x ** $y) % $z
2430
+ my ($c,$num,$exp,$mod) = @_;
2431
+
2432
+ # a^b (mod 1) = 0 for all a and b
2433
+ if (_is_one($c,$mod))
2434
+ {
2435
+ @$num = 0;
2436
+ return $num;
2437
+ }
2438
+
2439
+ # 0^a (mod m) = 0 if m != 0, a != 0
2440
+ # 0^0 (mod m) = 1 if m != 0
2441
+ if (_is_zero($c, $num)) {
2442
+ if (_is_zero($c, $exp)) {
2443
+ @$num = 1;
2444
+ } else {
2445
+ @$num = 0;
2446
+ }
2447
+ return $num;
2448
+ }
2449
+
2450
+ # $num = _mod($c,$num,$mod); # this does not make it faster
2451
+
2452
+ my $acc = _copy($c,$num); my $t = _one();
2453
+
2454
+ my $expbin = _as_bin($c,$exp); $expbin =~ s/^0b//;
2455
+ my $len = length($expbin);
2456
+ while (--$len >= 0)
2457
+ {
2458
+ if ( substr($expbin,$len,1) eq '1') # is_odd
2459
+ {
2460
+ _mul($c,$t,$acc);
2461
+ $t = _mod($c,$t,$mod);
2462
+ }
2463
+ _mul($c,$acc,$acc);
2464
+ $acc = _mod($c,$acc,$mod);
2465
+ }
2466
+ @$num = @$t;
2467
+ $num;
2468
+ }
2469
+
2470
+ sub _gcd {
2471
+ # Greatest common divisor.
2472
+
2473
+ my ($c, $x, $y) = @_;
2474
+
2475
+ # gcd(0,0) = 0
2476
+ # gcd(0,a) = a, if a != 0
2477
+
2478
+ if (@$x == 1 && $x->[0] == 0) {
2479
+ if (@$y == 1 && $y->[0] == 0) {
2480
+ @$x = 0;
2481
+ } else {
2482
+ @$x = @$y;
2483
+ }
2484
+ return $x;
2485
+ }
2486
+
2487
+ # Until $y is zero ...
2488
+
2489
+ until (@$y == 1 && $y->[0] == 0) {
2490
+
2491
+ # Compute remainder.
2492
+
2493
+ _mod($c, $x, $y);
2494
+
2495
+ # Swap $x and $y.
2496
+
2497
+ my $tmp = [ @$x ];
2498
+ @$x = @$y;
2499
+ $y = $tmp; # no deref here; that would modify input $y
2500
+ }
2501
+
2502
+ return $x;
2503
+ }
2504
+
2505
+ ##############################################################################
2506
+ ##############################################################################
2507
+
2508
+ 1;
2509
+ __END__
2510
+
2511
+ =pod
2512
+
2513
+ =head1 NAME
2514
+
2515
+ Math::BigInt::Calc - Pure Perl module to support Math::BigInt
2516
+
2517
+ =head1 SYNOPSIS
2518
+
2519
+ This library provides support for big integer calculations. It is not
2520
+ intended to be used by other modules. Other modules which support the same
2521
+ API (see below) can also be used to support Math::BigInt, like
2522
+ Math::BigInt::GMP and Math::BigInt::Pari.
2523
+
2524
+ =head1 DESCRIPTION
2525
+
2526
+ In this library, the numbers are represented in base B = 10**N, where N is
2527
+ the largest possible value that does not cause overflow in the intermediate
2528
+ computations. The base B elements are stored in an array, with the least
2529
+ significant element stored in array element zero. There are no leading zero
2530
+ elements, except a single zero element when the number is zero.
2531
+
2532
+ For instance, if B = 10000, the number 1234567890 is represented internally
2533
+ as [3456, 7890, 12].
2534
+
2535
+ =head1 THE Math::BigInt API
2536
+
2537
+ In order to allow for multiple big integer libraries, Math::BigInt was
2538
+ rewritten to use a plug-in library for core math routines. Any module which
2539
+ conforms to the API can be used by Math::BigInt by using this in your program:
2540
+
2541
+ use Math::BigInt lib => 'libname';
2542
+
2543
+ 'libname' is either the long name, like 'Math::BigInt::Pari', or only the short
2544
+ version, like 'Pari'.
2545
+
2546
+ =head2 General Notes
2547
+
2548
+ A library only needs to deal with unsigned big integers. Testing of input
2549
+ parameter validity is done by the caller, so there is no need to worry about
2550
+ underflow (e.g., in C<_sub()> and C<_dec()>) nor about division by zero (e.g.,
2551
+ in C<_div()>) or similar cases.
2552
+
2553
+ For some methods, the first parameter can be modified. That includes the
2554
+ possibility that you return a reference to a completely different object
2555
+ instead. Although keeping the reference and just changing its contents is
2556
+ preferred over creating and returning a different reference.
2557
+
2558
+ Return values are always objects, strings, Perl scalars, or true/false for
2559
+ comparison routines.
2560
+
2561
+ =head2 API version 1
2562
+
2563
+ The following methods must be defined in order to support the use by
2564
+ Math::BigInt v1.70 or later.
2565
+
2566
+ =head3 API version
2567
+
2568
+ =over 4
2569
+
2570
+ =item I<api_version()>
2571
+
2572
+ Return API version as a Perl scalar, 1 for Math::BigInt v1.70, 2 for
2573
+ Math::BigInt v1.83.
2574
+
2575
+ =back
2576
+
2577
+ =head3 Constructors
2578
+
2579
+ =over 4
2580
+
2581
+ =item I<_new(STR)>
2582
+
2583
+ Convert a string representing an unsigned decimal number to an object
2584
+ representing the same number. The input is normalize, i.e., it matches
2585
+ C<^(0|[1-9]\d*)$>.
2586
+
2587
+ =item I<_zero()>
2588
+
2589
+ Return an object representing the number zero.
2590
+
2591
+ =item I<_one()>
2592
+
2593
+ Return an object representing the number one.
2594
+
2595
+ =item I<_two()>
2596
+
2597
+ Return an object representing the number two.
2598
+
2599
+ =item I<_ten()>
2600
+
2601
+ Return an object representing the number ten.
2602
+
2603
+ =item I<_from_bin(STR)>
2604
+
2605
+ Return an object given a string representing a binary number. The input has a
2606
+ '0b' prefix and matches the regular expression C<^0[bB](0|1[01]*)$>.
2607
+
2608
+ =item I<_from_oct(STR)>
2609
+
2610
+ Return an object given a string representing an octal number. The input has a
2611
+ '0' prefix and matches the regular expression C<^0[1-7]*$>.
2612
+
2613
+ =item I<_from_hex(STR)>
2614
+
2615
+ Return an object given a string representing a hexadecimal number. The input
2616
+ has a '0x' prefix and matches the regular expression
2617
+ C<^0x(0|[1-9a-fA-F][\da-fA-F]*)$>.
2618
+
2619
+ =back
2620
+
2621
+ =head3 Mathematical functions
2622
+
2623
+ Each of these methods may modify the first input argument, except I<_bgcd()>,
2624
+ which shall not modify any input argument, and I<_sub()> which may modify the
2625
+ second input argument.
2626
+
2627
+ =over 4
2628
+
2629
+ =item I<_add(OBJ1, OBJ2)>
2630
+
2631
+ Returns the result of adding OBJ2 to OBJ1.
2632
+
2633
+ =item I<_mul(OBJ1, OBJ2)>
2634
+
2635
+ Returns the result of multiplying OBJ2 and OBJ1.
2636
+
2637
+ =item I<_div(OBJ1, OBJ2)>
2638
+
2639
+ Returns the result of dividing OBJ1 by OBJ2 and truncating the result to an
2640
+ integer.
2641
+
2642
+ =item I<_sub(OBJ1, OBJ2, FLAG)>
2643
+
2644
+ =item I<_sub(OBJ1, OBJ2)>
2645
+
2646
+ Returns the result of subtracting OBJ2 by OBJ1. If C<flag> is false or omitted,
2647
+ OBJ1 might be modified. If C<flag> is true, OBJ2 might be modified.
2648
+
2649
+ =item I<_dec(OBJ)>
2650
+
2651
+ Decrement OBJ by one.
2652
+
2653
+ =item I<_inc(OBJ)>
2654
+
2655
+ Increment OBJ by one.
2656
+
2657
+ =item I<_mod(OBJ1, OBJ2)>
2658
+
2659
+ Return OBJ1 modulo OBJ2, i.e., the remainder after dividing OBJ1 by OBJ2.
2660
+
2661
+ =item I<_sqrt(OBJ)>
2662
+
2663
+ Return the square root of the object, truncated to integer.
2664
+
2665
+ =item I<_root(OBJ, N)>
2666
+
2667
+ Return Nth root of the object, truncated to int. N is E<gt>= 3.
2668
+
2669
+ =item I<_fac(OBJ)>
2670
+
2671
+ Return factorial of object (1*2*3*4*...).
2672
+
2673
+ =item I<_pow(OBJ1, OBJ2)>
2674
+
2675
+ Return OBJ1 to the power of OBJ2. By convention, 0**0 = 1.
2676
+
2677
+ =item I<_modinv(OBJ1, OBJ2)>
2678
+
2679
+ Return modular multiplicative inverse, i.e., return OBJ3 so that
2680
+
2681
+ (OBJ3 * OBJ1) % OBJ2 = 1 % OBJ2
2682
+
2683
+ The result is returned as two arguments. If the modular multiplicative
2684
+ inverse does not exist, both arguments are undefined. Otherwise, the
2685
+ arguments are a number (object) and its sign ("+" or "-").
2686
+
2687
+ The output value, with its sign, must either be a positive value in the
2688
+ range 1,2,...,OBJ2-1 or the same value subtracted OBJ2. For instance, if the
2689
+ input arguments are objects representing the numbers 7 and 5, the method
2690
+ must either return an object representing the number 3 and a "+" sign, since
2691
+ (3*7) % 5 = 1 % 5, or an object representing the number 2 and "-" sign,
2692
+ since (-2*7) % 5 = 1 % 5.
2693
+
2694
+ =item I<_modpow(OBJ1, OBJ2, OBJ3)>
2695
+
2696
+ Return modular exponentiation, (OBJ1 ** OBJ2) % OBJ3.
2697
+
2698
+ =item I<_rsft(OBJ, N, B)>
2699
+
2700
+ Shift object N digits right in base B and return the resulting object. This is
2701
+ equivalent to performing integer division by B**N and discarding the remainder,
2702
+ except that it might be much faster, depending on how the number is represented
2703
+ internally.
2704
+
2705
+ For instance, if the object $obj represents the hexadecimal number 0xabcde,
2706
+ then C<_rsft($obj, 2, 16)> returns an object representing the number 0xabc. The
2707
+ "remainer", 0xde, is discarded and not returned.
2708
+
2709
+ =item I<_lsft(OBJ, N, B)>
2710
+
2711
+ Shift the object N digits left in base B. This is equivalent to multiplying by
2712
+ B**N, except that it might be much faster, depending on how the number is
2713
+ represented internally.
2714
+
2715
+ =item I<_log_int(OBJ, B)>
2716
+
2717
+ Return integer log of OBJ to base BASE. This method has two output arguments,
2718
+ the OBJECT and a STATUS. The STATUS is Perl scalar; it is 1 if OBJ is the exact
2719
+ result, 0 if the result was truncted to give OBJ, and undef if it is unknown
2720
+ whether OBJ is the exact result.
2721
+
2722
+ =item I<_gcd(OBJ1, OBJ2)>
2723
+
2724
+ Return the greatest common divisor of OBJ1 and OBJ2.
2725
+
2726
+ =back
2727
+
2728
+ =head3 Bitwise operators
2729
+
2730
+ Each of these methods may modify the first input argument.
2731
+
2732
+ =over 4
2733
+
2734
+ =item I<_and(OBJ1, OBJ2)>
2735
+
2736
+ Return bitwise and. If necessary, the smallest number is padded with leading
2737
+ zeros.
2738
+
2739
+ =item I<_or(OBJ1, OBJ2)>
2740
+
2741
+ Return bitwise or. If necessary, the smallest number is padded with leading
2742
+ zeros.
2743
+
2744
+ =item I<_xor(OBJ1, OBJ2)>
2745
+
2746
+ Return bitwise exclusive or. If necessary, the smallest number is padded
2747
+ with leading zeros.
2748
+
2749
+ =back
2750
+
2751
+ =head3 Boolean operators
2752
+
2753
+ =over 4
2754
+
2755
+ =item I<_is_zero(OBJ)>
2756
+
2757
+ Returns a true value if OBJ is zero, and false value otherwise.
2758
+
2759
+ =item I<_is_one(OBJ)>
2760
+
2761
+ Returns a true value if OBJ is one, and false value otherwise.
2762
+
2763
+ =item I<_is_two(OBJ)>
2764
+
2765
+ Returns a true value if OBJ is two, and false value otherwise.
2766
+
2767
+ =item I<_is_ten(OBJ)>
2768
+
2769
+ Returns a true value if OBJ is ten, and false value otherwise.
2770
+
2771
+ =item I<_is_even(OBJ)>
2772
+
2773
+ Return a true value if OBJ is an even integer, and a false value otherwise.
2774
+
2775
+ =item I<_is_odd(OBJ)>
2776
+
2777
+ Return a true value if OBJ is an even integer, and a false value otherwise.
2778
+
2779
+ =item I<_acmp(OBJ1, OBJ2)>
2780
+
2781
+ Compare OBJ1 and OBJ2 and return -1, 0, or 1, if OBJ1 is less than, equal
2782
+ to, or larger than OBJ2, respectively.
2783
+
2784
+ =back
2785
+
2786
+ =head3 String conversion
2787
+
2788
+ =over 4
2789
+
2790
+ =item I<_str(OBJ)>
2791
+
2792
+ Return a string representing the object. The returned string should have no
2793
+ leading zeros, i.e., it should match C<^(0|[1-9]\d*)$>.
2794
+
2795
+ =item I<_as_bin(OBJ)>
2796
+
2797
+ Return the binary string representation of the number. The string must have a
2798
+ '0b' prefix.
2799
+
2800
+ =item I<_as_oct(OBJ)>
2801
+
2802
+ Return the octal string representation of the number. The string must have
2803
+ a '0x' prefix.
2804
+
2805
+ Note: This method was required from Math::BigInt version 1.78, but the required
2806
+ API version number was not incremented, so there are older libraries that
2807
+ support API version 1, but do not support C<_as_oct()>.
2808
+
2809
+ =item I<_as_hex(OBJ)>
2810
+
2811
+ Return the hexadecimal string representation of the number. The string must
2812
+ have a '0x' prefix.
2813
+
2814
+ =back
2815
+
2816
+ =head3 Numeric conversion
2817
+
2818
+ =over 4
2819
+
2820
+ =item I<_num(OBJ)>
2821
+
2822
+ Given an object, return a Perl scalar number (int/float) representing this
2823
+ number.
2824
+
2825
+ =back
2826
+
2827
+ =head3 Miscellaneous
2828
+
2829
+ =over 4
2830
+
2831
+ =item I<_copy(OBJ)>
2832
+
2833
+ Return a true copy of the object.
2834
+
2835
+ =item I<_len(OBJ)>
2836
+
2837
+ Returns the number of the decimal digits in the number. The output is a
2838
+ Perl scalar.
2839
+
2840
+ =item I<_zeros(OBJ)>
2841
+
2842
+ Return the number of trailing decimal zeros. The output is a Perl scalar.
2843
+
2844
+ =item I<_digit(OBJ, N)>
2845
+
2846
+ Return the Nth digit as a Perl scalar. N is a Perl scalar, where zero refers to
2847
+ the rightmost (least significant) digit, and negative values count from the
2848
+ left (most significant digit). If $obj represents the number 123, then
2849
+ I<_digit($obj, 0)> is 3 and I<_digit(123, -1)> is 1.
2850
+
2851
+ =item I<_check(OBJ)>
2852
+
2853
+ Return a true value if the object is OK, and a false value otherwise. This is a
2854
+ check routine to test the internal state of the object for corruption.
2855
+
2856
+ =back
2857
+
2858
+ =head2 API version 2
2859
+
2860
+ The following methods are required for an API version of 2 or greater.
2861
+
2862
+ =head3 Constructors
2863
+
2864
+ =over 4
2865
+
2866
+ =item I<_1ex(N)>
2867
+
2868
+ Return an object representing the number 10**N where N E<gt>= 0 is a Perl
2869
+ scalar.
2870
+
2871
+ =back
2872
+
2873
+ =head3 Mathematical functions
2874
+
2875
+ =over 4
2876
+
2877
+ =item I<_nok(OBJ1, OBJ2)>
2878
+
2879
+ Return the binomial coefficient OBJ1 over OBJ1.
2880
+
2881
+ =back
2882
+
2883
+ =head3 Miscellaneous
2884
+
2885
+ =over 4
2886
+
2887
+ =item I<_alen(OBJ)>
2888
+
2889
+ Return the approximate number of decimal digits of the object. The
2890
+ output is one Perl scalar. This estimate must be greater than or equal
2891
+ to what C<_len()> returns.
2892
+
2893
+ =back
2894
+
2895
+ =head2 API optional methods
2896
+
2897
+ The following methods are optional, and can be defined if the underlying lib
2898
+ has a fast way to do them. If undefined, Math::BigInt will use pure Perl (hence
2899
+ slow) fallback routines to emulate these:
2900
+
2901
+ =head3 Signed bitwise operators.
2902
+
2903
+ Each of these methods may modify the first input argument.
2904
+
2905
+ =over 4
2906
+
2907
+ =item I<_signed_or(OBJ1, OBJ2, SIGN1, SIGN2)>
2908
+
2909
+ Return the signed bitwise or.
2910
+
2911
+ =item I<_signed_and(OBJ1, OBJ2, SIGN1, SIGN2)>
2912
+
2913
+ Return the signed bitwise and.
2914
+
2915
+ =item I<_signed_xor(OBJ1, OBJ2, SIGN1, SIGN2)>
2916
+
2917
+ Return the signed bitwise exclusive or.
2918
+
2919
+ =back
2920
+
2921
+ =head1 WRAP YOUR OWN
2922
+
2923
+ If you want to port your own favourite c-lib for big numbers to the
2924
+ Math::BigInt interface, you can take any of the already existing modules as
2925
+ a rough guideline. You should really wrap up the latest BigInt and BigFloat
2926
+ testsuites with your module, and replace in them any of the following:
2927
+
2928
+ use Math::BigInt;
2929
+
2930
+ by this:
2931
+
2932
+ use Math::BigInt lib => 'yourlib';
2933
+
2934
+ This way you ensure that your library really works 100% within Math::BigInt.
2935
+
2936
+ =head1 LICENSE
2937
+
2938
+ This program is free software; you may redistribute it and/or modify it under
2939
+ the same terms as Perl itself.
2940
+
2941
+ =head1 AUTHORS
2942
+
2943
+ =over 4
2944
+
2945
+ =item *
2946
+
2947
+ Original math code by Mark Biggar, rewritten by Tels L<http://bloodgate.com/>
2948
+ in late 2000.
2949
+
2950
+ =item *
2951
+
2952
+ Separated from BigInt and shaped API with the help of John Peacock.
2953
+
2954
+ =item *
2955
+
2956
+ Fixed, speed-up, streamlined and enhanced by Tels 2001 - 2007.
2957
+
2958
+ =item *
2959
+
2960
+ API documentation corrected and extended by Peter John Acklam,
2961
+ E<lt>pjacklam@online.noE<gt>
2962
+
2963
+ =back
2964
+
2965
+ =head1 SEE ALSO
2966
+
2967
+ L<Math::BigInt>, L<Math::BigFloat>,
2968
+ L<Math::BigInt::GMP>, L<Math::BigInt::FastCalc> and L<Math::BigInt::Pari>.
2969
+
2970
+ =cut