tdiary 5.4.0 → 5.5.0.beta1

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 (641) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +25 -2
  3. data/Gemfile.lock +211 -61
  4. data/README.md +4 -4
  5. data/doc/HOWTO-make-plugin.md +1 -1
  6. data/doc/HOWTO-testing-tDiary.md +2 -2
  7. data/doc/INSTALL-cgi.md +7 -0
  8. data/doc/INSTALL-paas.md +11 -11
  9. data/doc/INSTALL.md +2 -2
  10. data/doc/README.en.md +1 -1
  11. data/doc/README.md +1 -1
  12. data/lib/aws/pa_api.rb +6 -2
  13. data/lib/tdiary/admin.rb +6 -4
  14. data/lib/tdiary/application.rb +17 -17
  15. data/lib/tdiary/author_only_base.rb +6 -13
  16. data/lib/tdiary/base.rb +52 -16
  17. data/lib/tdiary/cgi_adapter.rb +86 -0
  18. data/lib/tdiary/cgi_compat.rb +189 -0
  19. data/lib/tdiary/configuration.rb +1 -1
  20. data/lib/tdiary/core_ext.rb +4 -53
  21. data/lib/tdiary/diary_container.rb +23 -11
  22. data/lib/tdiary/dispatcher/index_main.rb +16 -16
  23. data/lib/tdiary/dispatcher/update_main.rb +16 -16
  24. data/lib/tdiary/dispatcher.rb +4 -28
  25. data/lib/tdiary/environment.rb +12 -0
  26. data/lib/tdiary/filter.rb +5 -2
  27. data/lib/tdiary/io/pstore.rb +6 -3
  28. data/lib/tdiary/plugin/00default.rb +10 -14
  29. data/lib/tdiary/plugin/05referer.rb +6 -6
  30. data/lib/tdiary/plugin/60sf.rb +1 -1
  31. data/lib/tdiary/plugin.rb +76 -16
  32. data/lib/tdiary/request.rb +11 -353
  33. data/lib/tdiary/tasks/db.rake +17 -4
  34. data/lib/tdiary/tasks/heroku.rake +9 -0
  35. data/lib/tdiary/tasks/release.rake +126 -146
  36. data/lib/tdiary/version.rb +1 -1
  37. data/lib/tdiary/view.rb +3 -3
  38. data/lib/tdiary.rb +3 -1
  39. data/misc/convert2.rb +3 -0
  40. data/misc/migrate.rb +3 -0
  41. data/misc/plugin/a.rb +1 -6
  42. data/misc/plugin/amazon.rb +5 -4
  43. data/misc/plugin/calendar2.rb +1 -1
  44. data/misc/plugin/en/disp_referrer.rb +1 -1
  45. data/misc/plugin/ja/disp_referrer.rb +1 -1
  46. data/misc/plugin/kw.rb +2 -21
  47. data/misc/plugin/makelirs.rb +1 -4
  48. data/tdiary.conf.sample +8 -0
  49. data/theme/base.css +15 -0
  50. data/vendor/bundle/ruby/3.4.0/bin/emot +29 -0
  51. data/vendor/bundle/ruby/3.4.0/bin/hikidoc +29 -0
  52. data/vendor/bundle/ruby/3.4.0/bin/rackup +29 -0
  53. data/vendor/bundle/ruby/3.4.0/bin/rake +29 -0
  54. data/vendor/bundle/ruby/3.4.0/bin/thor +29 -0
  55. data/vendor/bundle/ruby/3.4.0/cache/base64-0.3.0.gem +0 -0
  56. data/vendor/bundle/ruby/3.4.0/cache/cgi-0.5.2.gem +0 -0
  57. data/vendor/bundle/ruby/3.4.0/cache/date-3.5.1.gem +0 -0
  58. data/vendor/bundle/ruby/3.4.0/cache/emot-0.0.4.gem +0 -0
  59. data/vendor/bundle/ruby/3.4.0/cache/fastimage-2.4.1.gem +0 -0
  60. data/vendor/bundle/ruby/3.4.0/cache/hikidoc-0.1.1.gem +0 -0
  61. data/vendor/bundle/ruby/3.4.0/cache/logger-1.7.0.gem +0 -0
  62. data/vendor/bundle/ruby/3.4.0/cache/mail-2.9.1.gem +0 -0
  63. data/vendor/bundle/ruby/3.4.0/cache/mini_mime-1.1.5.gem +0 -0
  64. data/vendor/bundle/ruby/3.4.0/cache/net-imap-0.5.15.gem +0 -0
  65. data/vendor/bundle/ruby/3.4.0/cache/net-pop-0.1.2.gem +0 -0
  66. data/vendor/bundle/ruby/3.4.0/cache/net-protocol-0.2.2.gem +0 -0
  67. data/vendor/bundle/ruby/3.4.0/cache/net-smtp-0.5.1.gem +0 -0
  68. data/vendor/bundle/ruby/3.4.0/cache/pstore-0.2.1.gem +0 -0
  69. data/vendor/bundle/ruby/3.4.0/cache/rack-3.2.6.gem +0 -0
  70. data/vendor/bundle/ruby/3.4.0/cache/rack-session-2.1.2.gem +0 -0
  71. data/vendor/bundle/ruby/3.4.0/cache/rackup-2.3.1.gem +0 -0
  72. data/vendor/bundle/ruby/3.4.0/cache/rake-13.4.2.gem +0 -0
  73. data/vendor/bundle/ruby/3.4.0/cache/thor-1.5.0.gem +0 -0
  74. data/vendor/bundle/ruby/3.4.0/cache/timeout-0.6.1.gem +0 -0
  75. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/cgi-0.5.2/cgi/escape.so +0 -0
  76. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/cgi-0.5.2/gem.build_complete +0 -0
  77. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/cgi-0.5.2/gem_make.out +18 -0
  78. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.5.1/date_core.so +0 -0
  79. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.5.1/gem.build_complete +0 -0
  80. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.5.1/gem_make.out +24 -0
  81. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.5.1/mkmf.log +93 -0
  82. data/vendor/bundle/ruby/3.4.0/gems/base64-0.3.0/BSDL +22 -0
  83. data/vendor/bundle/ruby/3.4.0/gems/base64-0.3.0/COPYING +56 -0
  84. data/vendor/bundle/ruby/3.4.0/gems/base64-0.3.0/LEGAL +60 -0
  85. data/vendor/bundle/ruby/3.4.0/gems/base64-0.3.0/README.md +48 -0
  86. data/vendor/bundle/ruby/3.4.0/gems/base64-0.3.0/lib/base64.rb +381 -0
  87. data/vendor/bundle/ruby/3.4.0/gems/base64-0.3.0/sig/base64.rbs +355 -0
  88. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/BSDL +22 -0
  89. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/COPYING +56 -0
  90. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/README.md +98 -0
  91. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/ext/cgi/escape/Makefile +275 -0
  92. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/ext/cgi/escape/depend +2 -0
  93. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/ext/cgi/escape/escape.c +487 -0
  94. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/ext/cgi/escape/extconf.rb +7 -0
  95. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi/cookie.rb +212 -0
  96. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi/core.rb +1273 -0
  97. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi/escape.rb +227 -0
  98. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi/escape.so +0 -0
  99. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi/html.rb +1040 -0
  100. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi/session/pstore.rb +91 -0
  101. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi/session.rb +574 -0
  102. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi/util.rb +48 -0
  103. data/vendor/bundle/ruby/3.4.0/gems/cgi-0.5.2/lib/cgi.rb +310 -0
  104. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/BSDL +22 -0
  105. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/COPYING +56 -0
  106. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/README.md +102 -0
  107. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/Makefile +273 -0
  108. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/date_core.c +10065 -0
  109. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/date_parse.c +3086 -0
  110. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/date_strftime.c +638 -0
  111. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/date_strptime.c +704 -0
  112. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/date_tmx.h +56 -0
  113. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/extconf.rb +13 -0
  114. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/prereq.mk +19 -0
  115. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/zonetab.h +1564 -0
  116. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/ext/date/zonetab.list +330 -0
  117. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/lib/date.rb +70 -0
  118. data/vendor/bundle/ruby/3.4.0/gems/date-3.5.1/lib/date_core.so +0 -0
  119. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/Gemfile +4 -0
  120. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/LICENSE.txt +22 -0
  121. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/README.md +87 -0
  122. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/Rakefile +7 -0
  123. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/bin/emot +5 -0
  124. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/emot.gemspec +26 -0
  125. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/lib/emot/cli.rb +62 -0
  126. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/lib/emot/map.rb +894 -0
  127. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/lib/emot/symbol_ext.rb +11 -0
  128. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/lib/emot/version.rb +3 -0
  129. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/lib/emot.rb +34 -0
  130. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/spec/cli_spec.rb +56 -0
  131. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/spec/emot_spec.rb +50 -0
  132. data/vendor/bundle/ruby/3.4.0/gems/emot-0.0.4/spec/spec_helper.rb +2 -0
  133. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/MIT-LICENSE +20 -0
  134. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/README.md +209 -0
  135. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage.rb +471 -0
  136. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/avif.rb +12 -0
  137. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/bmp.rb +17 -0
  138. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/exif.rb +76 -0
  139. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/fiber_stream.rb +58 -0
  140. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/gif.rb +63 -0
  141. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/heic.rb +8 -0
  142. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/ico.rb +9 -0
  143. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/image_base.rb +17 -0
  144. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/iso_bmff.rb +176 -0
  145. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/jpeg.rb +52 -0
  146. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/jxl.rb +13 -0
  147. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/jxlc.rb +75 -0
  148. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/png.rb +26 -0
  149. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/psd.rb +7 -0
  150. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/stream_util.rb +19 -0
  151. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/svg.rb +69 -0
  152. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/tiff.rb +16 -0
  153. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/type_parser.rb +74 -0
  154. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/fastimage_parsing/webp.rb +60 -0
  155. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage/version.rb +5 -0
  156. data/vendor/bundle/ruby/3.4.0/gems/fastimage-2.4.1/lib/fastimage.rb +73 -0
  157. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/COPYING +28 -0
  158. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/Gemfile +4 -0
  159. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/NEWS +36 -0
  160. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/NEWS.ja +36 -0
  161. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/README +95 -0
  162. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/README.ja +92 -0
  163. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/README.ja.md +112 -0
  164. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/README.md +114 -0
  165. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/Rakefile +18 -0
  166. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/TextFormattingRules +320 -0
  167. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/TextFormattingRules.ja +318 -0
  168. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/TextFormattingRules.ja.md +385 -0
  169. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/TextFormattingRules.md +388 -0
  170. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/bin/hikidoc +70 -0
  171. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/hikidoc.gemspec +24 -0
  172. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/lib/hikidoc.rb +912 -0
  173. data/vendor/bundle/ruby/3.4.0/gems/hikidoc-0.1.1/test/hikidoc_test.rb +514 -0
  174. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/BSDL +22 -0
  175. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/COPYING +56 -0
  176. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/README.md +104 -0
  177. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/errors.rb +9 -0
  178. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/formatter.rb +36 -0
  179. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/log_device.rb +265 -0
  180. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/period.rb +47 -0
  181. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/severity.rb +38 -0
  182. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger/version.rb +5 -0
  183. data/vendor/bundle/ruby/3.4.0/gems/logger-1.7.0/lib/logger.rb +789 -0
  184. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/MIT-LICENSE +20 -0
  185. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/README.md +771 -0
  186. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/attachments_list.rb +109 -0
  187. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/body.rb +305 -0
  188. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/configuration.rb +78 -0
  189. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/constants.rb +79 -0
  190. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/address.rb +258 -0
  191. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/address_list.rb +34 -0
  192. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/content_disposition_element.rb +20 -0
  193. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/content_location_element.rb +17 -0
  194. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/content_transfer_encoding_element.rb +13 -0
  195. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/content_type_element.rb +25 -0
  196. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/date_time_element.rb +15 -0
  197. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/envelope_from_element.rb +39 -0
  198. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/message_ids_element.rb +31 -0
  199. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/mime_version_element.rb +15 -0
  200. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/phrase_list.rb +19 -0
  201. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements/received_element.rb +35 -0
  202. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/elements.rb +15 -0
  203. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/encodings/7bit.rb +27 -0
  204. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/encodings/8bit.rb +18 -0
  205. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/encodings/base64.rb +38 -0
  206. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/encodings/binary.rb +13 -0
  207. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/encodings/identity.rb +24 -0
  208. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/encodings/quoted_printable.rb +45 -0
  209. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/encodings/transfer_encoding.rb +77 -0
  210. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/encodings/unix_to_unix.rb +20 -0
  211. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/encodings.rb +314 -0
  212. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/envelope.rb +28 -0
  213. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/field.rb +313 -0
  214. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/field_list.rb +87 -0
  215. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/bcc_field.rb +49 -0
  216. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/cc_field.rb +33 -0
  217. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/comments_field.rb +31 -0
  218. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/common_address_field.rb +162 -0
  219. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/common_date_field.rb +56 -0
  220. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/common_field.rb +77 -0
  221. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/common_message_id_field.rb +41 -0
  222. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/content_description_field.rb +12 -0
  223. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/content_disposition_field.rb +44 -0
  224. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/content_id_field.rb +35 -0
  225. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/content_location_field.rb +28 -0
  226. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/content_transfer_encoding_field.rb +44 -0
  227. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/content_type_field.rb +171 -0
  228. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/date_field.rb +28 -0
  229. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/from_field.rb +33 -0
  230. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/in_reply_to_field.rb +45 -0
  231. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/keywords_field.rb +30 -0
  232. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/message_id_field.rb +36 -0
  233. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/mime_version_field.rb +42 -0
  234. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/named_structured_field.rb +10 -0
  235. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/named_unstructured_field.rb +10 -0
  236. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/optional_field.rb +15 -0
  237. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/parameter_hash.rb +61 -0
  238. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/received_field.rb +61 -0
  239. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/references_field.rb +42 -0
  240. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/reply_to_field.rb +33 -0
  241. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/resent_bcc_field.rb +33 -0
  242. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/resent_cc_field.rb +33 -0
  243. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/resent_date_field.rb +10 -0
  244. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/resent_from_field.rb +33 -0
  245. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/resent_message_id_field.rb +10 -0
  246. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/resent_sender_field.rb +32 -0
  247. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/resent_to_field.rb +33 -0
  248. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/return_path_field.rb +60 -0
  249. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/sender_field.rb +45 -0
  250. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/structured_field.rb +24 -0
  251. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/subject_field.rb +14 -0
  252. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/to_field.rb +33 -0
  253. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields/unstructured_field.rb +189 -0
  254. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/fields.rb +45 -0
  255. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/header.rb +237 -0
  256. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/indifferent_hash.rb +147 -0
  257. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/mail.rb +267 -0
  258. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/matchers/attachment_matchers.rb +44 -0
  259. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/matchers/has_sent_mail.rb +201 -0
  260. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/message.rb +2159 -0
  261. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/multibyte/chars.rb +318 -0
  262. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/multibyte/unicode.rb +405 -0
  263. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/multibyte/utils.rb +44 -0
  264. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/multibyte.rb +82 -0
  265. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/delivery_methods/exim.rb +50 -0
  266. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/delivery_methods/file_delivery.rb +43 -0
  267. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/delivery_methods/logger_delivery.rb +34 -0
  268. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/delivery_methods/sendmail.rb +87 -0
  269. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/delivery_methods/smtp.rb +200 -0
  270. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/delivery_methods/smtp_connection.rb +57 -0
  271. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/delivery_methods/test_mailer.rb +44 -0
  272. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/retriever_methods/base.rb +64 -0
  273. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/retriever_methods/imap.rb +190 -0
  274. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/retriever_methods/pop3.rb +143 -0
  275. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network/retriever_methods/test_retriever.rb +45 -0
  276. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/network.rb +16 -0
  277. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parser_tools.rb +15 -0
  278. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/address_lists_parser.rb +33245 -0
  279. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/address_lists_parser.rl +183 -0
  280. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/content_disposition_parser.rb +904 -0
  281. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/content_disposition_parser.rl +93 -0
  282. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/content_location_parser.rb +825 -0
  283. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/content_location_parser.rl +82 -0
  284. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/content_transfer_encoding_parser.rb +525 -0
  285. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/content_transfer_encoding_parser.rl +75 -0
  286. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/content_type_parser.rb +1051 -0
  287. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/content_type_parser.rl +94 -0
  288. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/date_time_parser.rb +894 -0
  289. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/date_time_parser.rl +73 -0
  290. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/envelope_from_parser.rb +3678 -0
  291. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/envelope_from_parser.rl +93 -0
  292. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/message_ids_parser.rb +5164 -0
  293. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/message_ids_parser.rl +97 -0
  294. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/mime_version_parser.rb +516 -0
  295. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/mime_version_parser.rl +72 -0
  296. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/phrase_lists_parser.rb +887 -0
  297. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/phrase_lists_parser.rl +94 -0
  298. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/received_parser.rb +8785 -0
  299. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/received_parser.rl +95 -0
  300. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc2045_content_transfer_encoding.rl +13 -0
  301. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc2045_content_type.rl +25 -0
  302. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc2045_mime.rl +16 -0
  303. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc2183_content_disposition.rl +15 -0
  304. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc3629_utf8.rl +19 -0
  305. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc5234_abnf_core_rules.rl +22 -0
  306. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc5322.rl +74 -0
  307. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc5322_address.rl +72 -0
  308. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc5322_date_time.rl +37 -0
  309. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers/rfc5322_lexical_tokens.rl +60 -0
  310. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parsers.rb +13 -0
  311. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/part.rb +119 -0
  312. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/parts_list.rb +131 -0
  313. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/smtp_envelope.rb +57 -0
  314. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/utilities.rb +576 -0
  315. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/values/unicode_tables.dat +0 -0
  316. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/version.rb +17 -0
  317. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail/yaml.rb +30 -0
  318. data/vendor/bundle/ruby/3.4.0/gems/mail-2.9.1/lib/mail.rb +65 -0
  319. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/CHANGELOG +65 -0
  320. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/CODE_OF_CONDUCT.md +74 -0
  321. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/Gemfile +9 -0
  322. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/LICENSE.txt +21 -0
  323. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/README.md +114 -0
  324. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/Rakefile +97 -0
  325. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/bench/bench.rb +51 -0
  326. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/bin/console +15 -0
  327. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/bin/db_pull_request +20 -0
  328. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/bin/setup +8 -0
  329. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/lib/db/content_type_mime.db +880 -0
  330. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/lib/db/ext_mime.db +1201 -0
  331. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/lib/mini_mime/version.rb +4 -0
  332. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/lib/mini_mime.rb +186 -0
  333. data/vendor/bundle/ruby/3.4.0/gems/mini_mime-1.1.5/mini_mime.gemspec +31 -0
  334. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/BSDL +22 -0
  335. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/COPYING +56 -0
  336. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/Gemfile +25 -0
  337. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/LICENSE.txt +65 -0
  338. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/README.md +77 -0
  339. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/Rakefile +13 -0
  340. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/docs/styles.css +85 -0
  341. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/authenticators.rb +37 -0
  342. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/command_data.rb +507 -0
  343. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/config/attr_accessors.rb +75 -0
  344. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/config/attr_inheritance.rb +90 -0
  345. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/config/attr_type_coercion.rb +74 -0
  346. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/config/attr_version_defaults.rb +93 -0
  347. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/config.rb +500 -0
  348. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/connection_state.rb +48 -0
  349. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/data_encoding.rb +214 -0
  350. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/data_lite.rb +226 -0
  351. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/deprecated_client_options.rb +142 -0
  352. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/errors.rb +118 -0
  353. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/esearch_result.rb +219 -0
  354. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/fetch_data.rb +597 -0
  355. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/flags.rb +262 -0
  356. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/response_data.rb +1113 -0
  357. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/response_parser/parser_utils.rb +245 -0
  358. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/response_parser.rb +2282 -0
  359. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/response_reader.rb +92 -0
  360. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/anonymous_authenticator.rb +69 -0
  361. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/authentication_exchange.rb +139 -0
  362. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/authenticators.rb +122 -0
  363. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/client_adapter.rb +123 -0
  364. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/cram_md5_authenticator.rb +61 -0
  365. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/digest_md5_authenticator.rb +342 -0
  366. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/external_authenticator.rb +83 -0
  367. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/gs2_header.rb +80 -0
  368. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/login_authenticator.rb +56 -0
  369. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/oauthbearer_authenticator.rb +199 -0
  370. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/plain_authenticator.rb +101 -0
  371. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/protocol_adapters.rb +101 -0
  372. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/scram_algorithm.rb +58 -0
  373. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/scram_authenticator.rb +361 -0
  374. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/stringprep.rb +12 -0
  375. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl/xoauth2_authenticator.rb +106 -0
  376. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl.rb +182 -0
  377. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sasl_adapter.rb +20 -0
  378. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/search_result.rb +145 -0
  379. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/sequence_set.rb +1952 -0
  380. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/stringprep/nameprep.rb +70 -0
  381. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/stringprep/saslprep.rb +69 -0
  382. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/stringprep/saslprep_tables.rb +96 -0
  383. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/stringprep/tables.rb +146 -0
  384. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/stringprep/trace.rb +85 -0
  385. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/stringprep.rb +159 -0
  386. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/uidplus_data.rb +244 -0
  387. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap/vanished_data.rb +65 -0
  388. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/lib/net/imap.rb +3968 -0
  389. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/net-imap.gemspec +38 -0
  390. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/rakelib/benchmarks.rake +91 -0
  391. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/rakelib/rdoc.rake +70 -0
  392. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/rakelib/rfcs.rake +170 -0
  393. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/rakelib/saslprep.rake +30 -0
  394. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/rakelib/string_prep_tables_generator.rb +449 -0
  395. data/vendor/bundle/ruby/3.4.0/gems/net-imap-0.5.15/sample/net-imap.rb +167 -0
  396. data/vendor/bundle/ruby/3.4.0/gems/net-pop-0.1.2/Gemfile +7 -0
  397. data/vendor/bundle/ruby/3.4.0/gems/net-pop-0.1.2/LICENSE.txt +22 -0
  398. data/vendor/bundle/ruby/3.4.0/gems/net-pop-0.1.2/README.md +66 -0
  399. data/vendor/bundle/ruby/3.4.0/gems/net-pop-0.1.2/Rakefile +17 -0
  400. data/vendor/bundle/ruby/3.4.0/gems/net-pop-0.1.2/lib/net/pop.rb +1025 -0
  401. data/vendor/bundle/ruby/3.4.0/gems/net-pop-0.1.2/net-pop.gemspec +32 -0
  402. data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/Gemfile +7 -0
  403. data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/LICENSE.txt +22 -0
  404. data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/README.md +29 -0
  405. data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/Rakefile +10 -0
  406. data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/bin/console +14 -0
  407. data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/bin/setup +8 -0
  408. data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/lib/net/protocol.rb +544 -0
  409. data/vendor/bundle/ruby/3.4.0/gems/net-protocol-0.2.2/net-protocol.gemspec +33 -0
  410. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/LICENSE.txt +2 -0
  411. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/NEWS.md +133 -0
  412. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/README.md +97 -0
  413. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/auth_cram_md5.rb +48 -0
  414. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/auth_login.rb +11 -0
  415. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/auth_plain.rb +9 -0
  416. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/auth_xoauth2.rb +17 -0
  417. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp/authenticator.rb +57 -0
  418. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/lib/net/smtp.rb +1164 -0
  419. data/vendor/bundle/ruby/3.4.0/gems/net-smtp-0.5.1/net-smtp.gemspec +31 -0
  420. data/vendor/bundle/ruby/3.4.0/gems/pstore-0.2.1/BSDL +22 -0
  421. data/vendor/bundle/ruby/3.4.0/gems/pstore-0.2.1/COPYING +56 -0
  422. data/vendor/bundle/ruby/3.4.0/gems/pstore-0.2.1/Gemfile +10 -0
  423. data/vendor/bundle/ruby/3.4.0/gems/pstore-0.2.1/README.md +95 -0
  424. data/vendor/bundle/ruby/3.4.0/gems/pstore-0.2.1/Rakefile +10 -0
  425. data/vendor/bundle/ruby/3.4.0/gems/pstore-0.2.1/bin/console +14 -0
  426. data/vendor/bundle/ruby/3.4.0/gems/pstore-0.2.1/bin/setup +8 -0
  427. data/vendor/bundle/ruby/3.4.0/gems/pstore-0.2.1/lib/pstore.rb +736 -0
  428. data/vendor/bundle/ruby/3.4.0/gems/pstore-0.2.1/pstore.gemspec +32 -0
  429. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/CHANGELOG.md +1346 -0
  430. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/CONTRIBUTING.md +144 -0
  431. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/MIT-LICENSE +20 -0
  432. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/README.md +384 -0
  433. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/SPEC.rdoc +258 -0
  434. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/auth/abstract/handler.rb +41 -0
  435. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/auth/abstract/request.rb +51 -0
  436. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/auth/basic.rb +58 -0
  437. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/bad_request.rb +8 -0
  438. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/body_proxy.rb +63 -0
  439. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/builder.rb +296 -0
  440. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/cascade.rb +67 -0
  441. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/common_logger.rb +89 -0
  442. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/conditional_get.rb +87 -0
  443. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/config.rb +22 -0
  444. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/constants.rb +68 -0
  445. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/content_length.rb +34 -0
  446. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/content_type.rb +33 -0
  447. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/deflater.rb +158 -0
  448. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/directory.rb +208 -0
  449. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/etag.rb +71 -0
  450. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/events.rb +172 -0
  451. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/files.rb +216 -0
  452. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/head.rb +25 -0
  453. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/headers.rb +238 -0
  454. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/lint.rb +964 -0
  455. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/lock.rb +29 -0
  456. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/media_type.rb +52 -0
  457. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/method_override.rb +56 -0
  458. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/mime.rb +694 -0
  459. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/mock.rb +3 -0
  460. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/mock_request.rb +161 -0
  461. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/mock_response.rb +156 -0
  462. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/multipart/generator.rb +99 -0
  463. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/multipart/parser.rb +621 -0
  464. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/multipart/uploaded_file.rb +82 -0
  465. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/multipart.rb +77 -0
  466. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/null_logger.rb +48 -0
  467. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/query_parser.rb +261 -0
  468. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/recursive.rb +66 -0
  469. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/reloader.rb +112 -0
  470. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/request.rb +790 -0
  471. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/response.rb +403 -0
  472. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/rewindable_input.rb +116 -0
  473. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/runtime.rb +35 -0
  474. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/sendfile.rb +197 -0
  475. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/show_exceptions.rb +409 -0
  476. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/show_status.rb +121 -0
  477. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/static.rb +192 -0
  478. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/tempfile_reaper.rb +33 -0
  479. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/urlmap.rb +99 -0
  480. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/utils.rb +714 -0
  481. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack/version.rb +17 -0
  482. data/vendor/bundle/ruby/3.4.0/gems/rack-3.2.6/lib/rack.rb +64 -0
  483. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/lib/rack/session/abstract/id.rb +535 -0
  484. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/lib/rack/session/constants.rb +13 -0
  485. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/lib/rack/session/cookie.rb +315 -0
  486. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/lib/rack/session/encryptor.rb +415 -0
  487. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/lib/rack/session/pool.rb +82 -0
  488. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/lib/rack/session/version.rb +10 -0
  489. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/lib/rack/session.rb +12 -0
  490. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/license.md +72 -0
  491. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/readme.md +47 -0
  492. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/releases.md +31 -0
  493. data/vendor/bundle/ruby/3.4.0/gems/rack-session-2.1.2/security.md +3 -0
  494. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/bin/rackup +5 -0
  495. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/lib/rackup/handler/cgi.rb +61 -0
  496. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/lib/rackup/handler/webrick.rb +196 -0
  497. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/lib/rackup/handler.rb +113 -0
  498. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/lib/rackup/lobster.rb +81 -0
  499. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/lib/rackup/server.rb +462 -0
  500. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/lib/rackup/stream.rb +199 -0
  501. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/lib/rackup/version.rb +8 -0
  502. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/lib/rackup.rb +21 -0
  503. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/license.md +80 -0
  504. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/readme.md +82 -0
  505. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/releases.md +28 -0
  506. data/vendor/bundle/ruby/3.4.0/gems/rackup-2.3.1/security.md +3 -0
  507. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/History.rdoc +2454 -0
  508. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/MIT-LICENSE +21 -0
  509. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/README.rdoc +155 -0
  510. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/command_line_usage.rdoc +171 -0
  511. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/Rakefile1 +38 -0
  512. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/Rakefile2 +35 -0
  513. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/a.c +6 -0
  514. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/b.c +6 -0
  515. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/example/main.c +11 -0
  516. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/glossary.rdoc +42 -0
  517. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/jamis.rb +592 -0
  518. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/proto_rake.rdoc +127 -0
  519. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/rake.1 +156 -0
  520. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/rakefile.rdoc +635 -0
  521. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/doc/rational.rdoc +151 -0
  522. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/exe/rake +27 -0
  523. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/application.rb +847 -0
  524. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/backtrace.rb +25 -0
  525. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/clean.rb +78 -0
  526. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/cloneable.rb +17 -0
  527. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/cpu_counter.rb +122 -0
  528. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/default_loader.rb +15 -0
  529. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/dsl_definition.rb +196 -0
  530. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/early_time.rb +22 -0
  531. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/ext/core.rb +26 -0
  532. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/ext/string.rb +176 -0
  533. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_creation_task.rb +25 -0
  534. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_list.rb +435 -0
  535. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_task.rb +58 -0
  536. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_utils.rb +137 -0
  537. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/file_utils_ext.rb +135 -0
  538. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/invocation_chain.rb +57 -0
  539. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/invocation_exception_mixin.rb +17 -0
  540. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/late_time.rb +18 -0
  541. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/linked_list.rb +112 -0
  542. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/loaders/makefile.rb +54 -0
  543. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/multi_task.rb +14 -0
  544. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/name_space.rb +38 -0
  545. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/options.rb +31 -0
  546. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/packagetask.rb +222 -0
  547. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/phony.rb +16 -0
  548. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/private_reader.rb +21 -0
  549. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/promise.rb +100 -0
  550. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/pseudo_status.rb +30 -0
  551. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/rake_module.rb +67 -0
  552. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/rake_test_loader.rb +27 -0
  553. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/rule_recursion_overflow_error.rb +20 -0
  554. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/scope.rb +43 -0
  555. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task.rb +434 -0
  556. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task_argument_error.rb +8 -0
  557. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task_arguments.rb +113 -0
  558. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/task_manager.rb +333 -0
  559. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/tasklib.rb +12 -0
  560. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/testtask.rb +192 -0
  561. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/thread_history_display.rb +49 -0
  562. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/thread_pool.rb +157 -0
  563. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/trace_output.rb +23 -0
  564. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/version.rb +10 -0
  565. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake/win32.rb +17 -0
  566. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/lib/rake.rb +69 -0
  567. data/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/rake.gemspec +102 -0
  568. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/CONTRIBUTING.md +32 -0
  569. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/LICENSE.md +20 -0
  570. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/README.md +44 -0
  571. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/bin/thor +6 -0
  572. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/actions/create_file.rb +105 -0
  573. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/actions/create_link.rb +61 -0
  574. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/actions/directory.rb +108 -0
  575. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/actions/empty_directory.rb +143 -0
  576. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/actions/file_manipulation.rb +407 -0
  577. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/actions/inject_into_file.rb +163 -0
  578. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/actions.rb +340 -0
  579. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/base.rb +826 -0
  580. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/command.rb +151 -0
  581. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/core_ext/hash_with_indifferent_access.rb +107 -0
  582. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/error.rb +106 -0
  583. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/group.rb +292 -0
  584. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/invocation.rb +178 -0
  585. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/line_editor/basic.rb +37 -0
  586. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/line_editor/readline.rb +88 -0
  587. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/line_editor.rb +17 -0
  588. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/nested_context.rb +29 -0
  589. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/parser/argument.rb +86 -0
  590. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/parser/arguments.rb +195 -0
  591. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/parser/option.rb +178 -0
  592. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/parser/options.rb +294 -0
  593. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/parser.rb +4 -0
  594. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/rake_compat.rb +72 -0
  595. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/runner.rb +335 -0
  596. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/shell/basic.rb +392 -0
  597. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/shell/color.rb +117 -0
  598. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/shell/column_printer.rb +29 -0
  599. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/shell/html.rb +84 -0
  600. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/shell/lcs_diff.rb +49 -0
  601. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/shell/table_printer.rb +118 -0
  602. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/shell/terminal.rb +42 -0
  603. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/shell/wrapped_printer.rb +38 -0
  604. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/shell.rb +81 -0
  605. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/util.rb +285 -0
  606. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor/version.rb +3 -0
  607. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/lib/thor.rb +707 -0
  608. data/vendor/bundle/ruby/3.4.0/gems/thor-1.5.0/thor.gemspec +33 -0
  609. data/vendor/bundle/ruby/3.4.0/gems/timeout-0.6.1/BSDL +22 -0
  610. data/vendor/bundle/ruby/3.4.0/gems/timeout-0.6.1/COPYING +56 -0
  611. data/vendor/bundle/ruby/3.4.0/gems/timeout-0.6.1/Gemfile +10 -0
  612. data/vendor/bundle/ruby/3.4.0/gems/timeout-0.6.1/README.md +39 -0
  613. data/vendor/bundle/ruby/3.4.0/gems/timeout-0.6.1/lib/timeout.rb +314 -0
  614. data/vendor/bundle/ruby/3.4.0/gems/timeout-0.6.1/timeout.gemspec +33 -0
  615. data/vendor/bundle/ruby/3.4.0/specifications/base64-0.3.0.gemspec +23 -0
  616. data/vendor/bundle/ruby/3.4.0/specifications/cgi-0.5.2.gemspec +25 -0
  617. data/vendor/bundle/ruby/3.4.0/specifications/date-3.5.1.gemspec +25 -0
  618. data/vendor/bundle/ruby/3.4.0/specifications/emot-0.0.4.gemspec +30 -0
  619. data/vendor/bundle/ruby/3.4.0/specifications/fastimage-2.4.1.gemspec +32 -0
  620. data/vendor/bundle/ruby/3.4.0/specifications/hikidoc-0.1.1.gemspec +28 -0
  621. data/vendor/bundle/ruby/3.4.0/specifications/logger-1.7.0.gemspec +22 -0
  622. data/vendor/bundle/ruby/3.4.0/specifications/mail-2.9.1.gemspec +38 -0
  623. data/vendor/bundle/ruby/3.4.0/specifications/mini_mime-1.1.5.gemspec +30 -0
  624. data/vendor/bundle/ruby/3.4.0/specifications/net-imap-0.5.15.gemspec +28 -0
  625. data/vendor/bundle/ruby/3.4.0/specifications/net-pop-0.1.2.gemspec +26 -0
  626. data/vendor/bundle/ruby/3.4.0/specifications/net-protocol-0.2.2.gemspec +26 -0
  627. data/vendor/bundle/ruby/3.4.0/specifications/net-smtp-0.5.1.gemspec +26 -0
  628. data/vendor/bundle/ruby/3.4.0/specifications/pstore-0.2.1.gemspec +22 -0
  629. data/vendor/bundle/ruby/3.4.0/specifications/rack-3.2.6.gemspec +31 -0
  630. data/vendor/bundle/ruby/3.4.0/specifications/rack-session-2.1.2.gemspec +30 -0
  631. data/vendor/bundle/ruby/3.4.0/specifications/rackup-2.3.1.gemspec +26 -0
  632. data/vendor/bundle/ruby/3.4.0/specifications/rake-13.4.2.gemspec +26 -0
  633. data/vendor/bundle/ruby/3.4.0/specifications/thor-1.5.0.gemspec +28 -0
  634. data/vendor/bundle/ruby/3.4.0/specifications/timeout-0.6.1.gemspec +22 -0
  635. metadata +595 -20
  636. data/js/02edit.js +0 -15
  637. data/lib/tdiary/compatible.rb +0 -56
  638. data/misc/lib/fcgi_patch.rb +0 -89
  639. data/misc/paas/heroku/Gemfile.local +0 -12
  640. data/misc/paas/heroku/Gemfile.lock +0 -287
  641. data/public/index.rdf +0 -22
@@ -0,0 +1,146 @@
1
+ # frozen_string_literal: true
2
+
3
+ #--
4
+ # This file is generated from RFC3454, by rake. Don't edit directly.
5
+ #++
6
+
7
+ module Net::IMAP::StringPrep
8
+
9
+ module Tables
10
+
11
+ # Unassigned code points in Unicode 3.2 \StringPrep\[\"A.1\"]
12
+ IN_A_1 = /\p{^AGE=3.2}/.freeze
13
+
14
+ # Commonly mapped to nothing \StringPrep\[\"B.1\"]
15
+ IN_B_1 = /[\u{00ad 034f 1806 2060 feff}\u{180b}-\u{180d}\u{200b}-\u{200d}\u{fe00}-\u{fe0f}]/.freeze
16
+
17
+ # Mapping for case-folding used with NFKC \StringPrep\[\"B.2\"]
18
+ IN_B_2 = /[\u{00b5 0100 0102 0104 0106 0108 010a 010c 010e 0110 0112 0114 0116 0118 011a 011c 011e 0120 0122 0124 0126 0128 012a 012c 012e 0130 0132 0134 0136 0139 013b 013d 013f 0141 0143 0145 0147 014c 014e 0150 0152 0154 0156 0158 015a 015c 015e 0160 0162 0164 0166 0168 016a 016c 016e 0170 0172 0174 0176 017b 017d 017f 0184 01a2 01a4 01a9 01ac 01b5 01bc 01cd 01cf 01d1 01d3 01d5 01d7 01d9 01db 01de 01e0 01e2 01e4 01e6 01e8 01ea 01ec 01ee 01f4 01fa 01fc 01fe 0200 0202 0204 0206 0208 020a 020c 020e 0210 0212 0214 0216 0218 021a 021c 021e 0220 0222 0224 0226 0228 022a 022c 022e 0230 0232 0345 037a 0386 038c 03b0 03c2 03d8 03da 03dc 03de 03e0 03e2 03e4 03e6 03e8 03ea 03ec 03ee 0460 0462 0464 0466 0468 046a 046c 046e 0470 0472 0474 0476 0478 047a 047c 047e 0480 048a 048c 048e 0490 0492 0494 0496 0498 049a 049c 049e 04a0 04a2 04a4 04a6 04a8 04aa 04ac 04ae 04b0 04b2 04b4 04b6 04b8 04ba 04bc 04be 04c1 04c3 04c5 04c7 04c9 04cb 04cd 04d0 04d2 04d4 04d6 04d8 04da 04dc 04de 04e0 04e2 04e4 04e6 04e8 04ea 04ec 04ee 04f0 04f2 04f4 04f8 0500 0502 0504 0506 0508 050a 050c 050e 0587 1e00 1e02 1e04 1e06 1e08 1e0a 1e0c 1e0e 1e10 1e12 1e14 1e16 1e18 1e1a 1e1c 1e1e 1e20 1e22 1e24 1e26 1e28 1e2a 1e2c 1e2e 1e30 1e32 1e34 1e36 1e38 1e3a 1e3c 1e3e 1e40 1e42 1e44 1e46 1e48 1e4a 1e4c 1e4e 1e50 1e52 1e54 1e56 1e58 1e5a 1e5c 1e5e 1e60 1e62 1e64 1e66 1e68 1e6a 1e6c 1e6e 1e70 1e72 1e74 1e76 1e78 1e7a 1e7c 1e7e 1e80 1e82 1e84 1e86 1e88 1e8a 1e8c 1e8e 1e90 1e92 1e94 1ea0 1ea2 1ea4 1ea6 1ea8 1eaa 1eac 1eae 1eb0 1eb2 1eb4 1eb6 1eb8 1eba 1ebc 1ebe 1ec0 1ec2 1ec4 1ec6 1ec8 1eca 1ecc 1ece 1ed0 1ed2 1ed4 1ed6 1ed8 1eda 1edc 1ede 1ee0 1ee2 1ee4 1ee6 1ee8 1eea 1eec 1eee 1ef0 1ef2 1ef4 1ef6 1ef8 1f50 1f52 1f54 1f56 1f59 1f5b 1f5d 1f5f 1fbe 20a8 2107 2109 2124 2126 2128 2133 2145 3371 3373 3375 33c3 33cb 33d7 1d49c 1d4a2 1d546 1d6d3 1d70d 1d747 1d781 1d7bb}\u{0041}-\u{005a}\u{00c0}-\u{00d6}\u{00d8}-\u{00df}\u{0149}-\u{014a}\u{0178}-\u{0179}\u{0181}-\u{0182}\u{0186}-\u{0187}\u{0189}-\u{018b}\u{018e}-\u{0191}\u{0193}-\u{0194}\u{0196}-\u{0198}\u{019c}-\u{019d}\u{019f}-\u{01a0}\u{01a6}-\u{01a7}\u{01ae}-\u{01af}\u{01b1}-\u{01b3}\u{01b7}-\u{01b8}\u{01c4}-\u{01c5}\u{01c7}-\u{01c8}\u{01ca}-\u{01cb}\u{01f0}-\u{01f2}\u{01f6}-\u{01f8}\u{0388}-\u{038a}\u{038e}-\u{03a1}\u{03a3}-\u{03ab}\u{03d0}-\u{03d6}\u{03f0}-\u{03f2}\u{03f4}-\u{03f5}\u{0400}-\u{042f}\u{0531}-\u{0556}\u{1e96}-\u{1e9b}\u{1f08}-\u{1f0f}\u{1f18}-\u{1f1d}\u{1f28}-\u{1f2f}\u{1f38}-\u{1f3f}\u{1f48}-\u{1f4d}\u{1f68}-\u{1f6f}\u{1f80}-\u{1faf}\u{1fb2}-\u{1fb4}\u{1fb6}-\u{1fbc}\u{1fc2}-\u{1fc4}\u{1fc6}-\u{1fcc}\u{1fd2}-\u{1fd3}\u{1fd6}-\u{1fdb}\u{1fe2}-\u{1fe4}\u{1fe6}-\u{1fec}\u{1ff2}-\u{1ff4}\u{1ff6}-\u{1ffc}\u{2102}-\u{2103}\u{210b}-\u{210d}\u{2110}-\u{2112}\u{2115}-\u{2116}\u{2119}-\u{211d}\u{2120}-\u{2122}\u{212a}-\u{212d}\u{2130}-\u{2131}\u{213e}-\u{213f}\u{2160}-\u{216f}\u{24b6}-\u{24cf}\u{3380}-\u{3387}\u{338a}-\u{338c}\u{3390}-\u{3394}\u{33a9}-\u{33ac}\u{33b4}-\u{33c1}\u{33c6}-\u{33c9}\u{33cd}-\u{33ce}\u{33d9}-\u{33da}\u{33dc}-\u{33dd}\u{fb00}-\u{fb06}\u{fb13}-\u{fb17}\u{ff21}-\u{ff3a}\u{10400}-\u{10425}\u{1d400}-\u{1d419}\u{1d434}-\u{1d44d}\u{1d468}-\u{1d481}\u{1d49e}-\u{1d49f}\u{1d4a5}-\u{1d4a6}\u{1d4a9}-\u{1d4ac}\u{1d4ae}-\u{1d4b5}\u{1d4d0}-\u{1d4e9}\u{1d504}-\u{1d505}\u{1d507}-\u{1d50a}\u{1d50d}-\u{1d514}\u{1d516}-\u{1d51c}\u{1d538}-\u{1d539}\u{1d53b}-\u{1d53e}\u{1d540}-\u{1d544}\u{1d54a}-\u{1d550}\u{1d56c}-\u{1d585}\u{1d5a0}-\u{1d5b9}\u{1d5d4}-\u{1d5ed}\u{1d608}-\u{1d621}\u{1d63c}-\u{1d655}\u{1d670}-\u{1d689}\u{1d6a8}-\u{1d6c0}\u{1d6e2}-\u{1d6fa}\u{1d71c}-\u{1d734}\u{1d756}-\u{1d76e}\u{1d790}-\u{1d7a8}]/.freeze
19
+
20
+ # Mapping for case-folding used with no normalization \StringPrep\[\"B.3\"]
21
+ IN_B_3 = /[\u{00b5 0100 0102 0104 0106 0108 010a 010c 010e 0110 0112 0114 0116 0118 011a 011c 011e 0120 0122 0124 0126 0128 012a 012c 012e 0130 0132 0134 0136 0139 013b 013d 013f 0141 0143 0145 0147 014c 014e 0150 0152 0154 0156 0158 015a 015c 015e 0160 0162 0164 0166 0168 016a 016c 016e 0170 0172 0174 0176 017b 017d 017f 0184 01a2 01a4 01a9 01ac 01b5 01bc 01cd 01cf 01d1 01d3 01d5 01d7 01d9 01db 01de 01e0 01e2 01e4 01e6 01e8 01ea 01ec 01ee 01f4 01fa 01fc 01fe 0200 0202 0204 0206 0208 020a 020c 020e 0210 0212 0214 0216 0218 021a 021c 021e 0220 0222 0224 0226 0228 022a 022c 022e 0230 0232 0345 0386 038c 03b0 03c2 03d8 03da 03dc 03de 03e0 03e2 03e4 03e6 03e8 03ea 03ec 03ee 0460 0462 0464 0466 0468 046a 046c 046e 0470 0472 0474 0476 0478 047a 047c 047e 0480 048a 048c 048e 0490 0492 0494 0496 0498 049a 049c 049e 04a0 04a2 04a4 04a6 04a8 04aa 04ac 04ae 04b0 04b2 04b4 04b6 04b8 04ba 04bc 04be 04c1 04c3 04c5 04c7 04c9 04cb 04cd 04d0 04d2 04d4 04d6 04d8 04da 04dc 04de 04e0 04e2 04e4 04e6 04e8 04ea 04ec 04ee 04f0 04f2 04f4 04f8 0500 0502 0504 0506 0508 050a 050c 050e 0587 1e00 1e02 1e04 1e06 1e08 1e0a 1e0c 1e0e 1e10 1e12 1e14 1e16 1e18 1e1a 1e1c 1e1e 1e20 1e22 1e24 1e26 1e28 1e2a 1e2c 1e2e 1e30 1e32 1e34 1e36 1e38 1e3a 1e3c 1e3e 1e40 1e42 1e44 1e46 1e48 1e4a 1e4c 1e4e 1e50 1e52 1e54 1e56 1e58 1e5a 1e5c 1e5e 1e60 1e62 1e64 1e66 1e68 1e6a 1e6c 1e6e 1e70 1e72 1e74 1e76 1e78 1e7a 1e7c 1e7e 1e80 1e82 1e84 1e86 1e88 1e8a 1e8c 1e8e 1e90 1e92 1e94 1ea0 1ea2 1ea4 1ea6 1ea8 1eaa 1eac 1eae 1eb0 1eb2 1eb4 1eb6 1eb8 1eba 1ebc 1ebe 1ec0 1ec2 1ec4 1ec6 1ec8 1eca 1ecc 1ece 1ed0 1ed2 1ed4 1ed6 1ed8 1eda 1edc 1ede 1ee0 1ee2 1ee4 1ee6 1ee8 1eea 1eec 1eee 1ef0 1ef2 1ef4 1ef6 1ef8 1f50 1f52 1f54 1f56 1f59 1f5b 1f5d 1f5f 1fbe 2126}\u{0041}-\u{005a}\u{00c0}-\u{00d6}\u{00d8}-\u{00df}\u{0149}-\u{014a}\u{0178}-\u{0179}\u{0181}-\u{0182}\u{0186}-\u{0187}\u{0189}-\u{018b}\u{018e}-\u{0191}\u{0193}-\u{0194}\u{0196}-\u{0198}\u{019c}-\u{019d}\u{019f}-\u{01a0}\u{01a6}-\u{01a7}\u{01ae}-\u{01af}\u{01b1}-\u{01b3}\u{01b7}-\u{01b8}\u{01c4}-\u{01c5}\u{01c7}-\u{01c8}\u{01ca}-\u{01cb}\u{01f0}-\u{01f2}\u{01f6}-\u{01f8}\u{0388}-\u{038a}\u{038e}-\u{03a1}\u{03a3}-\u{03ab}\u{03d0}-\u{03d1}\u{03d5}-\u{03d6}\u{03f0}-\u{03f2}\u{03f4}-\u{03f5}\u{0400}-\u{042f}\u{0531}-\u{0556}\u{1e96}-\u{1e9b}\u{1f08}-\u{1f0f}\u{1f18}-\u{1f1d}\u{1f28}-\u{1f2f}\u{1f38}-\u{1f3f}\u{1f48}-\u{1f4d}\u{1f68}-\u{1f6f}\u{1f80}-\u{1faf}\u{1fb2}-\u{1fb4}\u{1fb6}-\u{1fbc}\u{1fc2}-\u{1fc4}\u{1fc6}-\u{1fcc}\u{1fd2}-\u{1fd3}\u{1fd6}-\u{1fdb}\u{1fe2}-\u{1fe4}\u{1fe6}-\u{1fec}\u{1ff2}-\u{1ff4}\u{1ff6}-\u{1ffc}\u{212a}-\u{212b}\u{2160}-\u{216f}\u{24b6}-\u{24cf}\u{fb00}-\u{fb06}\u{fb13}-\u{fb17}\u{ff21}-\u{ff3a}\u{10400}-\u{10425}]/.freeze
22
+
23
+ # Replacements for IN_B.1
24
+ MAP_B_1 = "".freeze
25
+
26
+ # Replacements for IN_B.2
27
+ MAP_B_2 = {"A"=>"a", "B"=>"b", "C"=>"c", "D"=>"d", "E"=>"e", "F"=>"f", "G"=>"g", "H"=>"h", "I"=>"i", "J"=>"j", "K"=>"k", "L"=>"l", "M"=>"m", "N"=>"n", "O"=>"o", "P"=>"p", "Q"=>"q", "R"=>"r", "S"=>"s", "T"=>"t", "U"=>"u", "V"=>"v", "W"=>"w", "X"=>"x", "Y"=>"y", "Z"=>"z", "µ"=>"μ", "À"=>"à", "Á"=>"á", "Â"=>"â", "Ã"=>"ã", "Ä"=>"ä", "Å"=>"å", "Æ"=>"æ", "Ç"=>"ç", "È"=>"è", "É"=>"é", "Ê"=>"ê", "Ë"=>"ë", "Ì"=>"ì", "Í"=>"í", "Î"=>"î", "Ï"=>"ï", "Ð"=>"ð", "Ñ"=>"ñ", "Ò"=>"ò", "Ó"=>"ó", "Ô"=>"ô", "Õ"=>"õ", "Ö"=>"ö", "Ø"=>"ø", "Ù"=>"ù", "Ú"=>"ú", "Û"=>"û", "Ü"=>"ü", "Ý"=>"ý", "Þ"=>"þ", "ß"=>"ss", "Ā"=>"ā", "Ă"=>"ă", "Ą"=>"ą", "Ć"=>"ć", "Ĉ"=>"ĉ", "Ċ"=>"ċ", "Č"=>"č", "Ď"=>"ď", "Đ"=>"đ", "Ē"=>"ē", "Ĕ"=>"ĕ", "Ė"=>"ė", "Ę"=>"ę", "Ě"=>"ě", "Ĝ"=>"ĝ", "Ğ"=>"ğ", "Ġ"=>"ġ", "Ģ"=>"ģ", "Ĥ"=>"ĥ", "Ħ"=>"ħ", "Ĩ"=>"ĩ", "Ī"=>"ī", "Ĭ"=>"ĭ", "Į"=>"į", "İ"=>"i̇", "IJ"=>"ij", "Ĵ"=>"ĵ", "Ķ"=>"ķ", "Ĺ"=>"ĺ", "Ļ"=>"ļ", "Ľ"=>"ľ", "Ŀ"=>"ŀ", "Ł"=>"ł", "Ń"=>"ń", "Ņ"=>"ņ", "Ň"=>"ň", "ʼn"=>"ʼn", "Ŋ"=>"ŋ", "Ō"=>"ō", "Ŏ"=>"ŏ", "Ő"=>"ő", "Œ"=>"œ", "Ŕ"=>"ŕ", "Ŗ"=>"ŗ", "Ř"=>"ř", "Ś"=>"ś", "Ŝ"=>"ŝ", "Ş"=>"ş", "Š"=>"š", "Ţ"=>"ţ", "Ť"=>"ť", "Ŧ"=>"ŧ", "Ũ"=>"ũ", "Ū"=>"ū", "Ŭ"=>"ŭ", "Ů"=>"ů", "Ű"=>"ű", "Ų"=>"ų", "Ŵ"=>"ŵ", "Ŷ"=>"ŷ", "Ÿ"=>"ÿ", "Ź"=>"ź", "Ż"=>"ż", "Ž"=>"ž", "ſ"=>"s", "Ɓ"=>"ɓ", "Ƃ"=>"ƃ", "Ƅ"=>"ƅ", "Ɔ"=>"ɔ", "Ƈ"=>"ƈ", "Ɖ"=>"ɖ", "Ɗ"=>"ɗ", "Ƌ"=>"ƌ", "Ǝ"=>"ǝ", "Ə"=>"ə", "Ɛ"=>"ɛ", "Ƒ"=>"ƒ", "Ɠ"=>"ɠ", "Ɣ"=>"ɣ", "Ɩ"=>"ɩ", "Ɨ"=>"ɨ", "Ƙ"=>"ƙ", "Ɯ"=>"ɯ", "Ɲ"=>"ɲ", "Ɵ"=>"ɵ", "Ơ"=>"ơ", "Ƣ"=>"ƣ", "Ƥ"=>"ƥ", "Ʀ"=>"ʀ", "Ƨ"=>"ƨ", "Ʃ"=>"ʃ", "Ƭ"=>"ƭ", "Ʈ"=>"ʈ", "Ư"=>"ư", "Ʊ"=>"ʊ", "Ʋ"=>"ʋ", "Ƴ"=>"ƴ", "Ƶ"=>"ƶ", "Ʒ"=>"ʒ", "Ƹ"=>"ƹ", "Ƽ"=>"ƽ", "DŽ"=>"dž", "Dž"=>"dž", "LJ"=>"lj", "Lj"=>"lj", "NJ"=>"nj", "Nj"=>"nj", "Ǎ"=>"ǎ", "Ǐ"=>"ǐ", "Ǒ"=>"ǒ", "Ǔ"=>"ǔ", "Ǖ"=>"ǖ", "Ǘ"=>"ǘ", "Ǚ"=>"ǚ", "Ǜ"=>"ǜ", "Ǟ"=>"ǟ", "Ǡ"=>"ǡ", "Ǣ"=>"ǣ", "Ǥ"=>"ǥ", "Ǧ"=>"ǧ", "Ǩ"=>"ǩ", "Ǫ"=>"ǫ", "Ǭ"=>"ǭ", "Ǯ"=>"ǯ", "ǰ"=>"ǰ", "DZ"=>"dz", "Dz"=>"dz", "Ǵ"=>"ǵ", "Ƕ"=>"ƕ", "Ƿ"=>"ƿ", "Ǹ"=>"ǹ", "Ǻ"=>"ǻ", "Ǽ"=>"ǽ", "Ǿ"=>"ǿ", "Ȁ"=>"ȁ", "Ȃ"=>"ȃ", "Ȅ"=>"ȅ", "Ȇ"=>"ȇ", "Ȉ"=>"ȉ", "Ȋ"=>"ȋ", "Ȍ"=>"ȍ", "Ȏ"=>"ȏ", "Ȑ"=>"ȑ", "Ȓ"=>"ȓ", "Ȕ"=>"ȕ", "Ȗ"=>"ȗ", "Ș"=>"ș", "Ț"=>"ț", "Ȝ"=>"ȝ", "Ȟ"=>"ȟ", "Ƞ"=>"ƞ", "Ȣ"=>"ȣ", "Ȥ"=>"ȥ", "Ȧ"=>"ȧ", "Ȩ"=>"ȩ", "Ȫ"=>"ȫ", "Ȭ"=>"ȭ", "Ȯ"=>"ȯ", "Ȱ"=>"ȱ", "Ȳ"=>"ȳ", "ͅ"=>"ι", "ͺ"=>" ι", "Ά"=>"ά", "Έ"=>"έ", "Ή"=>"ή", "Ί"=>"ί", "Ό"=>"ό", "Ύ"=>"ύ", "Ώ"=>"ώ", "ΐ"=>"ΐ", "Α"=>"α", "Β"=>"β", "Γ"=>"γ", "Δ"=>"δ", "Ε"=>"ε", "Ζ"=>"ζ", "Η"=>"η", "Θ"=>"θ", "Ι"=>"ι", "Κ"=>"κ", "Λ"=>"λ", "Μ"=>"μ", "Ν"=>"ν", "Ξ"=>"ξ", "Ο"=>"ο", "Π"=>"π", "Ρ"=>"ρ", "Σ"=>"σ", "Τ"=>"τ", "Υ"=>"υ", "Φ"=>"φ", "Χ"=>"χ", "Ψ"=>"ψ", "Ω"=>"ω", "Ϊ"=>"ϊ", "Ϋ"=>"ϋ", "ΰ"=>"ΰ", "ς"=>"σ", "ϐ"=>"β", "ϑ"=>"θ", "ϒ"=>"υ", "ϓ"=>"ύ", "ϔ"=>"ϋ", "ϕ"=>"φ", "ϖ"=>"π", "Ϙ"=>"ϙ", "Ϛ"=>"ϛ", "Ϝ"=>"ϝ", "Ϟ"=>"ϟ", "Ϡ"=>"ϡ", "Ϣ"=>"ϣ", "Ϥ"=>"ϥ", "Ϧ"=>"ϧ", "Ϩ"=>"ϩ", "Ϫ"=>"ϫ", "Ϭ"=>"ϭ", "Ϯ"=>"ϯ", "ϰ"=>"κ", "ϱ"=>"ρ", "ϲ"=>"σ", "ϴ"=>"θ", "ϵ"=>"ε", "Ѐ"=>"ѐ", "Ё"=>"ё", "Ђ"=>"ђ", "Ѓ"=>"ѓ", "Є"=>"є", "Ѕ"=>"ѕ", "І"=>"і", "Ї"=>"ї", "Ј"=>"ј", "Љ"=>"љ", "Њ"=>"њ", "Ћ"=>"ћ", "Ќ"=>"ќ", "Ѝ"=>"ѝ", "Ў"=>"ў", "Џ"=>"џ", "А"=>"а", "Б"=>"б", "В"=>"в", "Г"=>"г", "Д"=>"д", "Е"=>"е", "Ж"=>"ж", "З"=>"з", "И"=>"и", "Й"=>"й", "К"=>"к", "Л"=>"л", "М"=>"м", "Н"=>"н", "О"=>"о", "П"=>"п", "Р"=>"р", "С"=>"с", "Т"=>"т", "У"=>"у", "Ф"=>"ф", "Х"=>"х", "Ц"=>"ц", "Ч"=>"ч", "Ш"=>"ш", "Щ"=>"щ", "Ъ"=>"ъ", "Ы"=>"ы", "Ь"=>"ь", "Э"=>"э", "Ю"=>"ю", "Я"=>"я", "Ѡ"=>"ѡ", "Ѣ"=>"ѣ", "Ѥ"=>"ѥ", "Ѧ"=>"ѧ", "Ѩ"=>"ѩ", "Ѫ"=>"ѫ", "Ѭ"=>"ѭ", "Ѯ"=>"ѯ", "Ѱ"=>"ѱ", "Ѳ"=>"ѳ", "Ѵ"=>"ѵ", "Ѷ"=>"ѷ", "Ѹ"=>"ѹ", "Ѻ"=>"ѻ", "Ѽ"=>"ѽ", "Ѿ"=>"ѿ", "Ҁ"=>"ҁ", "Ҋ"=>"ҋ", "Ҍ"=>"ҍ", "Ҏ"=>"ҏ", "Ґ"=>"ґ", "Ғ"=>"ғ", "Ҕ"=>"ҕ", "Җ"=>"җ", "Ҙ"=>"ҙ", "Қ"=>"қ", "Ҝ"=>"ҝ", "Ҟ"=>"ҟ", "Ҡ"=>"ҡ", "Ң"=>"ң", "Ҥ"=>"ҥ", "Ҧ"=>"ҧ", "Ҩ"=>"ҩ", "Ҫ"=>"ҫ", "Ҭ"=>"ҭ", "Ү"=>"ү", "Ұ"=>"ұ", "Ҳ"=>"ҳ", "Ҵ"=>"ҵ", "Ҷ"=>"ҷ", "Ҹ"=>"ҹ", "Һ"=>"һ", "Ҽ"=>"ҽ", "Ҿ"=>"ҿ", "Ӂ"=>"ӂ", "Ӄ"=>"ӄ", "Ӆ"=>"ӆ", "Ӈ"=>"ӈ", "Ӊ"=>"ӊ", "Ӌ"=>"ӌ", "Ӎ"=>"ӎ", "Ӑ"=>"ӑ", "Ӓ"=>"ӓ", "Ӕ"=>"ӕ", "Ӗ"=>"ӗ", "Ә"=>"ә", "Ӛ"=>"ӛ", "Ӝ"=>"ӝ", "Ӟ"=>"ӟ", "Ӡ"=>"ӡ", "Ӣ"=>"ӣ", "Ӥ"=>"ӥ", "Ӧ"=>"ӧ", "Ө"=>"ө", "Ӫ"=>"ӫ", "Ӭ"=>"ӭ", "Ӯ"=>"ӯ", "Ӱ"=>"ӱ", "Ӳ"=>"ӳ", "Ӵ"=>"ӵ", "Ӹ"=>"ӹ", "Ԁ"=>"ԁ", "Ԃ"=>"ԃ", "Ԅ"=>"ԅ", "Ԇ"=>"ԇ", "Ԉ"=>"ԉ", "Ԋ"=>"ԋ", "Ԍ"=>"ԍ", "Ԏ"=>"ԏ", "Ա"=>"ա", "Բ"=>"բ", "Գ"=>"գ", "Դ"=>"դ", "Ե"=>"ե", "Զ"=>"զ", "Է"=>"է", "Ը"=>"ը", "Թ"=>"թ", "Ժ"=>"ժ", "Ի"=>"ի", "Լ"=>"լ", "Խ"=>"խ", "Ծ"=>"ծ", "Կ"=>"կ", "Հ"=>"հ", "Ձ"=>"ձ", "Ղ"=>"ղ", "Ճ"=>"ճ", "Մ"=>"մ", "Յ"=>"յ", "Ն"=>"ն", "Շ"=>"շ", "Ո"=>"ո", "Չ"=>"չ", "Պ"=>"պ", "Ջ"=>"ջ", "Ռ"=>"ռ", "Ս"=>"ս", "Վ"=>"վ", "Տ"=>"տ", "Ր"=>"ր", "Ց"=>"ց", "Ւ"=>"ւ", "Փ"=>"փ", "Ք"=>"ք", "Օ"=>"օ", "Ֆ"=>"ֆ", "և"=>"եւ", "Ḁ"=>"ḁ", "Ḃ"=>"ḃ", "Ḅ"=>"ḅ", "Ḇ"=>"ḇ", "Ḉ"=>"ḉ", "Ḋ"=>"ḋ", "Ḍ"=>"ḍ", "Ḏ"=>"ḏ", "Ḑ"=>"ḑ", "Ḓ"=>"ḓ", "Ḕ"=>"ḕ", "Ḗ"=>"ḗ", "Ḙ"=>"ḙ", "Ḛ"=>"ḛ", "Ḝ"=>"ḝ", "Ḟ"=>"ḟ", "Ḡ"=>"ḡ", "Ḣ"=>"ḣ", "Ḥ"=>"ḥ", "Ḧ"=>"ḧ", "Ḩ"=>"ḩ", "Ḫ"=>"ḫ", "Ḭ"=>"ḭ", "Ḯ"=>"ḯ", "Ḱ"=>"ḱ", "Ḳ"=>"ḳ", "Ḵ"=>"ḵ", "Ḷ"=>"ḷ", "Ḹ"=>"ḹ", "Ḻ"=>"ḻ", "Ḽ"=>"ḽ", "Ḿ"=>"ḿ", "Ṁ"=>"ṁ", "Ṃ"=>"ṃ", "Ṅ"=>"ṅ", "Ṇ"=>"ṇ", "Ṉ"=>"ṉ", "Ṋ"=>"ṋ", "Ṍ"=>"ṍ", "Ṏ"=>"ṏ", "Ṑ"=>"ṑ", "Ṓ"=>"ṓ", "Ṕ"=>"ṕ", "Ṗ"=>"ṗ", "Ṙ"=>"ṙ", "Ṛ"=>"ṛ", "Ṝ"=>"ṝ", "Ṟ"=>"ṟ", "Ṡ"=>"ṡ", "Ṣ"=>"ṣ", "Ṥ"=>"ṥ", "Ṧ"=>"ṧ", "Ṩ"=>"ṩ", "Ṫ"=>"ṫ", "Ṭ"=>"ṭ", "Ṯ"=>"ṯ", "Ṱ"=>"ṱ", "Ṳ"=>"ṳ", "Ṵ"=>"ṵ", "Ṷ"=>"ṷ", "Ṹ"=>"ṹ", "Ṻ"=>"ṻ", "Ṽ"=>"ṽ", "Ṿ"=>"ṿ", "Ẁ"=>"ẁ", "Ẃ"=>"ẃ", "Ẅ"=>"ẅ", "Ẇ"=>"ẇ", "Ẉ"=>"ẉ", "Ẋ"=>"ẋ", "Ẍ"=>"ẍ", "Ẏ"=>"ẏ", "Ẑ"=>"ẑ", "Ẓ"=>"ẓ", "Ẕ"=>"ẕ", "ẖ"=>"ẖ", "ẗ"=>"ẗ", "ẘ"=>"ẘ", "ẙ"=>"ẙ", "ẚ"=>"aʾ", "ẛ"=>"ṡ", "Ạ"=>"ạ", "Ả"=>"ả", "Ấ"=>"ấ", "Ầ"=>"ầ", "Ẩ"=>"ẩ", "Ẫ"=>"ẫ", "Ậ"=>"ậ", "Ắ"=>"ắ", "Ằ"=>"ằ", "Ẳ"=>"ẳ", "Ẵ"=>"ẵ", "Ặ"=>"ặ", "Ẹ"=>"ẹ", "Ẻ"=>"ẻ", "Ẽ"=>"ẽ", "Ế"=>"ế", "Ề"=>"ề", "Ể"=>"ể", "Ễ"=>"ễ", "Ệ"=>"ệ", "Ỉ"=>"ỉ", "Ị"=>"ị", "Ọ"=>"ọ", "Ỏ"=>"ỏ", "Ố"=>"ố", "Ồ"=>"ồ", "Ổ"=>"ổ", "Ỗ"=>"ỗ", "Ộ"=>"ộ", "Ớ"=>"ớ", "Ờ"=>"ờ", "Ở"=>"ở", "Ỡ"=>"ỡ", "Ợ"=>"ợ", "Ụ"=>"ụ", "Ủ"=>"ủ", "Ứ"=>"ứ", "Ừ"=>"ừ", "Ử"=>"ử", "Ữ"=>"ữ", "Ự"=>"ự", "Ỳ"=>"ỳ", "Ỵ"=>"ỵ", "Ỷ"=>"ỷ", "Ỹ"=>"ỹ", "Ἀ"=>"ἀ", "Ἁ"=>"ἁ", "Ἂ"=>"ἂ", "Ἃ"=>"ἃ", "Ἄ"=>"ἄ", "Ἅ"=>"ἅ", "Ἆ"=>"ἆ", "Ἇ"=>"ἇ", "Ἐ"=>"ἐ", "Ἑ"=>"ἑ", "Ἒ"=>"ἒ", "Ἓ"=>"ἓ", "Ἔ"=>"ἔ", "Ἕ"=>"ἕ", "Ἠ"=>"ἠ", "Ἡ"=>"ἡ", "Ἢ"=>"ἢ", "Ἣ"=>"ἣ", "Ἤ"=>"ἤ", "Ἥ"=>"ἥ", "Ἦ"=>"ἦ", "Ἧ"=>"ἧ", "Ἰ"=>"ἰ", "Ἱ"=>"ἱ", "Ἲ"=>"ἲ", "Ἳ"=>"ἳ", "Ἴ"=>"ἴ", "Ἵ"=>"ἵ", "Ἶ"=>"ἶ", "Ἷ"=>"ἷ", "Ὀ"=>"ὀ", "Ὁ"=>"ὁ", "Ὂ"=>"ὂ", "Ὃ"=>"ὃ", "Ὄ"=>"ὄ", "Ὅ"=>"ὅ", "ὐ"=>"ὐ", "ὒ"=>"ὒ", "ὔ"=>"ὔ", "ὖ"=>"ὖ", "Ὑ"=>"ὑ", "Ὓ"=>"ὓ", "Ὕ"=>"ὕ", "Ὗ"=>"ὗ", "Ὠ"=>"ὠ", "Ὡ"=>"ὡ", "Ὢ"=>"ὢ", "Ὣ"=>"ὣ", "Ὤ"=>"ὤ", "Ὥ"=>"ὥ", "Ὦ"=>"ὦ", "Ὧ"=>"ὧ", "ᾀ"=>"ἀι", "ᾁ"=>"ἁι", "ᾂ"=>"ἂι", "ᾃ"=>"ἃι", "ᾄ"=>"ἄι", "ᾅ"=>"ἅι", "ᾆ"=>"ἆι", "ᾇ"=>"ἇι", "ᾈ"=>"ἀι", "ᾉ"=>"ἁι", "ᾊ"=>"ἂι", "ᾋ"=>"ἃι", "ᾌ"=>"ἄι", "ᾍ"=>"ἅι", "ᾎ"=>"ἆι", "ᾏ"=>"ἇι", "ᾐ"=>"ἠι", "ᾑ"=>"ἡι", "ᾒ"=>"ἢι", "ᾓ"=>"ἣι", "ᾔ"=>"ἤι", "ᾕ"=>"ἥι", "ᾖ"=>"ἦι", "ᾗ"=>"ἧι", "ᾘ"=>"ἠι", "ᾙ"=>"ἡι", "ᾚ"=>"ἢι", "ᾛ"=>"ἣι", "ᾜ"=>"ἤι", "ᾝ"=>"ἥι", "ᾞ"=>"ἦι", "ᾟ"=>"ἧι", "ᾠ"=>"ὠι", "ᾡ"=>"ὡι", "ᾢ"=>"ὢι", "ᾣ"=>"ὣι", "ᾤ"=>"ὤι", "ᾥ"=>"ὥι", "ᾦ"=>"ὦι", "ᾧ"=>"ὧι", "ᾨ"=>"ὠι", "ᾩ"=>"ὡι", "ᾪ"=>"ὢι", "ᾫ"=>"ὣι", "ᾬ"=>"ὤι", "ᾭ"=>"ὥι", "ᾮ"=>"ὦι", "ᾯ"=>"ὧι", "ᾲ"=>"ὰι", "ᾳ"=>"αι", "ᾴ"=>"άι", "ᾶ"=>"ᾶ", "ᾷ"=>"ᾶι", "Ᾰ"=>"ᾰ", "Ᾱ"=>"ᾱ", "Ὰ"=>"ὰ", "Ά"=>"ά", "ᾼ"=>"αι", "ι"=>"ι", "ῂ"=>"ὴι", "ῃ"=>"ηι", "ῄ"=>"ήι", "ῆ"=>"ῆ", "ῇ"=>"ῆι", "Ὲ"=>"ὲ", "Έ"=>"έ", "Ὴ"=>"ὴ", "Ή"=>"ή", "ῌ"=>"ηι", "ῒ"=>"ῒ", "ΐ"=>"ΐ", "ῖ"=>"ῖ", "ῗ"=>"ῗ", "Ῐ"=>"ῐ", "Ῑ"=>"ῑ", "Ὶ"=>"ὶ", "Ί"=>"ί", "ῢ"=>"ῢ", "ΰ"=>"ΰ", "ῤ"=>"ῤ", "ῦ"=>"ῦ", "ῧ"=>"ῧ", "Ῠ"=>"ῠ", "Ῡ"=>"ῡ", "Ὺ"=>"ὺ", "Ύ"=>"ύ", "Ῥ"=>"ῥ", "ῲ"=>"ὼι", "ῳ"=>"ωι", "ῴ"=>"ώι", "ῶ"=>"ῶ", "ῷ"=>"ῶι", "Ὸ"=>"ὸ", "Ό"=>"ό", "Ὼ"=>"ὼ", "Ώ"=>"ώ", "ῼ"=>"ωι", "₨"=>"rs", "ℂ"=>"c", "℃"=>"°c", "ℇ"=>"ɛ", "℉"=>"°f", "ℋ"=>"h", "ℌ"=>"h", "ℍ"=>"h", "ℐ"=>"i", "ℑ"=>"i", "ℒ"=>"l", "ℕ"=>"n", "№"=>"no", "ℙ"=>"p", "ℚ"=>"q", "ℛ"=>"r", "ℜ"=>"r", "ℝ"=>"r", "℠"=>"sm", "℡"=>"tel", "™"=>"tm", "ℤ"=>"z", "Ω"=>"ω", "ℨ"=>"z", "K"=>"k", "Å"=>"å", "ℬ"=>"b", "ℭ"=>"c", "ℰ"=>"e", "ℱ"=>"f", "ℳ"=>"m", "ℾ"=>"γ", "ℿ"=>"π", "ⅅ"=>"d", "Ⅰ"=>"ⅰ", "Ⅱ"=>"ⅱ", "Ⅲ"=>"ⅲ", "Ⅳ"=>"ⅳ", "Ⅴ"=>"ⅴ", "Ⅵ"=>"ⅵ", "Ⅶ"=>"ⅶ", "Ⅷ"=>"ⅷ", "Ⅸ"=>"ⅸ", "Ⅹ"=>"ⅹ", "Ⅺ"=>"ⅺ", "Ⅻ"=>"ⅻ", "Ⅼ"=>"ⅼ", "Ⅽ"=>"ⅽ", "Ⅾ"=>"ⅾ", "Ⅿ"=>"ⅿ", "Ⓐ"=>"ⓐ", "Ⓑ"=>"ⓑ", "Ⓒ"=>"ⓒ", "Ⓓ"=>"ⓓ", "Ⓔ"=>"ⓔ", "Ⓕ"=>"ⓕ", "Ⓖ"=>"ⓖ", "Ⓗ"=>"ⓗ", "Ⓘ"=>"ⓘ", "Ⓙ"=>"ⓙ", "Ⓚ"=>"ⓚ", "Ⓛ"=>"ⓛ", "Ⓜ"=>"ⓜ", "Ⓝ"=>"ⓝ", "Ⓞ"=>"ⓞ", "Ⓟ"=>"ⓟ", "Ⓠ"=>"ⓠ", "Ⓡ"=>"ⓡ", "Ⓢ"=>"ⓢ", "Ⓣ"=>"ⓣ", "Ⓤ"=>"ⓤ", "Ⓥ"=>"ⓥ", "Ⓦ"=>"ⓦ", "Ⓧ"=>"ⓧ", "Ⓨ"=>"ⓨ", "Ⓩ"=>"ⓩ", "㍱"=>"hpa", "㍳"=>"au", "㍵"=>"ov", "㎀"=>"pa", "㎁"=>"na", "㎂"=>"μa", "㎃"=>"ma", "㎄"=>"ka", "㎅"=>"kb", "㎆"=>"mb", "㎇"=>"gb", "㎊"=>"pf", "㎋"=>"nf", "㎌"=>"μf", "㎐"=>"hz", "㎑"=>"khz", "㎒"=>"mhz", "㎓"=>"ghz", "㎔"=>"thz", "㎩"=>"pa", "㎪"=>"kpa", "㎫"=>"mpa", "㎬"=>"gpa", "㎴"=>"pv", "㎵"=>"nv", "㎶"=>"μv", "㎷"=>"mv", "㎸"=>"kv", "㎹"=>"mv", "㎺"=>"pw", "㎻"=>"nw", "㎼"=>"μw", "㎽"=>"mw", "㎾"=>"kw", "㎿"=>"mw", "㏀"=>"kω", "㏁"=>"mω", "㏃"=>"bq", "㏆"=>"c∕kg", "㏇"=>"co.", "㏈"=>"db", "㏉"=>"gy", "㏋"=>"hp", "㏍"=>"kk", "㏎"=>"km", "㏗"=>"ph", "㏙"=>"ppm", "㏚"=>"pr", "㏜"=>"sv", "㏝"=>"wb", "ff"=>"ff", "fi"=>"fi", "fl"=>"fl", "ffi"=>"ffi", "ffl"=>"ffl", "ſt"=>"st", "st"=>"st", "ﬓ"=>"մն", "ﬔ"=>"մե", "ﬕ"=>"մի", "ﬖ"=>"վն", "ﬗ"=>"մխ", "A"=>"a", "B"=>"b", "C"=>"c", "D"=>"d", "E"=>"e", "F"=>"f", "G"=>"g", "H"=>"h", "I"=>"i", "J"=>"j", "K"=>"k", "L"=>"l", "M"=>"m", "N"=>"n", "O"=>"o", "P"=>"p", "Q"=>"q", "R"=>"r", "S"=>"s", "T"=>"t", "U"=>"u", "V"=>"v", "W"=>"w", "X"=>"x", "Y"=>"y", "Z"=>"z", "𐐀"=>"𐐨", "𐐁"=>"𐐩", "𐐂"=>"𐐪", "𐐃"=>"𐐫", "𐐄"=>"𐐬", "𐐅"=>"𐐭", "𐐆"=>"𐐮", "𐐇"=>"𐐯", "𐐈"=>"𐐰", "𐐉"=>"𐐱", "𐐊"=>"𐐲", "𐐋"=>"𐐳", "𐐌"=>"𐐴", "𐐍"=>"𐐵", "𐐎"=>"𐐶", "𐐏"=>"𐐷", "𐐐"=>"𐐸", "𐐑"=>"𐐹", "𐐒"=>"𐐺", "𐐓"=>"𐐻", "𐐔"=>"𐐼", "𐐕"=>"𐐽", "𐐖"=>"𐐾", "𐐗"=>"𐐿", "𐐘"=>"𐑀", "𐐙"=>"𐑁", "𐐚"=>"𐑂", "𐐛"=>"𐑃", "𐐜"=>"𐑄", "𐐝"=>"𐑅", "𐐞"=>"𐑆", "𐐟"=>"𐑇", "𐐠"=>"𐑈", "𐐡"=>"𐑉", "𐐢"=>"𐑊", "𐐣"=>"𐑋", "𐐤"=>"𐑌", "𐐥"=>"𐑍", "𝐀"=>"a", "𝐁"=>"b", "𝐂"=>"c", "𝐃"=>"d", "𝐄"=>"e", "𝐅"=>"f", "𝐆"=>"g", "𝐇"=>"h", "𝐈"=>"i", "𝐉"=>"j", "𝐊"=>"k", "𝐋"=>"l", "𝐌"=>"m", "𝐍"=>"n", "𝐎"=>"o", "𝐏"=>"p", "𝐐"=>"q", "𝐑"=>"r", "𝐒"=>"s", "𝐓"=>"t", "𝐔"=>"u", "𝐕"=>"v", "𝐖"=>"w", "𝐗"=>"x", "𝐘"=>"y", "𝐙"=>"z", "𝐴"=>"a", "𝐵"=>"b", "𝐶"=>"c", "𝐷"=>"d", "𝐸"=>"e", "𝐹"=>"f", "𝐺"=>"g", "𝐻"=>"h", "𝐼"=>"i", "𝐽"=>"j", "𝐾"=>"k", "𝐿"=>"l", "𝑀"=>"m", "𝑁"=>"n", "𝑂"=>"o", "𝑃"=>"p", "𝑄"=>"q", "𝑅"=>"r", "𝑆"=>"s", "𝑇"=>"t", "𝑈"=>"u", "𝑉"=>"v", "𝑊"=>"w", "𝑋"=>"x", "𝑌"=>"y", "𝑍"=>"z", "𝑨"=>"a", "𝑩"=>"b", "𝑪"=>"c", "𝑫"=>"d", "𝑬"=>"e", "𝑭"=>"f", "𝑮"=>"g", "𝑯"=>"h", "𝑰"=>"i", "𝑱"=>"j", "𝑲"=>"k", "𝑳"=>"l", "𝑴"=>"m", "𝑵"=>"n", "𝑶"=>"o", "𝑷"=>"p", "𝑸"=>"q", "𝑹"=>"r", "𝑺"=>"s", "𝑻"=>"t", "𝑼"=>"u", "𝑽"=>"v", "𝑾"=>"w", "𝑿"=>"x", "𝒀"=>"y", "𝒁"=>"z", "𝒜"=>"a", "𝒞"=>"c", "𝒟"=>"d", "𝒢"=>"g", "𝒥"=>"j", "𝒦"=>"k", "𝒩"=>"n", "𝒪"=>"o", "𝒫"=>"p", "𝒬"=>"q", "𝒮"=>"s", "𝒯"=>"t", "𝒰"=>"u", "𝒱"=>"v", "𝒲"=>"w", "𝒳"=>"x", "𝒴"=>"y", "𝒵"=>"z", "𝓐"=>"a", "𝓑"=>"b", "𝓒"=>"c", "𝓓"=>"d", "𝓔"=>"e", "𝓕"=>"f", "𝓖"=>"g", "𝓗"=>"h", "𝓘"=>"i", "𝓙"=>"j", "𝓚"=>"k", "𝓛"=>"l", "𝓜"=>"m", "𝓝"=>"n", "𝓞"=>"o", "𝓟"=>"p", "𝓠"=>"q", "𝓡"=>"r", "𝓢"=>"s", "𝓣"=>"t", "𝓤"=>"u", "𝓥"=>"v", "𝓦"=>"w", "𝓧"=>"x", "𝓨"=>"y", "𝓩"=>"z", "𝔄"=>"a", "𝔅"=>"b", "𝔇"=>"d", "𝔈"=>"e", "𝔉"=>"f", "𝔊"=>"g", "𝔍"=>"j", "𝔎"=>"k", "𝔏"=>"l", "𝔐"=>"m", "𝔑"=>"n", "𝔒"=>"o", "𝔓"=>"p", "𝔔"=>"q", "𝔖"=>"s", "𝔗"=>"t", "𝔘"=>"u", "𝔙"=>"v", "𝔚"=>"w", "𝔛"=>"x", "𝔜"=>"y", "𝔸"=>"a", "𝔹"=>"b", "𝔻"=>"d", "𝔼"=>"e", "𝔽"=>"f", "𝔾"=>"g", "𝕀"=>"i", "𝕁"=>"j", "𝕂"=>"k", "𝕃"=>"l", "𝕄"=>"m", "𝕆"=>"o", "𝕊"=>"s", "𝕋"=>"t", "𝕌"=>"u", "𝕍"=>"v", "𝕎"=>"w", "𝕏"=>"x", "𝕐"=>"y", "𝕬"=>"a", "𝕭"=>"b", "𝕮"=>"c", "𝕯"=>"d", "𝕰"=>"e", "𝕱"=>"f", "𝕲"=>"g", "𝕳"=>"h", "𝕴"=>"i", "𝕵"=>"j", "𝕶"=>"k", "𝕷"=>"l", "𝕸"=>"m", "𝕹"=>"n", "𝕺"=>"o", "𝕻"=>"p", "𝕼"=>"q", "𝕽"=>"r", "𝕾"=>"s", "𝕿"=>"t", "𝖀"=>"u", "𝖁"=>"v", "𝖂"=>"w", "𝖃"=>"x", "𝖄"=>"y", "𝖅"=>"z", "𝖠"=>"a", "𝖡"=>"b", "𝖢"=>"c", "𝖣"=>"d", "𝖤"=>"e", "𝖥"=>"f", "𝖦"=>"g", "𝖧"=>"h", "𝖨"=>"i", "𝖩"=>"j", "𝖪"=>"k", "𝖫"=>"l", "𝖬"=>"m", "𝖭"=>"n", "𝖮"=>"o", "𝖯"=>"p", "𝖰"=>"q", "𝖱"=>"r", "𝖲"=>"s", "𝖳"=>"t", "𝖴"=>"u", "𝖵"=>"v", "𝖶"=>"w", "𝖷"=>"x", "𝖸"=>"y", "𝖹"=>"z", "𝗔"=>"a", "𝗕"=>"b", "𝗖"=>"c", "𝗗"=>"d", "𝗘"=>"e", "𝗙"=>"f", "𝗚"=>"g", "𝗛"=>"h", "𝗜"=>"i", "𝗝"=>"j", "𝗞"=>"k", "𝗟"=>"l", "𝗠"=>"m", "𝗡"=>"n", "𝗢"=>"o", "𝗣"=>"p", "𝗤"=>"q", "𝗥"=>"r", "𝗦"=>"s", "𝗧"=>"t", "𝗨"=>"u", "𝗩"=>"v", "𝗪"=>"w", "𝗫"=>"x", "𝗬"=>"y", "𝗭"=>"z", "𝘈"=>"a", "𝘉"=>"b", "𝘊"=>"c", "𝘋"=>"d", "𝘌"=>"e", "𝘍"=>"f", "𝘎"=>"g", "𝘏"=>"h", "𝘐"=>"i", "𝘑"=>"j", "𝘒"=>"k", "𝘓"=>"l", "𝘔"=>"m", "𝘕"=>"n", "𝘖"=>"o", "𝘗"=>"p", "𝘘"=>"q", "𝘙"=>"r", "𝘚"=>"s", "𝘛"=>"t", "𝘜"=>"u", "𝘝"=>"v", "𝘞"=>"w", "𝘟"=>"x", "𝘠"=>"y", "𝘡"=>"z", "𝘼"=>"a", "𝘽"=>"b", "𝘾"=>"c", "𝘿"=>"d", "𝙀"=>"e", "𝙁"=>"f", "𝙂"=>"g", "𝙃"=>"h", "𝙄"=>"i", "𝙅"=>"j", "𝙆"=>"k", "𝙇"=>"l", "𝙈"=>"m", "𝙉"=>"n", "𝙊"=>"o", "𝙋"=>"p", "𝙌"=>"q", "𝙍"=>"r", "𝙎"=>"s", "𝙏"=>"t", "𝙐"=>"u", "𝙑"=>"v", "𝙒"=>"w", "𝙓"=>"x", "𝙔"=>"y", "𝙕"=>"z", "𝙰"=>"a", "𝙱"=>"b", "𝙲"=>"c", "𝙳"=>"d", "𝙴"=>"e", "𝙵"=>"f", "𝙶"=>"g", "𝙷"=>"h", "𝙸"=>"i", "𝙹"=>"j", "𝙺"=>"k", "𝙻"=>"l", "𝙼"=>"m", "𝙽"=>"n", "𝙾"=>"o", "𝙿"=>"p", "𝚀"=>"q", "𝚁"=>"r", "𝚂"=>"s", "𝚃"=>"t", "𝚄"=>"u", "𝚅"=>"v", "𝚆"=>"w", "𝚇"=>"x", "𝚈"=>"y", "𝚉"=>"z", "𝚨"=>"α", "𝚩"=>"β", "𝚪"=>"γ", "𝚫"=>"δ", "𝚬"=>"ε", "𝚭"=>"ζ", "𝚮"=>"η", "𝚯"=>"θ", "𝚰"=>"ι", "𝚱"=>"κ", "𝚲"=>"λ", "𝚳"=>"μ", "𝚴"=>"ν", "𝚵"=>"ξ", "𝚶"=>"ο", "𝚷"=>"π", "𝚸"=>"ρ", "𝚹"=>"θ", "𝚺"=>"σ", "𝚻"=>"τ", "𝚼"=>"υ", "𝚽"=>"φ", "𝚾"=>"χ", "𝚿"=>"ψ", "𝛀"=>"ω", "𝛓"=>"σ", "𝛢"=>"α", "𝛣"=>"β", "𝛤"=>"γ", "𝛥"=>"δ", "𝛦"=>"ε", "𝛧"=>"ζ", "𝛨"=>"η", "𝛩"=>"θ", "𝛪"=>"ι", "𝛫"=>"κ", "𝛬"=>"λ", "𝛭"=>"μ", "𝛮"=>"ν", "𝛯"=>"ξ", "𝛰"=>"ο", "𝛱"=>"π", "𝛲"=>"ρ", "𝛳"=>"θ", "𝛴"=>"σ", "𝛵"=>"τ", "𝛶"=>"υ", "𝛷"=>"φ", "𝛸"=>"χ", "𝛹"=>"ψ", "𝛺"=>"ω", "𝜍"=>"σ", "𝜜"=>"α", "𝜝"=>"β", "𝜞"=>"γ", "𝜟"=>"δ", "𝜠"=>"ε", "𝜡"=>"ζ", "𝜢"=>"η", "𝜣"=>"θ", "𝜤"=>"ι", "𝜥"=>"κ", "𝜦"=>"λ", "𝜧"=>"μ", "𝜨"=>"ν", "𝜩"=>"ξ", "𝜪"=>"ο", "𝜫"=>"π", "𝜬"=>"ρ", "𝜭"=>"θ", "𝜮"=>"σ", "𝜯"=>"τ", "𝜰"=>"υ", "𝜱"=>"φ", "𝜲"=>"χ", "𝜳"=>"ψ", "𝜴"=>"ω", "𝝇"=>"σ", "𝝖"=>"α", "𝝗"=>"β", "𝝘"=>"γ", "𝝙"=>"δ", "𝝚"=>"ε", "𝝛"=>"ζ", "𝝜"=>"η", "𝝝"=>"θ", "𝝞"=>"ι", "𝝟"=>"κ", "𝝠"=>"λ", "𝝡"=>"μ", "𝝢"=>"ν", "𝝣"=>"ξ", "𝝤"=>"ο", "𝝥"=>"π", "𝝦"=>"ρ", "𝝧"=>"θ", "𝝨"=>"σ", "𝝩"=>"τ", "𝝪"=>"υ", "𝝫"=>"φ", "𝝬"=>"χ", "𝝭"=>"ψ", "𝝮"=>"ω", "𝞁"=>"σ", "𝞐"=>"α", "𝞑"=>"β", "𝞒"=>"γ", "𝞓"=>"δ", "𝞔"=>"ε", "𝞕"=>"ζ", "𝞖"=>"η", "𝞗"=>"θ", "𝞘"=>"ι", "𝞙"=>"κ", "𝞚"=>"λ", "𝞛"=>"μ", "𝞜"=>"ν", "𝞝"=>"ξ", "𝞞"=>"ο", "𝞟"=>"π", "𝞠"=>"ρ", "𝞡"=>"θ", "𝞢"=>"σ", "𝞣"=>"τ", "𝞤"=>"υ", "𝞥"=>"φ", "𝞦"=>"χ", "𝞧"=>"ψ", "𝞨"=>"ω", "𝞻"=>"σ"}.freeze
28
+
29
+ # Replacements for IN_B.3
30
+ MAP_B_3 = {"A"=>"a", "B"=>"b", "C"=>"c", "D"=>"d", "E"=>"e", "F"=>"f", "G"=>"g", "H"=>"h", "I"=>"i", "J"=>"j", "K"=>"k", "L"=>"l", "M"=>"m", "N"=>"n", "O"=>"o", "P"=>"p", "Q"=>"q", "R"=>"r", "S"=>"s", "T"=>"t", "U"=>"u", "V"=>"v", "W"=>"w", "X"=>"x", "Y"=>"y", "Z"=>"z", "µ"=>"μ", "À"=>"à", "Á"=>"á", "Â"=>"â", "Ã"=>"ã", "Ä"=>"ä", "Å"=>"å", "Æ"=>"æ", "Ç"=>"ç", "È"=>"è", "É"=>"é", "Ê"=>"ê", "Ë"=>"ë", "Ì"=>"ì", "Í"=>"í", "Î"=>"î", "Ï"=>"ï", "Ð"=>"ð", "Ñ"=>"ñ", "Ò"=>"ò", "Ó"=>"ó", "Ô"=>"ô", "Õ"=>"õ", "Ö"=>"ö", "Ø"=>"ø", "Ù"=>"ù", "Ú"=>"ú", "Û"=>"û", "Ü"=>"ü", "Ý"=>"ý", "Þ"=>"þ", "ß"=>"ss", "Ā"=>"ā", "Ă"=>"ă", "Ą"=>"ą", "Ć"=>"ć", "Ĉ"=>"ĉ", "Ċ"=>"ċ", "Č"=>"č", "Ď"=>"ď", "Đ"=>"đ", "Ē"=>"ē", "Ĕ"=>"ĕ", "Ė"=>"ė", "Ę"=>"ę", "Ě"=>"ě", "Ĝ"=>"ĝ", "Ğ"=>"ğ", "Ġ"=>"ġ", "Ģ"=>"ģ", "Ĥ"=>"ĥ", "Ħ"=>"ħ", "Ĩ"=>"ĩ", "Ī"=>"ī", "Ĭ"=>"ĭ", "Į"=>"į", "İ"=>"i̇", "IJ"=>"ij", "Ĵ"=>"ĵ", "Ķ"=>"ķ", "Ĺ"=>"ĺ", "Ļ"=>"ļ", "Ľ"=>"ľ", "Ŀ"=>"ŀ", "Ł"=>"ł", "Ń"=>"ń", "Ņ"=>"ņ", "Ň"=>"ň", "ʼn"=>"ʼn", "Ŋ"=>"ŋ", "Ō"=>"ō", "Ŏ"=>"ŏ", "Ő"=>"ő", "Œ"=>"œ", "Ŕ"=>"ŕ", "Ŗ"=>"ŗ", "Ř"=>"ř", "Ś"=>"ś", "Ŝ"=>"ŝ", "Ş"=>"ş", "Š"=>"š", "Ţ"=>"ţ", "Ť"=>"ť", "Ŧ"=>"ŧ", "Ũ"=>"ũ", "Ū"=>"ū", "Ŭ"=>"ŭ", "Ů"=>"ů", "Ű"=>"ű", "Ų"=>"ų", "Ŵ"=>"ŵ", "Ŷ"=>"ŷ", "Ÿ"=>"ÿ", "Ź"=>"ź", "Ż"=>"ż", "Ž"=>"ž", "ſ"=>"s", "Ɓ"=>"ɓ", "Ƃ"=>"ƃ", "Ƅ"=>"ƅ", "Ɔ"=>"ɔ", "Ƈ"=>"ƈ", "Ɖ"=>"ɖ", "Ɗ"=>"ɗ", "Ƌ"=>"ƌ", "Ǝ"=>"ǝ", "Ə"=>"ə", "Ɛ"=>"ɛ", "Ƒ"=>"ƒ", "Ɠ"=>"ɠ", "Ɣ"=>"ɣ", "Ɩ"=>"ɩ", "Ɨ"=>"ɨ", "Ƙ"=>"ƙ", "Ɯ"=>"ɯ", "Ɲ"=>"ɲ", "Ɵ"=>"ɵ", "Ơ"=>"ơ", "Ƣ"=>"ƣ", "Ƥ"=>"ƥ", "Ʀ"=>"ʀ", "Ƨ"=>"ƨ", "Ʃ"=>"ʃ", "Ƭ"=>"ƭ", "Ʈ"=>"ʈ", "Ư"=>"ư", "Ʊ"=>"ʊ", "Ʋ"=>"ʋ", "Ƴ"=>"ƴ", "Ƶ"=>"ƶ", "Ʒ"=>"ʒ", "Ƹ"=>"ƹ", "Ƽ"=>"ƽ", "DŽ"=>"dž", "Dž"=>"dž", "LJ"=>"lj", "Lj"=>"lj", "NJ"=>"nj", "Nj"=>"nj", "Ǎ"=>"ǎ", "Ǐ"=>"ǐ", "Ǒ"=>"ǒ", "Ǔ"=>"ǔ", "Ǖ"=>"ǖ", "Ǘ"=>"ǘ", "Ǚ"=>"ǚ", "Ǜ"=>"ǜ", "Ǟ"=>"ǟ", "Ǡ"=>"ǡ", "Ǣ"=>"ǣ", "Ǥ"=>"ǥ", "Ǧ"=>"ǧ", "Ǩ"=>"ǩ", "Ǫ"=>"ǫ", "Ǭ"=>"ǭ", "Ǯ"=>"ǯ", "ǰ"=>"ǰ", "DZ"=>"dz", "Dz"=>"dz", "Ǵ"=>"ǵ", "Ƕ"=>"ƕ", "Ƿ"=>"ƿ", "Ǹ"=>"ǹ", "Ǻ"=>"ǻ", "Ǽ"=>"ǽ", "Ǿ"=>"ǿ", "Ȁ"=>"ȁ", "Ȃ"=>"ȃ", "Ȅ"=>"ȅ", "Ȇ"=>"ȇ", "Ȉ"=>"ȉ", "Ȋ"=>"ȋ", "Ȍ"=>"ȍ", "Ȏ"=>"ȏ", "Ȑ"=>"ȑ", "Ȓ"=>"ȓ", "Ȕ"=>"ȕ", "Ȗ"=>"ȗ", "Ș"=>"ș", "Ț"=>"ț", "Ȝ"=>"ȝ", "Ȟ"=>"ȟ", "Ƞ"=>"ƞ", "Ȣ"=>"ȣ", "Ȥ"=>"ȥ", "Ȧ"=>"ȧ", "Ȩ"=>"ȩ", "Ȫ"=>"ȫ", "Ȭ"=>"ȭ", "Ȯ"=>"ȯ", "Ȱ"=>"ȱ", "Ȳ"=>"ȳ", "ͅ"=>"ι", "Ά"=>"ά", "Έ"=>"έ", "Ή"=>"ή", "Ί"=>"ί", "Ό"=>"ό", "Ύ"=>"ύ", "Ώ"=>"ώ", "ΐ"=>"ΐ", "Α"=>"α", "Β"=>"β", "Γ"=>"γ", "Δ"=>"δ", "Ε"=>"ε", "Ζ"=>"ζ", "Η"=>"η", "Θ"=>"θ", "Ι"=>"ι", "Κ"=>"κ", "Λ"=>"λ", "Μ"=>"μ", "Ν"=>"ν", "Ξ"=>"ξ", "Ο"=>"ο", "Π"=>"π", "Ρ"=>"ρ", "Σ"=>"σ", "Τ"=>"τ", "Υ"=>"υ", "Φ"=>"φ", "Χ"=>"χ", "Ψ"=>"ψ", "Ω"=>"ω", "Ϊ"=>"ϊ", "Ϋ"=>"ϋ", "ΰ"=>"ΰ", "ς"=>"σ", "ϐ"=>"β", "ϑ"=>"θ", "ϕ"=>"φ", "ϖ"=>"π", "Ϙ"=>"ϙ", "Ϛ"=>"ϛ", "Ϝ"=>"ϝ", "Ϟ"=>"ϟ", "Ϡ"=>"ϡ", "Ϣ"=>"ϣ", "Ϥ"=>"ϥ", "Ϧ"=>"ϧ", "Ϩ"=>"ϩ", "Ϫ"=>"ϫ", "Ϭ"=>"ϭ", "Ϯ"=>"ϯ", "ϰ"=>"κ", "ϱ"=>"ρ", "ϲ"=>"σ", "ϴ"=>"θ", "ϵ"=>"ε", "Ѐ"=>"ѐ", "Ё"=>"ё", "Ђ"=>"ђ", "Ѓ"=>"ѓ", "Є"=>"є", "Ѕ"=>"ѕ", "І"=>"і", "Ї"=>"ї", "Ј"=>"ј", "Љ"=>"љ", "Њ"=>"њ", "Ћ"=>"ћ", "Ќ"=>"ќ", "Ѝ"=>"ѝ", "Ў"=>"ў", "Џ"=>"џ", "А"=>"а", "Б"=>"б", "В"=>"в", "Г"=>"г", "Д"=>"д", "Е"=>"е", "Ж"=>"ж", "З"=>"з", "И"=>"и", "Й"=>"й", "К"=>"к", "Л"=>"л", "М"=>"м", "Н"=>"н", "О"=>"о", "П"=>"п", "Р"=>"р", "С"=>"с", "Т"=>"т", "У"=>"у", "Ф"=>"ф", "Х"=>"х", "Ц"=>"ц", "Ч"=>"ч", "Ш"=>"ш", "Щ"=>"щ", "Ъ"=>"ъ", "Ы"=>"ы", "Ь"=>"ь", "Э"=>"э", "Ю"=>"ю", "Я"=>"я", "Ѡ"=>"ѡ", "Ѣ"=>"ѣ", "Ѥ"=>"ѥ", "Ѧ"=>"ѧ", "Ѩ"=>"ѩ", "Ѫ"=>"ѫ", "Ѭ"=>"ѭ", "Ѯ"=>"ѯ", "Ѱ"=>"ѱ", "Ѳ"=>"ѳ", "Ѵ"=>"ѵ", "Ѷ"=>"ѷ", "Ѹ"=>"ѹ", "Ѻ"=>"ѻ", "Ѽ"=>"ѽ", "Ѿ"=>"ѿ", "Ҁ"=>"ҁ", "Ҋ"=>"ҋ", "Ҍ"=>"ҍ", "Ҏ"=>"ҏ", "Ґ"=>"ґ", "Ғ"=>"ғ", "Ҕ"=>"ҕ", "Җ"=>"җ", "Ҙ"=>"ҙ", "Қ"=>"қ", "Ҝ"=>"ҝ", "Ҟ"=>"ҟ", "Ҡ"=>"ҡ", "Ң"=>"ң", "Ҥ"=>"ҥ", "Ҧ"=>"ҧ", "Ҩ"=>"ҩ", "Ҫ"=>"ҫ", "Ҭ"=>"ҭ", "Ү"=>"ү", "Ұ"=>"ұ", "Ҳ"=>"ҳ", "Ҵ"=>"ҵ", "Ҷ"=>"ҷ", "Ҹ"=>"ҹ", "Һ"=>"һ", "Ҽ"=>"ҽ", "Ҿ"=>"ҿ", "Ӂ"=>"ӂ", "Ӄ"=>"ӄ", "Ӆ"=>"ӆ", "Ӈ"=>"ӈ", "Ӊ"=>"ӊ", "Ӌ"=>"ӌ", "Ӎ"=>"ӎ", "Ӑ"=>"ӑ", "Ӓ"=>"ӓ", "Ӕ"=>"ӕ", "Ӗ"=>"ӗ", "Ә"=>"ә", "Ӛ"=>"ӛ", "Ӝ"=>"ӝ", "Ӟ"=>"ӟ", "Ӡ"=>"ӡ", "Ӣ"=>"ӣ", "Ӥ"=>"ӥ", "Ӧ"=>"ӧ", "Ө"=>"ө", "Ӫ"=>"ӫ", "Ӭ"=>"ӭ", "Ӯ"=>"ӯ", "Ӱ"=>"ӱ", "Ӳ"=>"ӳ", "Ӵ"=>"ӵ", "Ӹ"=>"ӹ", "Ԁ"=>"ԁ", "Ԃ"=>"ԃ", "Ԅ"=>"ԅ", "Ԇ"=>"ԇ", "Ԉ"=>"ԉ", "Ԋ"=>"ԋ", "Ԍ"=>"ԍ", "Ԏ"=>"ԏ", "Ա"=>"ա", "Բ"=>"բ", "Գ"=>"գ", "Դ"=>"դ", "Ե"=>"ե", "Զ"=>"զ", "Է"=>"է", "Ը"=>"ը", "Թ"=>"թ", "Ժ"=>"ժ", "Ի"=>"ի", "Լ"=>"լ", "Խ"=>"խ", "Ծ"=>"ծ", "Կ"=>"կ", "Հ"=>"հ", "Ձ"=>"ձ", "Ղ"=>"ղ", "Ճ"=>"ճ", "Մ"=>"մ", "Յ"=>"յ", "Ն"=>"ն", "Շ"=>"շ", "Ո"=>"ո", "Չ"=>"չ", "Պ"=>"պ", "Ջ"=>"ջ", "Ռ"=>"ռ", "Ս"=>"ս", "Վ"=>"վ", "Տ"=>"տ", "Ր"=>"ր", "Ց"=>"ց", "Ւ"=>"ւ", "Փ"=>"փ", "Ք"=>"ք", "Օ"=>"օ", "Ֆ"=>"ֆ", "և"=>"եւ", "Ḁ"=>"ḁ", "Ḃ"=>"ḃ", "Ḅ"=>"ḅ", "Ḇ"=>"ḇ", "Ḉ"=>"ḉ", "Ḋ"=>"ḋ", "Ḍ"=>"ḍ", "Ḏ"=>"ḏ", "Ḑ"=>"ḑ", "Ḓ"=>"ḓ", "Ḕ"=>"ḕ", "Ḗ"=>"ḗ", "Ḙ"=>"ḙ", "Ḛ"=>"ḛ", "Ḝ"=>"ḝ", "Ḟ"=>"ḟ", "Ḡ"=>"ḡ", "Ḣ"=>"ḣ", "Ḥ"=>"ḥ", "Ḧ"=>"ḧ", "Ḩ"=>"ḩ", "Ḫ"=>"ḫ", "Ḭ"=>"ḭ", "Ḯ"=>"ḯ", "Ḱ"=>"ḱ", "Ḳ"=>"ḳ", "Ḵ"=>"ḵ", "Ḷ"=>"ḷ", "Ḹ"=>"ḹ", "Ḻ"=>"ḻ", "Ḽ"=>"ḽ", "Ḿ"=>"ḿ", "Ṁ"=>"ṁ", "Ṃ"=>"ṃ", "Ṅ"=>"ṅ", "Ṇ"=>"ṇ", "Ṉ"=>"ṉ", "Ṋ"=>"ṋ", "Ṍ"=>"ṍ", "Ṏ"=>"ṏ", "Ṑ"=>"ṑ", "Ṓ"=>"ṓ", "Ṕ"=>"ṕ", "Ṗ"=>"ṗ", "Ṙ"=>"ṙ", "Ṛ"=>"ṛ", "Ṝ"=>"ṝ", "Ṟ"=>"ṟ", "Ṡ"=>"ṡ", "Ṣ"=>"ṣ", "Ṥ"=>"ṥ", "Ṧ"=>"ṧ", "Ṩ"=>"ṩ", "Ṫ"=>"ṫ", "Ṭ"=>"ṭ", "Ṯ"=>"ṯ", "Ṱ"=>"ṱ", "Ṳ"=>"ṳ", "Ṵ"=>"ṵ", "Ṷ"=>"ṷ", "Ṹ"=>"ṹ", "Ṻ"=>"ṻ", "Ṽ"=>"ṽ", "Ṿ"=>"ṿ", "Ẁ"=>"ẁ", "Ẃ"=>"ẃ", "Ẅ"=>"ẅ", "Ẇ"=>"ẇ", "Ẉ"=>"ẉ", "Ẋ"=>"ẋ", "Ẍ"=>"ẍ", "Ẏ"=>"ẏ", "Ẑ"=>"ẑ", "Ẓ"=>"ẓ", "Ẕ"=>"ẕ", "ẖ"=>"ẖ", "ẗ"=>"ẗ", "ẘ"=>"ẘ", "ẙ"=>"ẙ", "ẚ"=>"aʾ", "ẛ"=>"ṡ", "Ạ"=>"ạ", "Ả"=>"ả", "Ấ"=>"ấ", "Ầ"=>"ầ", "Ẩ"=>"ẩ", "Ẫ"=>"ẫ", "Ậ"=>"ậ", "Ắ"=>"ắ", "Ằ"=>"ằ", "Ẳ"=>"ẳ", "Ẵ"=>"ẵ", "Ặ"=>"ặ", "Ẹ"=>"ẹ", "Ẻ"=>"ẻ", "Ẽ"=>"ẽ", "Ế"=>"ế", "Ề"=>"ề", "Ể"=>"ể", "Ễ"=>"ễ", "Ệ"=>"ệ", "Ỉ"=>"ỉ", "Ị"=>"ị", "Ọ"=>"ọ", "Ỏ"=>"ỏ", "Ố"=>"ố", "Ồ"=>"ồ", "Ổ"=>"ổ", "Ỗ"=>"ỗ", "Ộ"=>"ộ", "Ớ"=>"ớ", "Ờ"=>"ờ", "Ở"=>"ở", "Ỡ"=>"ỡ", "Ợ"=>"ợ", "Ụ"=>"ụ", "Ủ"=>"ủ", "Ứ"=>"ứ", "Ừ"=>"ừ", "Ử"=>"ử", "Ữ"=>"ữ", "Ự"=>"ự", "Ỳ"=>"ỳ", "Ỵ"=>"ỵ", "Ỷ"=>"ỷ", "Ỹ"=>"ỹ", "Ἀ"=>"ἀ", "Ἁ"=>"ἁ", "Ἂ"=>"ἂ", "Ἃ"=>"ἃ", "Ἄ"=>"ἄ", "Ἅ"=>"ἅ", "Ἆ"=>"ἆ", "Ἇ"=>"ἇ", "Ἐ"=>"ἐ", "Ἑ"=>"ἑ", "Ἒ"=>"ἒ", "Ἓ"=>"ἓ", "Ἔ"=>"ἔ", "Ἕ"=>"ἕ", "Ἠ"=>"ἠ", "Ἡ"=>"ἡ", "Ἢ"=>"ἢ", "Ἣ"=>"ἣ", "Ἤ"=>"ἤ", "Ἥ"=>"ἥ", "Ἦ"=>"ἦ", "Ἧ"=>"ἧ", "Ἰ"=>"ἰ", "Ἱ"=>"ἱ", "Ἲ"=>"ἲ", "Ἳ"=>"ἳ", "Ἴ"=>"ἴ", "Ἵ"=>"ἵ", "Ἶ"=>"ἶ", "Ἷ"=>"ἷ", "Ὀ"=>"ὀ", "Ὁ"=>"ὁ", "Ὂ"=>"ὂ", "Ὃ"=>"ὃ", "Ὄ"=>"ὄ", "Ὅ"=>"ὅ", "ὐ"=>"ὐ", "ὒ"=>"ὒ", "ὔ"=>"ὔ", "ὖ"=>"ὖ", "Ὑ"=>"ὑ", "Ὓ"=>"ὓ", "Ὕ"=>"ὕ", "Ὗ"=>"ὗ", "Ὠ"=>"ὠ", "Ὡ"=>"ὡ", "Ὢ"=>"ὢ", "Ὣ"=>"ὣ", "Ὤ"=>"ὤ", "Ὥ"=>"ὥ", "Ὦ"=>"ὦ", "Ὧ"=>"ὧ", "ᾀ"=>"ἀι", "ᾁ"=>"ἁι", "ᾂ"=>"ἂι", "ᾃ"=>"ἃι", "ᾄ"=>"ἄι", "ᾅ"=>"ἅι", "ᾆ"=>"ἆι", "ᾇ"=>"ἇι", "ᾈ"=>"ἀι", "ᾉ"=>"ἁι", "ᾊ"=>"ἂι", "ᾋ"=>"ἃι", "ᾌ"=>"ἄι", "ᾍ"=>"ἅι", "ᾎ"=>"ἆι", "ᾏ"=>"ἇι", "ᾐ"=>"ἠι", "ᾑ"=>"ἡι", "ᾒ"=>"ἢι", "ᾓ"=>"ἣι", "ᾔ"=>"ἤι", "ᾕ"=>"ἥι", "ᾖ"=>"ἦι", "ᾗ"=>"ἧι", "ᾘ"=>"ἠι", "ᾙ"=>"ἡι", "ᾚ"=>"ἢι", "ᾛ"=>"ἣι", "ᾜ"=>"ἤι", "ᾝ"=>"ἥι", "ᾞ"=>"ἦι", "ᾟ"=>"ἧι", "ᾠ"=>"ὠι", "ᾡ"=>"ὡι", "ᾢ"=>"ὢι", "ᾣ"=>"ὣι", "ᾤ"=>"ὤι", "ᾥ"=>"ὥι", "ᾦ"=>"ὦι", "ᾧ"=>"ὧι", "ᾨ"=>"ὠι", "ᾩ"=>"ὡι", "ᾪ"=>"ὢι", "ᾫ"=>"ὣι", "ᾬ"=>"ὤι", "ᾭ"=>"ὥι", "ᾮ"=>"ὦι", "ᾯ"=>"ὧι", "ᾲ"=>"ὰι", "ᾳ"=>"αι", "ᾴ"=>"άι", "ᾶ"=>"ᾶ", "ᾷ"=>"ᾶι", "Ᾰ"=>"ᾰ", "Ᾱ"=>"ᾱ", "Ὰ"=>"ὰ", "Ά"=>"ά", "ᾼ"=>"αι", "ι"=>"ι", "ῂ"=>"ὴι", "ῃ"=>"ηι", "ῄ"=>"ήι", "ῆ"=>"ῆ", "ῇ"=>"ῆι", "Ὲ"=>"ὲ", "Έ"=>"έ", "Ὴ"=>"ὴ", "Ή"=>"ή", "ῌ"=>"ηι", "ῒ"=>"ῒ", "ΐ"=>"ΐ", "ῖ"=>"ῖ", "ῗ"=>"ῗ", "Ῐ"=>"ῐ", "Ῑ"=>"ῑ", "Ὶ"=>"ὶ", "Ί"=>"ί", "ῢ"=>"ῢ", "ΰ"=>"ΰ", "ῤ"=>"ῤ", "ῦ"=>"ῦ", "ῧ"=>"ῧ", "Ῠ"=>"ῠ", "Ῡ"=>"ῡ", "Ὺ"=>"ὺ", "Ύ"=>"ύ", "Ῥ"=>"ῥ", "ῲ"=>"ὼι", "ῳ"=>"ωι", "ῴ"=>"ώι", "ῶ"=>"ῶ", "ῷ"=>"ῶι", "Ὸ"=>"ὸ", "Ό"=>"ό", "Ὼ"=>"ὼ", "Ώ"=>"ώ", "ῼ"=>"ωι", "Ω"=>"ω", "K"=>"k", "Å"=>"å", "Ⅰ"=>"ⅰ", "Ⅱ"=>"ⅱ", "Ⅲ"=>"ⅲ", "Ⅳ"=>"ⅳ", "Ⅴ"=>"ⅴ", "Ⅵ"=>"ⅵ", "Ⅶ"=>"ⅶ", "Ⅷ"=>"ⅷ", "Ⅸ"=>"ⅸ", "Ⅹ"=>"ⅹ", "Ⅺ"=>"ⅺ", "Ⅻ"=>"ⅻ", "Ⅼ"=>"ⅼ", "Ⅽ"=>"ⅽ", "Ⅾ"=>"ⅾ", "Ⅿ"=>"ⅿ", "Ⓐ"=>"ⓐ", "Ⓑ"=>"ⓑ", "Ⓒ"=>"ⓒ", "Ⓓ"=>"ⓓ", "Ⓔ"=>"ⓔ", "Ⓕ"=>"ⓕ", "Ⓖ"=>"ⓖ", "Ⓗ"=>"ⓗ", "Ⓘ"=>"ⓘ", "Ⓙ"=>"ⓙ", "Ⓚ"=>"ⓚ", "Ⓛ"=>"ⓛ", "Ⓜ"=>"ⓜ", "Ⓝ"=>"ⓝ", "Ⓞ"=>"ⓞ", "Ⓟ"=>"ⓟ", "Ⓠ"=>"ⓠ", "Ⓡ"=>"ⓡ", "Ⓢ"=>"ⓢ", "Ⓣ"=>"ⓣ", "Ⓤ"=>"ⓤ", "Ⓥ"=>"ⓥ", "Ⓦ"=>"ⓦ", "Ⓧ"=>"ⓧ", "Ⓨ"=>"ⓨ", "Ⓩ"=>"ⓩ", "ff"=>"ff", "fi"=>"fi", "fl"=>"fl", "ffi"=>"ffi", "ffl"=>"ffl", "ſt"=>"st", "st"=>"st", "ﬓ"=>"մն", "ﬔ"=>"մե", "ﬕ"=>"մի", "ﬖ"=>"վն", "ﬗ"=>"մխ", "A"=>"a", "B"=>"b", "C"=>"c", "D"=>"d", "E"=>"e", "F"=>"f", "G"=>"g", "H"=>"h", "I"=>"i", "J"=>"j", "K"=>"k", "L"=>"l", "M"=>"m", "N"=>"n", "O"=>"o", "P"=>"p", "Q"=>"q", "R"=>"r", "S"=>"s", "T"=>"t", "U"=>"u", "V"=>"v", "W"=>"w", "X"=>"x", "Y"=>"y", "Z"=>"z", "𐐀"=>"𐐨", "𐐁"=>"𐐩", "𐐂"=>"𐐪", "𐐃"=>"𐐫", "𐐄"=>"𐐬", "𐐅"=>"𐐭", "𐐆"=>"𐐮", "𐐇"=>"𐐯", "𐐈"=>"𐐰", "𐐉"=>"𐐱", "𐐊"=>"𐐲", "𐐋"=>"𐐳", "𐐌"=>"𐐴", "𐐍"=>"𐐵", "𐐎"=>"𐐶", "𐐏"=>"𐐷", "𐐐"=>"𐐸", "𐐑"=>"𐐹", "𐐒"=>"𐐺", "𐐓"=>"𐐻", "𐐔"=>"𐐼", "𐐕"=>"𐐽", "𐐖"=>"𐐾", "𐐗"=>"𐐿", "𐐘"=>"𐑀", "𐐙"=>"𐑁", "𐐚"=>"𐑂", "𐐛"=>"𐑃", "𐐜"=>"𐑄", "𐐝"=>"𐑅", "𐐞"=>"𐑆", "𐐟"=>"𐑇", "𐐠"=>"𐑈", "𐐡"=>"𐑉", "𐐢"=>"𐑊", "𐐣"=>"𐑋", "𐐤"=>"𐑌", "𐐥"=>"𐑍"}.freeze
31
+
32
+ # ASCII space characters \StringPrep\[\"C.1.1\"]
33
+ IN_C_1_1 = / /.freeze
34
+
35
+ # Non-ASCII space characters \StringPrep\[\"C.1.2\"]
36
+ IN_C_1_2 = /[\u200b\p{Zs}&&[^ ]]/.freeze
37
+
38
+ # ASCII control characters \StringPrep\[\"C.2.1\"]
39
+ IN_C_2_1 = /[\x00-\x1f\x7f]/.freeze
40
+
41
+ # Non-ASCII control characters \StringPrep\[\"C.2.2\"]
42
+ IN_C_2_2 = /[\u{06dd 070f 180e feff}\u{0080}-\u{009f}\u{200c}-\u{200d}\u{2028}-\u{2029}\u{2060}-\u{2063}\u{206a}-\u{206f}\u{fff9}-\u{fffc}\u{1d173}-\u{1d17a}]/.freeze
43
+
44
+ # Private use \StringPrep\[\"C.3\"]
45
+ IN_C_3 = /\p{private use}/.freeze
46
+
47
+ # Non-character code points \StringPrep\[\"C.4\"]
48
+ IN_C_4 = /\p{noncharacter code point}/.freeze
49
+
50
+ # Surrogate codes \StringPrep\[\"C.5\"]
51
+ IN_C_5 = /\p{surrogate}/.freeze
52
+
53
+ # Inappropriate for plain text \StringPrep\[\"C.6\"]
54
+ IN_C_6 = /[\p{in specials}&&\p{AGE=3.2}&&\p{^NChar}]/.freeze
55
+
56
+ # Inappropriate for canonical representation \StringPrep\[\"C.7\"]
57
+ IN_C_7 = /[\p{in ideographic description characters}&&\p{AGE=3.2}]/.freeze
58
+
59
+ # Change display properties or are deprecated \StringPrep\[\"C.8\"]
60
+ IN_C_8 = /[\u{0340}-\u{0341}\u{200e}-\u{200f}\u{202a}-\u{202e}\u{206a}-\u{206f}]/.freeze
61
+
62
+ # Tagging characters \StringPrep\[\"C.9\"]
63
+ IN_C_9 = /[\p{in Tags}&&\p{AGE=3.2}]/.freeze
64
+
65
+ # Characters with bidirectional property "R" or "AL" \StringPrep\[\"D.1\"]
66
+ IN_D_1 = /[\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]/.freeze
67
+
68
+ # Used to check req3 of bidirectional checks
69
+ # Matches the negation of the D.1 table
70
+ IN_D_1_NEGATED = /[^\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]/.freeze
71
+
72
+ # Characters with bidirectional property "L" \StringPrep\[\"D.2\"]
73
+ IN_D_2 = /[\u{00aa 00b5 00ba 02ee 037a 0386 038c 0589 0903 0950 09b2 09d7 0a5e 0a83 0a8d 0ac9 0ad0 0ae0 0b40 0b57 0b83 0b9c 0bd7 0cbe 0cde 0d57 0dbd 0e84 0e8a 0e8d 0ea5 0ea7 0ebd 0ec6 0f36 0f38 0f7f 0f85 0fcf 102c 1031 1038 10fb 1248 1258 1288 12b0 12c0 1310 17dc 1f59 1f5b 1f5d 1fbe 200e 2071 207f 2102 2107 2115 2124 2126 2128 2395 1d4a2 1d4bb 1d546}\u{0041}-\u{005a}\u{0061}-\u{007a}\u{00c0}-\u{00d6}\u{00d8}-\u{00f6}\u{00f8}-\u{0220}\u{0222}-\u{0233}\u{0250}-\u{02ad}\u{02b0}-\u{02b8}\u{02bb}-\u{02c1}\u{02d0}-\u{02d1}\u{02e0}-\u{02e4}\u{0388}-\u{038a}\u{038e}-\u{03a1}\u{03a3}-\u{03ce}\u{03d0}-\u{03f5}\u{0400}-\u{0482}\u{048a}-\u{04ce}\u{04d0}-\u{04f5}\u{04f8}-\u{04f9}\u{0500}-\u{050f}\u{0531}-\u{0556}\u{0559}-\u{055f}\u{0561}-\u{0587}\u{0905}-\u{0939}\u{093d}-\u{0940}\u{0949}-\u{094c}\u{0958}-\u{0961}\u{0964}-\u{0970}\u{0982}-\u{0983}\u{0985}-\u{098c}\u{098f}-\u{0990}\u{0993}-\u{09a8}\u{09aa}-\u{09b0}\u{09b6}-\u{09b9}\u{09be}-\u{09c0}\u{09c7}-\u{09c8}\u{09cb}-\u{09cc}\u{09dc}-\u{09dd}\u{09df}-\u{09e1}\u{09e6}-\u{09f1}\u{09f4}-\u{09fa}\u{0a05}-\u{0a0a}\u{0a0f}-\u{0a10}\u{0a13}-\u{0a28}\u{0a2a}-\u{0a30}\u{0a32}-\u{0a33}\u{0a35}-\u{0a36}\u{0a38}-\u{0a39}\u{0a3e}-\u{0a40}\u{0a59}-\u{0a5c}\u{0a66}-\u{0a6f}\u{0a72}-\u{0a74}\u{0a85}-\u{0a8b}\u{0a8f}-\u{0a91}\u{0a93}-\u{0aa8}\u{0aaa}-\u{0ab0}\u{0ab2}-\u{0ab3}\u{0ab5}-\u{0ab9}\u{0abd}-\u{0ac0}\u{0acb}-\u{0acc}\u{0ae6}-\u{0aef}\u{0b02}-\u{0b03}\u{0b05}-\u{0b0c}\u{0b0f}-\u{0b10}\u{0b13}-\u{0b28}\u{0b2a}-\u{0b30}\u{0b32}-\u{0b33}\u{0b36}-\u{0b39}\u{0b3d}-\u{0b3e}\u{0b47}-\u{0b48}\u{0b4b}-\u{0b4c}\u{0b5c}-\u{0b5d}\u{0b5f}-\u{0b61}\u{0b66}-\u{0b70}\u{0b85}-\u{0b8a}\u{0b8e}-\u{0b90}\u{0b92}-\u{0b95}\u{0b99}-\u{0b9a}\u{0b9e}-\u{0b9f}\u{0ba3}-\u{0ba4}\u{0ba8}-\u{0baa}\u{0bae}-\u{0bb5}\u{0bb7}-\u{0bb9}\u{0bbe}-\u{0bbf}\u{0bc1}-\u{0bc2}\u{0bc6}-\u{0bc8}\u{0bca}-\u{0bcc}\u{0be7}-\u{0bf2}\u{0c01}-\u{0c03}\u{0c05}-\u{0c0c}\u{0c0e}-\u{0c10}\u{0c12}-\u{0c28}\u{0c2a}-\u{0c33}\u{0c35}-\u{0c39}\u{0c41}-\u{0c44}\u{0c60}-\u{0c61}\u{0c66}-\u{0c6f}\u{0c82}-\u{0c83}\u{0c85}-\u{0c8c}\u{0c8e}-\u{0c90}\u{0c92}-\u{0ca8}\u{0caa}-\u{0cb3}\u{0cb5}-\u{0cb9}\u{0cc0}-\u{0cc4}\u{0cc7}-\u{0cc8}\u{0cca}-\u{0ccb}\u{0cd5}-\u{0cd6}\u{0ce0}-\u{0ce1}\u{0ce6}-\u{0cef}\u{0d02}-\u{0d03}\u{0d05}-\u{0d0c}\u{0d0e}-\u{0d10}\u{0d12}-\u{0d28}\u{0d2a}-\u{0d39}\u{0d3e}-\u{0d40}\u{0d46}-\u{0d48}\u{0d4a}-\u{0d4c}\u{0d60}-\u{0d61}\u{0d66}-\u{0d6f}\u{0d82}-\u{0d83}\u{0d85}-\u{0d96}\u{0d9a}-\u{0db1}\u{0db3}-\u{0dbb}\u{0dc0}-\u{0dc6}\u{0dcf}-\u{0dd1}\u{0dd8}-\u{0ddf}\u{0df2}-\u{0df4}\u{0e01}-\u{0e30}\u{0e32}-\u{0e33}\u{0e40}-\u{0e46}\u{0e4f}-\u{0e5b}\u{0e81}-\u{0e82}\u{0e87}-\u{0e88}\u{0e94}-\u{0e97}\u{0e99}-\u{0e9f}\u{0ea1}-\u{0ea3}\u{0eaa}-\u{0eab}\u{0ead}-\u{0eb0}\u{0eb2}-\u{0eb3}\u{0ec0}-\u{0ec4}\u{0ed0}-\u{0ed9}\u{0edc}-\u{0edd}\u{0f00}-\u{0f17}\u{0f1a}-\u{0f34}\u{0f3e}-\u{0f47}\u{0f49}-\u{0f6a}\u{0f88}-\u{0f8b}\u{0fbe}-\u{0fc5}\u{0fc7}-\u{0fcc}\u{1000}-\u{1021}\u{1023}-\u{1027}\u{1029}-\u{102a}\u{1040}-\u{1057}\u{10a0}-\u{10c5}\u{10d0}-\u{10f8}\u{1100}-\u{1159}\u{115f}-\u{11a2}\u{11a8}-\u{11f9}\u{1200}-\u{1206}\u{1208}-\u{1246}\u{124a}-\u{124d}\u{1250}-\u{1256}\u{125a}-\u{125d}\u{1260}-\u{1286}\u{128a}-\u{128d}\u{1290}-\u{12ae}\u{12b2}-\u{12b5}\u{12b8}-\u{12be}\u{12c2}-\u{12c5}\u{12c8}-\u{12ce}\u{12d0}-\u{12d6}\u{12d8}-\u{12ee}\u{12f0}-\u{130e}\u{1312}-\u{1315}\u{1318}-\u{131e}\u{1320}-\u{1346}\u{1348}-\u{135a}\u{1361}-\u{137c}\u{13a0}-\u{13f4}\u{1401}-\u{1676}\u{1681}-\u{169a}\u{16a0}-\u{16f0}\u{1700}-\u{170c}\u{170e}-\u{1711}\u{1720}-\u{1731}\u{1735}-\u{1736}\u{1740}-\u{1751}\u{1760}-\u{176c}\u{176e}-\u{1770}\u{1780}-\u{17b6}\u{17be}-\u{17c5}\u{17c7}-\u{17c8}\u{17d4}-\u{17da}\u{17e0}-\u{17e9}\u{1810}-\u{1819}\u{1820}-\u{1877}\u{1880}-\u{18a8}\u{1e00}-\u{1e9b}\u{1ea0}-\u{1ef9}\u{1f00}-\u{1f15}\u{1f18}-\u{1f1d}\u{1f20}-\u{1f45}\u{1f48}-\u{1f4d}\u{1f50}-\u{1f57}\u{1f5f}-\u{1f7d}\u{1f80}-\u{1fb4}\u{1fb6}-\u{1fbc}\u{1fc2}-\u{1fc4}\u{1fc6}-\u{1fcc}\u{1fd0}-\u{1fd3}\u{1fd6}-\u{1fdb}\u{1fe0}-\u{1fec}\u{1ff2}-\u{1ff4}\u{1ff6}-\u{1ffc}\u{210a}-\u{2113}\u{2119}-\u{211d}\u{212a}-\u{212d}\u{212f}-\u{2131}\u{2133}-\u{2139}\u{213d}-\u{213f}\u{2145}-\u{2149}\u{2160}-\u{2183}\u{2336}-\u{237a}\u{249c}-\u{24e9}\u{3005}-\u{3007}\u{3021}-\u{3029}\u{3031}-\u{3035}\u{3038}-\u{303c}\u{3041}-\u{3096}\u{309d}-\u{309f}\u{30a1}-\u{30fa}\u{30fc}-\u{30ff}\u{3105}-\u{312c}\u{3131}-\u{318e}\u{3190}-\u{31b7}\u{31f0}-\u{321c}\u{3220}-\u{3243}\u{3260}-\u{327b}\u{327f}-\u{32b0}\u{32c0}-\u{32cb}\u{32d0}-\u{32fe}\u{3300}-\u{3376}\u{337b}-\u{33dd}\u{33e0}-\u{33fe}\u{3400}-\u{4db5}\u{4e00}-\u{9fa5}\u{a000}-\u{a48c}\u{ac00}-\u{d7a3}\u{e000}-\u{fa2d}\u{fa30}-\u{fa6a}\u{fb00}-\u{fb06}\u{fb13}-\u{fb17}\u{ff21}-\u{ff3a}\u{ff41}-\u{ff5a}\u{ff66}-\u{ffbe}\u{ffc2}-\u{ffc7}\u{ffca}-\u{ffcf}\u{ffd2}-\u{ffd7}\u{ffda}-\u{ffdc}\u{10300}-\u{1031e}\u{10320}-\u{10323}\u{10330}-\u{1034a}\u{10400}-\u{10425}\u{10428}-\u{1044d}\u{1d000}-\u{1d0f5}\u{1d100}-\u{1d126}\u{1d12a}-\u{1d166}\u{1d16a}-\u{1d172}\u{1d183}-\u{1d184}\u{1d18c}-\u{1d1a9}\u{1d1ae}-\u{1d1dd}\u{1d400}-\u{1d454}\u{1d456}-\u{1d49c}\u{1d49e}-\u{1d49f}\u{1d4a5}-\u{1d4a6}\u{1d4a9}-\u{1d4ac}\u{1d4ae}-\u{1d4b9}\u{1d4bd}-\u{1d4c0}\u{1d4c2}-\u{1d4c3}\u{1d4c5}-\u{1d505}\u{1d507}-\u{1d50a}\u{1d50d}-\u{1d514}\u{1d516}-\u{1d51c}\u{1d51e}-\u{1d539}\u{1d53b}-\u{1d53e}\u{1d540}-\u{1d544}\u{1d54a}-\u{1d550}\u{1d552}-\u{1d6a3}\u{1d6a8}-\u{1d7c9}\u{20000}-\u{2a6d6}\u{2f800}-\u{2fa1d}\u{f0000}-\u{ffffd}\u{100000}-\u{10fffd}\p{Cs}]/.freeze
74
+
75
+ BIDI_DESC_REQ2 = "A string with RandALCat characters must not contain LCat characters."
76
+
77
+ # Bidirectional Characters [StringPrep, §6], Requirement 2
78
+ # >>>
79
+ # If a string contains any RandALCat character, the string MUST NOT
80
+ # contain any LCat character.
81
+ BIDI_FAILS_REQ2 = /(?m-ix:(?-mix:[\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]).*?(?-mix:[\u{00aa 00b5 00ba 02ee 037a 0386 038c 0589 0903 0950 09b2 09d7 0a5e 0a83 0a8d 0ac9 0ad0 0ae0 0b40 0b57 0b83 0b9c 0bd7 0cbe 0cde 0d57 0dbd 0e84 0e8a 0e8d 0ea5 0ea7 0ebd 0ec6 0f36 0f38 0f7f 0f85 0fcf 102c 1031 1038 10fb 1248 1258 1288 12b0 12c0 1310 17dc 1f59 1f5b 1f5d 1fbe 200e 2071 207f 2102 2107 2115 2124 2126 2128 2395 1d4a2 1d4bb 1d546}\u{0041}-\u{005a}\u{0061}-\u{007a}\u{00c0}-\u{00d6}\u{00d8}-\u{00f6}\u{00f8}-\u{0220}\u{0222}-\u{0233}\u{0250}-\u{02ad}\u{02b0}-\u{02b8}\u{02bb}-\u{02c1}\u{02d0}-\u{02d1}\u{02e0}-\u{02e4}\u{0388}-\u{038a}\u{038e}-\u{03a1}\u{03a3}-\u{03ce}\u{03d0}-\u{03f5}\u{0400}-\u{0482}\u{048a}-\u{04ce}\u{04d0}-\u{04f5}\u{04f8}-\u{04f9}\u{0500}-\u{050f}\u{0531}-\u{0556}\u{0559}-\u{055f}\u{0561}-\u{0587}\u{0905}-\u{0939}\u{093d}-\u{0940}\u{0949}-\u{094c}\u{0958}-\u{0961}\u{0964}-\u{0970}\u{0982}-\u{0983}\u{0985}-\u{098c}\u{098f}-\u{0990}\u{0993}-\u{09a8}\u{09aa}-\u{09b0}\u{09b6}-\u{09b9}\u{09be}-\u{09c0}\u{09c7}-\u{09c8}\u{09cb}-\u{09cc}\u{09dc}-\u{09dd}\u{09df}-\u{09e1}\u{09e6}-\u{09f1}\u{09f4}-\u{09fa}\u{0a05}-\u{0a0a}\u{0a0f}-\u{0a10}\u{0a13}-\u{0a28}\u{0a2a}-\u{0a30}\u{0a32}-\u{0a33}\u{0a35}-\u{0a36}\u{0a38}-\u{0a39}\u{0a3e}-\u{0a40}\u{0a59}-\u{0a5c}\u{0a66}-\u{0a6f}\u{0a72}-\u{0a74}\u{0a85}-\u{0a8b}\u{0a8f}-\u{0a91}\u{0a93}-\u{0aa8}\u{0aaa}-\u{0ab0}\u{0ab2}-\u{0ab3}\u{0ab5}-\u{0ab9}\u{0abd}-\u{0ac0}\u{0acb}-\u{0acc}\u{0ae6}-\u{0aef}\u{0b02}-\u{0b03}\u{0b05}-\u{0b0c}\u{0b0f}-\u{0b10}\u{0b13}-\u{0b28}\u{0b2a}-\u{0b30}\u{0b32}-\u{0b33}\u{0b36}-\u{0b39}\u{0b3d}-\u{0b3e}\u{0b47}-\u{0b48}\u{0b4b}-\u{0b4c}\u{0b5c}-\u{0b5d}\u{0b5f}-\u{0b61}\u{0b66}-\u{0b70}\u{0b85}-\u{0b8a}\u{0b8e}-\u{0b90}\u{0b92}-\u{0b95}\u{0b99}-\u{0b9a}\u{0b9e}-\u{0b9f}\u{0ba3}-\u{0ba4}\u{0ba8}-\u{0baa}\u{0bae}-\u{0bb5}\u{0bb7}-\u{0bb9}\u{0bbe}-\u{0bbf}\u{0bc1}-\u{0bc2}\u{0bc6}-\u{0bc8}\u{0bca}-\u{0bcc}\u{0be7}-\u{0bf2}\u{0c01}-\u{0c03}\u{0c05}-\u{0c0c}\u{0c0e}-\u{0c10}\u{0c12}-\u{0c28}\u{0c2a}-\u{0c33}\u{0c35}-\u{0c39}\u{0c41}-\u{0c44}\u{0c60}-\u{0c61}\u{0c66}-\u{0c6f}\u{0c82}-\u{0c83}\u{0c85}-\u{0c8c}\u{0c8e}-\u{0c90}\u{0c92}-\u{0ca8}\u{0caa}-\u{0cb3}\u{0cb5}-\u{0cb9}\u{0cc0}-\u{0cc4}\u{0cc7}-\u{0cc8}\u{0cca}-\u{0ccb}\u{0cd5}-\u{0cd6}\u{0ce0}-\u{0ce1}\u{0ce6}-\u{0cef}\u{0d02}-\u{0d03}\u{0d05}-\u{0d0c}\u{0d0e}-\u{0d10}\u{0d12}-\u{0d28}\u{0d2a}-\u{0d39}\u{0d3e}-\u{0d40}\u{0d46}-\u{0d48}\u{0d4a}-\u{0d4c}\u{0d60}-\u{0d61}\u{0d66}-\u{0d6f}\u{0d82}-\u{0d83}\u{0d85}-\u{0d96}\u{0d9a}-\u{0db1}\u{0db3}-\u{0dbb}\u{0dc0}-\u{0dc6}\u{0dcf}-\u{0dd1}\u{0dd8}-\u{0ddf}\u{0df2}-\u{0df4}\u{0e01}-\u{0e30}\u{0e32}-\u{0e33}\u{0e40}-\u{0e46}\u{0e4f}-\u{0e5b}\u{0e81}-\u{0e82}\u{0e87}-\u{0e88}\u{0e94}-\u{0e97}\u{0e99}-\u{0e9f}\u{0ea1}-\u{0ea3}\u{0eaa}-\u{0eab}\u{0ead}-\u{0eb0}\u{0eb2}-\u{0eb3}\u{0ec0}-\u{0ec4}\u{0ed0}-\u{0ed9}\u{0edc}-\u{0edd}\u{0f00}-\u{0f17}\u{0f1a}-\u{0f34}\u{0f3e}-\u{0f47}\u{0f49}-\u{0f6a}\u{0f88}-\u{0f8b}\u{0fbe}-\u{0fc5}\u{0fc7}-\u{0fcc}\u{1000}-\u{1021}\u{1023}-\u{1027}\u{1029}-\u{102a}\u{1040}-\u{1057}\u{10a0}-\u{10c5}\u{10d0}-\u{10f8}\u{1100}-\u{1159}\u{115f}-\u{11a2}\u{11a8}-\u{11f9}\u{1200}-\u{1206}\u{1208}-\u{1246}\u{124a}-\u{124d}\u{1250}-\u{1256}\u{125a}-\u{125d}\u{1260}-\u{1286}\u{128a}-\u{128d}\u{1290}-\u{12ae}\u{12b2}-\u{12b5}\u{12b8}-\u{12be}\u{12c2}-\u{12c5}\u{12c8}-\u{12ce}\u{12d0}-\u{12d6}\u{12d8}-\u{12ee}\u{12f0}-\u{130e}\u{1312}-\u{1315}\u{1318}-\u{131e}\u{1320}-\u{1346}\u{1348}-\u{135a}\u{1361}-\u{137c}\u{13a0}-\u{13f4}\u{1401}-\u{1676}\u{1681}-\u{169a}\u{16a0}-\u{16f0}\u{1700}-\u{170c}\u{170e}-\u{1711}\u{1720}-\u{1731}\u{1735}-\u{1736}\u{1740}-\u{1751}\u{1760}-\u{176c}\u{176e}-\u{1770}\u{1780}-\u{17b6}\u{17be}-\u{17c5}\u{17c7}-\u{17c8}\u{17d4}-\u{17da}\u{17e0}-\u{17e9}\u{1810}-\u{1819}\u{1820}-\u{1877}\u{1880}-\u{18a8}\u{1e00}-\u{1e9b}\u{1ea0}-\u{1ef9}\u{1f00}-\u{1f15}\u{1f18}-\u{1f1d}\u{1f20}-\u{1f45}\u{1f48}-\u{1f4d}\u{1f50}-\u{1f57}\u{1f5f}-\u{1f7d}\u{1f80}-\u{1fb4}\u{1fb6}-\u{1fbc}\u{1fc2}-\u{1fc4}\u{1fc6}-\u{1fcc}\u{1fd0}-\u{1fd3}\u{1fd6}-\u{1fdb}\u{1fe0}-\u{1fec}\u{1ff2}-\u{1ff4}\u{1ff6}-\u{1ffc}\u{210a}-\u{2113}\u{2119}-\u{211d}\u{212a}-\u{212d}\u{212f}-\u{2131}\u{2133}-\u{2139}\u{213d}-\u{213f}\u{2145}-\u{2149}\u{2160}-\u{2183}\u{2336}-\u{237a}\u{249c}-\u{24e9}\u{3005}-\u{3007}\u{3021}-\u{3029}\u{3031}-\u{3035}\u{3038}-\u{303c}\u{3041}-\u{3096}\u{309d}-\u{309f}\u{30a1}-\u{30fa}\u{30fc}-\u{30ff}\u{3105}-\u{312c}\u{3131}-\u{318e}\u{3190}-\u{31b7}\u{31f0}-\u{321c}\u{3220}-\u{3243}\u{3260}-\u{327b}\u{327f}-\u{32b0}\u{32c0}-\u{32cb}\u{32d0}-\u{32fe}\u{3300}-\u{3376}\u{337b}-\u{33dd}\u{33e0}-\u{33fe}\u{3400}-\u{4db5}\u{4e00}-\u{9fa5}\u{a000}-\u{a48c}\u{ac00}-\u{d7a3}\u{e000}-\u{fa2d}\u{fa30}-\u{fa6a}\u{fb00}-\u{fb06}\u{fb13}-\u{fb17}\u{ff21}-\u{ff3a}\u{ff41}-\u{ff5a}\u{ff66}-\u{ffbe}\u{ffc2}-\u{ffc7}\u{ffca}-\u{ffcf}\u{ffd2}-\u{ffd7}\u{ffda}-\u{ffdc}\u{10300}-\u{1031e}\u{10320}-\u{10323}\u{10330}-\u{1034a}\u{10400}-\u{10425}\u{10428}-\u{1044d}\u{1d000}-\u{1d0f5}\u{1d100}-\u{1d126}\u{1d12a}-\u{1d166}\u{1d16a}-\u{1d172}\u{1d183}-\u{1d184}\u{1d18c}-\u{1d1a9}\u{1d1ae}-\u{1d1dd}\u{1d400}-\u{1d454}\u{1d456}-\u{1d49c}\u{1d49e}-\u{1d49f}\u{1d4a5}-\u{1d4a6}\u{1d4a9}-\u{1d4ac}\u{1d4ae}-\u{1d4b9}\u{1d4bd}-\u{1d4c0}\u{1d4c2}-\u{1d4c3}\u{1d4c5}-\u{1d505}\u{1d507}-\u{1d50a}\u{1d50d}-\u{1d514}\u{1d516}-\u{1d51c}\u{1d51e}-\u{1d539}\u{1d53b}-\u{1d53e}\u{1d540}-\u{1d544}\u{1d54a}-\u{1d550}\u{1d552}-\u{1d6a3}\u{1d6a8}-\u{1d7c9}\u{20000}-\u{2a6d6}\u{2f800}-\u{2fa1d}\u{f0000}-\u{ffffd}\u{100000}-\u{10fffd}\p{Cs}]))|(?m-ix:(?-mix:[\u{00aa 00b5 00ba 02ee 037a 0386 038c 0589 0903 0950 09b2 09d7 0a5e 0a83 0a8d 0ac9 0ad0 0ae0 0b40 0b57 0b83 0b9c 0bd7 0cbe 0cde 0d57 0dbd 0e84 0e8a 0e8d 0ea5 0ea7 0ebd 0ec6 0f36 0f38 0f7f 0f85 0fcf 102c 1031 1038 10fb 1248 1258 1288 12b0 12c0 1310 17dc 1f59 1f5b 1f5d 1fbe 200e 2071 207f 2102 2107 2115 2124 2126 2128 2395 1d4a2 1d4bb 1d546}\u{0041}-\u{005a}\u{0061}-\u{007a}\u{00c0}-\u{00d6}\u{00d8}-\u{00f6}\u{00f8}-\u{0220}\u{0222}-\u{0233}\u{0250}-\u{02ad}\u{02b0}-\u{02b8}\u{02bb}-\u{02c1}\u{02d0}-\u{02d1}\u{02e0}-\u{02e4}\u{0388}-\u{038a}\u{038e}-\u{03a1}\u{03a3}-\u{03ce}\u{03d0}-\u{03f5}\u{0400}-\u{0482}\u{048a}-\u{04ce}\u{04d0}-\u{04f5}\u{04f8}-\u{04f9}\u{0500}-\u{050f}\u{0531}-\u{0556}\u{0559}-\u{055f}\u{0561}-\u{0587}\u{0905}-\u{0939}\u{093d}-\u{0940}\u{0949}-\u{094c}\u{0958}-\u{0961}\u{0964}-\u{0970}\u{0982}-\u{0983}\u{0985}-\u{098c}\u{098f}-\u{0990}\u{0993}-\u{09a8}\u{09aa}-\u{09b0}\u{09b6}-\u{09b9}\u{09be}-\u{09c0}\u{09c7}-\u{09c8}\u{09cb}-\u{09cc}\u{09dc}-\u{09dd}\u{09df}-\u{09e1}\u{09e6}-\u{09f1}\u{09f4}-\u{09fa}\u{0a05}-\u{0a0a}\u{0a0f}-\u{0a10}\u{0a13}-\u{0a28}\u{0a2a}-\u{0a30}\u{0a32}-\u{0a33}\u{0a35}-\u{0a36}\u{0a38}-\u{0a39}\u{0a3e}-\u{0a40}\u{0a59}-\u{0a5c}\u{0a66}-\u{0a6f}\u{0a72}-\u{0a74}\u{0a85}-\u{0a8b}\u{0a8f}-\u{0a91}\u{0a93}-\u{0aa8}\u{0aaa}-\u{0ab0}\u{0ab2}-\u{0ab3}\u{0ab5}-\u{0ab9}\u{0abd}-\u{0ac0}\u{0acb}-\u{0acc}\u{0ae6}-\u{0aef}\u{0b02}-\u{0b03}\u{0b05}-\u{0b0c}\u{0b0f}-\u{0b10}\u{0b13}-\u{0b28}\u{0b2a}-\u{0b30}\u{0b32}-\u{0b33}\u{0b36}-\u{0b39}\u{0b3d}-\u{0b3e}\u{0b47}-\u{0b48}\u{0b4b}-\u{0b4c}\u{0b5c}-\u{0b5d}\u{0b5f}-\u{0b61}\u{0b66}-\u{0b70}\u{0b85}-\u{0b8a}\u{0b8e}-\u{0b90}\u{0b92}-\u{0b95}\u{0b99}-\u{0b9a}\u{0b9e}-\u{0b9f}\u{0ba3}-\u{0ba4}\u{0ba8}-\u{0baa}\u{0bae}-\u{0bb5}\u{0bb7}-\u{0bb9}\u{0bbe}-\u{0bbf}\u{0bc1}-\u{0bc2}\u{0bc6}-\u{0bc8}\u{0bca}-\u{0bcc}\u{0be7}-\u{0bf2}\u{0c01}-\u{0c03}\u{0c05}-\u{0c0c}\u{0c0e}-\u{0c10}\u{0c12}-\u{0c28}\u{0c2a}-\u{0c33}\u{0c35}-\u{0c39}\u{0c41}-\u{0c44}\u{0c60}-\u{0c61}\u{0c66}-\u{0c6f}\u{0c82}-\u{0c83}\u{0c85}-\u{0c8c}\u{0c8e}-\u{0c90}\u{0c92}-\u{0ca8}\u{0caa}-\u{0cb3}\u{0cb5}-\u{0cb9}\u{0cc0}-\u{0cc4}\u{0cc7}-\u{0cc8}\u{0cca}-\u{0ccb}\u{0cd5}-\u{0cd6}\u{0ce0}-\u{0ce1}\u{0ce6}-\u{0cef}\u{0d02}-\u{0d03}\u{0d05}-\u{0d0c}\u{0d0e}-\u{0d10}\u{0d12}-\u{0d28}\u{0d2a}-\u{0d39}\u{0d3e}-\u{0d40}\u{0d46}-\u{0d48}\u{0d4a}-\u{0d4c}\u{0d60}-\u{0d61}\u{0d66}-\u{0d6f}\u{0d82}-\u{0d83}\u{0d85}-\u{0d96}\u{0d9a}-\u{0db1}\u{0db3}-\u{0dbb}\u{0dc0}-\u{0dc6}\u{0dcf}-\u{0dd1}\u{0dd8}-\u{0ddf}\u{0df2}-\u{0df4}\u{0e01}-\u{0e30}\u{0e32}-\u{0e33}\u{0e40}-\u{0e46}\u{0e4f}-\u{0e5b}\u{0e81}-\u{0e82}\u{0e87}-\u{0e88}\u{0e94}-\u{0e97}\u{0e99}-\u{0e9f}\u{0ea1}-\u{0ea3}\u{0eaa}-\u{0eab}\u{0ead}-\u{0eb0}\u{0eb2}-\u{0eb3}\u{0ec0}-\u{0ec4}\u{0ed0}-\u{0ed9}\u{0edc}-\u{0edd}\u{0f00}-\u{0f17}\u{0f1a}-\u{0f34}\u{0f3e}-\u{0f47}\u{0f49}-\u{0f6a}\u{0f88}-\u{0f8b}\u{0fbe}-\u{0fc5}\u{0fc7}-\u{0fcc}\u{1000}-\u{1021}\u{1023}-\u{1027}\u{1029}-\u{102a}\u{1040}-\u{1057}\u{10a0}-\u{10c5}\u{10d0}-\u{10f8}\u{1100}-\u{1159}\u{115f}-\u{11a2}\u{11a8}-\u{11f9}\u{1200}-\u{1206}\u{1208}-\u{1246}\u{124a}-\u{124d}\u{1250}-\u{1256}\u{125a}-\u{125d}\u{1260}-\u{1286}\u{128a}-\u{128d}\u{1290}-\u{12ae}\u{12b2}-\u{12b5}\u{12b8}-\u{12be}\u{12c2}-\u{12c5}\u{12c8}-\u{12ce}\u{12d0}-\u{12d6}\u{12d8}-\u{12ee}\u{12f0}-\u{130e}\u{1312}-\u{1315}\u{1318}-\u{131e}\u{1320}-\u{1346}\u{1348}-\u{135a}\u{1361}-\u{137c}\u{13a0}-\u{13f4}\u{1401}-\u{1676}\u{1681}-\u{169a}\u{16a0}-\u{16f0}\u{1700}-\u{170c}\u{170e}-\u{1711}\u{1720}-\u{1731}\u{1735}-\u{1736}\u{1740}-\u{1751}\u{1760}-\u{176c}\u{176e}-\u{1770}\u{1780}-\u{17b6}\u{17be}-\u{17c5}\u{17c7}-\u{17c8}\u{17d4}-\u{17da}\u{17e0}-\u{17e9}\u{1810}-\u{1819}\u{1820}-\u{1877}\u{1880}-\u{18a8}\u{1e00}-\u{1e9b}\u{1ea0}-\u{1ef9}\u{1f00}-\u{1f15}\u{1f18}-\u{1f1d}\u{1f20}-\u{1f45}\u{1f48}-\u{1f4d}\u{1f50}-\u{1f57}\u{1f5f}-\u{1f7d}\u{1f80}-\u{1fb4}\u{1fb6}-\u{1fbc}\u{1fc2}-\u{1fc4}\u{1fc6}-\u{1fcc}\u{1fd0}-\u{1fd3}\u{1fd6}-\u{1fdb}\u{1fe0}-\u{1fec}\u{1ff2}-\u{1ff4}\u{1ff6}-\u{1ffc}\u{210a}-\u{2113}\u{2119}-\u{211d}\u{212a}-\u{212d}\u{212f}-\u{2131}\u{2133}-\u{2139}\u{213d}-\u{213f}\u{2145}-\u{2149}\u{2160}-\u{2183}\u{2336}-\u{237a}\u{249c}-\u{24e9}\u{3005}-\u{3007}\u{3021}-\u{3029}\u{3031}-\u{3035}\u{3038}-\u{303c}\u{3041}-\u{3096}\u{309d}-\u{309f}\u{30a1}-\u{30fa}\u{30fc}-\u{30ff}\u{3105}-\u{312c}\u{3131}-\u{318e}\u{3190}-\u{31b7}\u{31f0}-\u{321c}\u{3220}-\u{3243}\u{3260}-\u{327b}\u{327f}-\u{32b0}\u{32c0}-\u{32cb}\u{32d0}-\u{32fe}\u{3300}-\u{3376}\u{337b}-\u{33dd}\u{33e0}-\u{33fe}\u{3400}-\u{4db5}\u{4e00}-\u{9fa5}\u{a000}-\u{a48c}\u{ac00}-\u{d7a3}\u{e000}-\u{fa2d}\u{fa30}-\u{fa6a}\u{fb00}-\u{fb06}\u{fb13}-\u{fb17}\u{ff21}-\u{ff3a}\u{ff41}-\u{ff5a}\u{ff66}-\u{ffbe}\u{ffc2}-\u{ffc7}\u{ffca}-\u{ffcf}\u{ffd2}-\u{ffd7}\u{ffda}-\u{ffdc}\u{10300}-\u{1031e}\u{10320}-\u{10323}\u{10330}-\u{1034a}\u{10400}-\u{10425}\u{10428}-\u{1044d}\u{1d000}-\u{1d0f5}\u{1d100}-\u{1d126}\u{1d12a}-\u{1d166}\u{1d16a}-\u{1d172}\u{1d183}-\u{1d184}\u{1d18c}-\u{1d1a9}\u{1d1ae}-\u{1d1dd}\u{1d400}-\u{1d454}\u{1d456}-\u{1d49c}\u{1d49e}-\u{1d49f}\u{1d4a5}-\u{1d4a6}\u{1d4a9}-\u{1d4ac}\u{1d4ae}-\u{1d4b9}\u{1d4bd}-\u{1d4c0}\u{1d4c2}-\u{1d4c3}\u{1d4c5}-\u{1d505}\u{1d507}-\u{1d50a}\u{1d50d}-\u{1d514}\u{1d516}-\u{1d51c}\u{1d51e}-\u{1d539}\u{1d53b}-\u{1d53e}\u{1d540}-\u{1d544}\u{1d54a}-\u{1d550}\u{1d552}-\u{1d6a3}\u{1d6a8}-\u{1d7c9}\u{20000}-\u{2a6d6}\u{2f800}-\u{2fa1d}\u{f0000}-\u{ffffd}\u{100000}-\u{10fffd}\p{Cs}]).*?(?-mix:[\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]))/.freeze
82
+
83
+ BIDI_DESC_REQ3 = "A string with RandALCat characters must start and end with RandALCat characters."
84
+
85
+ # Bidirectional Characters [StringPrep, §6], Requirement 3
86
+ # >>>
87
+ # If a string contains any RandALCat character, a RandALCat
88
+ # character MUST be the first character of the string, and a
89
+ # RandALCat character MUST be the last character of the string.
90
+ BIDI_FAILS_REQ3 = /(?m-ix:\A(?-mix:[^\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]).*?(?-mix:[\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]))|(?m-ix:(?-mix:[\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]).*?(?-mix:[^\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}])\z)/.freeze
91
+
92
+ # Bidirectional Characters [StringPrep, §6]
93
+ BIDI_FAILURE = /(?-mix:(?m-ix:(?-mix:[\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]).*?(?-mix:[\u{00aa 00b5 00ba 02ee 037a 0386 038c 0589 0903 0950 09b2 09d7 0a5e 0a83 0a8d 0ac9 0ad0 0ae0 0b40 0b57 0b83 0b9c 0bd7 0cbe 0cde 0d57 0dbd 0e84 0e8a 0e8d 0ea5 0ea7 0ebd 0ec6 0f36 0f38 0f7f 0f85 0fcf 102c 1031 1038 10fb 1248 1258 1288 12b0 12c0 1310 17dc 1f59 1f5b 1f5d 1fbe 200e 2071 207f 2102 2107 2115 2124 2126 2128 2395 1d4a2 1d4bb 1d546}\u{0041}-\u{005a}\u{0061}-\u{007a}\u{00c0}-\u{00d6}\u{00d8}-\u{00f6}\u{00f8}-\u{0220}\u{0222}-\u{0233}\u{0250}-\u{02ad}\u{02b0}-\u{02b8}\u{02bb}-\u{02c1}\u{02d0}-\u{02d1}\u{02e0}-\u{02e4}\u{0388}-\u{038a}\u{038e}-\u{03a1}\u{03a3}-\u{03ce}\u{03d0}-\u{03f5}\u{0400}-\u{0482}\u{048a}-\u{04ce}\u{04d0}-\u{04f5}\u{04f8}-\u{04f9}\u{0500}-\u{050f}\u{0531}-\u{0556}\u{0559}-\u{055f}\u{0561}-\u{0587}\u{0905}-\u{0939}\u{093d}-\u{0940}\u{0949}-\u{094c}\u{0958}-\u{0961}\u{0964}-\u{0970}\u{0982}-\u{0983}\u{0985}-\u{098c}\u{098f}-\u{0990}\u{0993}-\u{09a8}\u{09aa}-\u{09b0}\u{09b6}-\u{09b9}\u{09be}-\u{09c0}\u{09c7}-\u{09c8}\u{09cb}-\u{09cc}\u{09dc}-\u{09dd}\u{09df}-\u{09e1}\u{09e6}-\u{09f1}\u{09f4}-\u{09fa}\u{0a05}-\u{0a0a}\u{0a0f}-\u{0a10}\u{0a13}-\u{0a28}\u{0a2a}-\u{0a30}\u{0a32}-\u{0a33}\u{0a35}-\u{0a36}\u{0a38}-\u{0a39}\u{0a3e}-\u{0a40}\u{0a59}-\u{0a5c}\u{0a66}-\u{0a6f}\u{0a72}-\u{0a74}\u{0a85}-\u{0a8b}\u{0a8f}-\u{0a91}\u{0a93}-\u{0aa8}\u{0aaa}-\u{0ab0}\u{0ab2}-\u{0ab3}\u{0ab5}-\u{0ab9}\u{0abd}-\u{0ac0}\u{0acb}-\u{0acc}\u{0ae6}-\u{0aef}\u{0b02}-\u{0b03}\u{0b05}-\u{0b0c}\u{0b0f}-\u{0b10}\u{0b13}-\u{0b28}\u{0b2a}-\u{0b30}\u{0b32}-\u{0b33}\u{0b36}-\u{0b39}\u{0b3d}-\u{0b3e}\u{0b47}-\u{0b48}\u{0b4b}-\u{0b4c}\u{0b5c}-\u{0b5d}\u{0b5f}-\u{0b61}\u{0b66}-\u{0b70}\u{0b85}-\u{0b8a}\u{0b8e}-\u{0b90}\u{0b92}-\u{0b95}\u{0b99}-\u{0b9a}\u{0b9e}-\u{0b9f}\u{0ba3}-\u{0ba4}\u{0ba8}-\u{0baa}\u{0bae}-\u{0bb5}\u{0bb7}-\u{0bb9}\u{0bbe}-\u{0bbf}\u{0bc1}-\u{0bc2}\u{0bc6}-\u{0bc8}\u{0bca}-\u{0bcc}\u{0be7}-\u{0bf2}\u{0c01}-\u{0c03}\u{0c05}-\u{0c0c}\u{0c0e}-\u{0c10}\u{0c12}-\u{0c28}\u{0c2a}-\u{0c33}\u{0c35}-\u{0c39}\u{0c41}-\u{0c44}\u{0c60}-\u{0c61}\u{0c66}-\u{0c6f}\u{0c82}-\u{0c83}\u{0c85}-\u{0c8c}\u{0c8e}-\u{0c90}\u{0c92}-\u{0ca8}\u{0caa}-\u{0cb3}\u{0cb5}-\u{0cb9}\u{0cc0}-\u{0cc4}\u{0cc7}-\u{0cc8}\u{0cca}-\u{0ccb}\u{0cd5}-\u{0cd6}\u{0ce0}-\u{0ce1}\u{0ce6}-\u{0cef}\u{0d02}-\u{0d03}\u{0d05}-\u{0d0c}\u{0d0e}-\u{0d10}\u{0d12}-\u{0d28}\u{0d2a}-\u{0d39}\u{0d3e}-\u{0d40}\u{0d46}-\u{0d48}\u{0d4a}-\u{0d4c}\u{0d60}-\u{0d61}\u{0d66}-\u{0d6f}\u{0d82}-\u{0d83}\u{0d85}-\u{0d96}\u{0d9a}-\u{0db1}\u{0db3}-\u{0dbb}\u{0dc0}-\u{0dc6}\u{0dcf}-\u{0dd1}\u{0dd8}-\u{0ddf}\u{0df2}-\u{0df4}\u{0e01}-\u{0e30}\u{0e32}-\u{0e33}\u{0e40}-\u{0e46}\u{0e4f}-\u{0e5b}\u{0e81}-\u{0e82}\u{0e87}-\u{0e88}\u{0e94}-\u{0e97}\u{0e99}-\u{0e9f}\u{0ea1}-\u{0ea3}\u{0eaa}-\u{0eab}\u{0ead}-\u{0eb0}\u{0eb2}-\u{0eb3}\u{0ec0}-\u{0ec4}\u{0ed0}-\u{0ed9}\u{0edc}-\u{0edd}\u{0f00}-\u{0f17}\u{0f1a}-\u{0f34}\u{0f3e}-\u{0f47}\u{0f49}-\u{0f6a}\u{0f88}-\u{0f8b}\u{0fbe}-\u{0fc5}\u{0fc7}-\u{0fcc}\u{1000}-\u{1021}\u{1023}-\u{1027}\u{1029}-\u{102a}\u{1040}-\u{1057}\u{10a0}-\u{10c5}\u{10d0}-\u{10f8}\u{1100}-\u{1159}\u{115f}-\u{11a2}\u{11a8}-\u{11f9}\u{1200}-\u{1206}\u{1208}-\u{1246}\u{124a}-\u{124d}\u{1250}-\u{1256}\u{125a}-\u{125d}\u{1260}-\u{1286}\u{128a}-\u{128d}\u{1290}-\u{12ae}\u{12b2}-\u{12b5}\u{12b8}-\u{12be}\u{12c2}-\u{12c5}\u{12c8}-\u{12ce}\u{12d0}-\u{12d6}\u{12d8}-\u{12ee}\u{12f0}-\u{130e}\u{1312}-\u{1315}\u{1318}-\u{131e}\u{1320}-\u{1346}\u{1348}-\u{135a}\u{1361}-\u{137c}\u{13a0}-\u{13f4}\u{1401}-\u{1676}\u{1681}-\u{169a}\u{16a0}-\u{16f0}\u{1700}-\u{170c}\u{170e}-\u{1711}\u{1720}-\u{1731}\u{1735}-\u{1736}\u{1740}-\u{1751}\u{1760}-\u{176c}\u{176e}-\u{1770}\u{1780}-\u{17b6}\u{17be}-\u{17c5}\u{17c7}-\u{17c8}\u{17d4}-\u{17da}\u{17e0}-\u{17e9}\u{1810}-\u{1819}\u{1820}-\u{1877}\u{1880}-\u{18a8}\u{1e00}-\u{1e9b}\u{1ea0}-\u{1ef9}\u{1f00}-\u{1f15}\u{1f18}-\u{1f1d}\u{1f20}-\u{1f45}\u{1f48}-\u{1f4d}\u{1f50}-\u{1f57}\u{1f5f}-\u{1f7d}\u{1f80}-\u{1fb4}\u{1fb6}-\u{1fbc}\u{1fc2}-\u{1fc4}\u{1fc6}-\u{1fcc}\u{1fd0}-\u{1fd3}\u{1fd6}-\u{1fdb}\u{1fe0}-\u{1fec}\u{1ff2}-\u{1ff4}\u{1ff6}-\u{1ffc}\u{210a}-\u{2113}\u{2119}-\u{211d}\u{212a}-\u{212d}\u{212f}-\u{2131}\u{2133}-\u{2139}\u{213d}-\u{213f}\u{2145}-\u{2149}\u{2160}-\u{2183}\u{2336}-\u{237a}\u{249c}-\u{24e9}\u{3005}-\u{3007}\u{3021}-\u{3029}\u{3031}-\u{3035}\u{3038}-\u{303c}\u{3041}-\u{3096}\u{309d}-\u{309f}\u{30a1}-\u{30fa}\u{30fc}-\u{30ff}\u{3105}-\u{312c}\u{3131}-\u{318e}\u{3190}-\u{31b7}\u{31f0}-\u{321c}\u{3220}-\u{3243}\u{3260}-\u{327b}\u{327f}-\u{32b0}\u{32c0}-\u{32cb}\u{32d0}-\u{32fe}\u{3300}-\u{3376}\u{337b}-\u{33dd}\u{33e0}-\u{33fe}\u{3400}-\u{4db5}\u{4e00}-\u{9fa5}\u{a000}-\u{a48c}\u{ac00}-\u{d7a3}\u{e000}-\u{fa2d}\u{fa30}-\u{fa6a}\u{fb00}-\u{fb06}\u{fb13}-\u{fb17}\u{ff21}-\u{ff3a}\u{ff41}-\u{ff5a}\u{ff66}-\u{ffbe}\u{ffc2}-\u{ffc7}\u{ffca}-\u{ffcf}\u{ffd2}-\u{ffd7}\u{ffda}-\u{ffdc}\u{10300}-\u{1031e}\u{10320}-\u{10323}\u{10330}-\u{1034a}\u{10400}-\u{10425}\u{10428}-\u{1044d}\u{1d000}-\u{1d0f5}\u{1d100}-\u{1d126}\u{1d12a}-\u{1d166}\u{1d16a}-\u{1d172}\u{1d183}-\u{1d184}\u{1d18c}-\u{1d1a9}\u{1d1ae}-\u{1d1dd}\u{1d400}-\u{1d454}\u{1d456}-\u{1d49c}\u{1d49e}-\u{1d49f}\u{1d4a5}-\u{1d4a6}\u{1d4a9}-\u{1d4ac}\u{1d4ae}-\u{1d4b9}\u{1d4bd}-\u{1d4c0}\u{1d4c2}-\u{1d4c3}\u{1d4c5}-\u{1d505}\u{1d507}-\u{1d50a}\u{1d50d}-\u{1d514}\u{1d516}-\u{1d51c}\u{1d51e}-\u{1d539}\u{1d53b}-\u{1d53e}\u{1d540}-\u{1d544}\u{1d54a}-\u{1d550}\u{1d552}-\u{1d6a3}\u{1d6a8}-\u{1d7c9}\u{20000}-\u{2a6d6}\u{2f800}-\u{2fa1d}\u{f0000}-\u{ffffd}\u{100000}-\u{10fffd}\p{Cs}]))|(?m-ix:(?-mix:[\u{00aa 00b5 00ba 02ee 037a 0386 038c 0589 0903 0950 09b2 09d7 0a5e 0a83 0a8d 0ac9 0ad0 0ae0 0b40 0b57 0b83 0b9c 0bd7 0cbe 0cde 0d57 0dbd 0e84 0e8a 0e8d 0ea5 0ea7 0ebd 0ec6 0f36 0f38 0f7f 0f85 0fcf 102c 1031 1038 10fb 1248 1258 1288 12b0 12c0 1310 17dc 1f59 1f5b 1f5d 1fbe 200e 2071 207f 2102 2107 2115 2124 2126 2128 2395 1d4a2 1d4bb 1d546}\u{0041}-\u{005a}\u{0061}-\u{007a}\u{00c0}-\u{00d6}\u{00d8}-\u{00f6}\u{00f8}-\u{0220}\u{0222}-\u{0233}\u{0250}-\u{02ad}\u{02b0}-\u{02b8}\u{02bb}-\u{02c1}\u{02d0}-\u{02d1}\u{02e0}-\u{02e4}\u{0388}-\u{038a}\u{038e}-\u{03a1}\u{03a3}-\u{03ce}\u{03d0}-\u{03f5}\u{0400}-\u{0482}\u{048a}-\u{04ce}\u{04d0}-\u{04f5}\u{04f8}-\u{04f9}\u{0500}-\u{050f}\u{0531}-\u{0556}\u{0559}-\u{055f}\u{0561}-\u{0587}\u{0905}-\u{0939}\u{093d}-\u{0940}\u{0949}-\u{094c}\u{0958}-\u{0961}\u{0964}-\u{0970}\u{0982}-\u{0983}\u{0985}-\u{098c}\u{098f}-\u{0990}\u{0993}-\u{09a8}\u{09aa}-\u{09b0}\u{09b6}-\u{09b9}\u{09be}-\u{09c0}\u{09c7}-\u{09c8}\u{09cb}-\u{09cc}\u{09dc}-\u{09dd}\u{09df}-\u{09e1}\u{09e6}-\u{09f1}\u{09f4}-\u{09fa}\u{0a05}-\u{0a0a}\u{0a0f}-\u{0a10}\u{0a13}-\u{0a28}\u{0a2a}-\u{0a30}\u{0a32}-\u{0a33}\u{0a35}-\u{0a36}\u{0a38}-\u{0a39}\u{0a3e}-\u{0a40}\u{0a59}-\u{0a5c}\u{0a66}-\u{0a6f}\u{0a72}-\u{0a74}\u{0a85}-\u{0a8b}\u{0a8f}-\u{0a91}\u{0a93}-\u{0aa8}\u{0aaa}-\u{0ab0}\u{0ab2}-\u{0ab3}\u{0ab5}-\u{0ab9}\u{0abd}-\u{0ac0}\u{0acb}-\u{0acc}\u{0ae6}-\u{0aef}\u{0b02}-\u{0b03}\u{0b05}-\u{0b0c}\u{0b0f}-\u{0b10}\u{0b13}-\u{0b28}\u{0b2a}-\u{0b30}\u{0b32}-\u{0b33}\u{0b36}-\u{0b39}\u{0b3d}-\u{0b3e}\u{0b47}-\u{0b48}\u{0b4b}-\u{0b4c}\u{0b5c}-\u{0b5d}\u{0b5f}-\u{0b61}\u{0b66}-\u{0b70}\u{0b85}-\u{0b8a}\u{0b8e}-\u{0b90}\u{0b92}-\u{0b95}\u{0b99}-\u{0b9a}\u{0b9e}-\u{0b9f}\u{0ba3}-\u{0ba4}\u{0ba8}-\u{0baa}\u{0bae}-\u{0bb5}\u{0bb7}-\u{0bb9}\u{0bbe}-\u{0bbf}\u{0bc1}-\u{0bc2}\u{0bc6}-\u{0bc8}\u{0bca}-\u{0bcc}\u{0be7}-\u{0bf2}\u{0c01}-\u{0c03}\u{0c05}-\u{0c0c}\u{0c0e}-\u{0c10}\u{0c12}-\u{0c28}\u{0c2a}-\u{0c33}\u{0c35}-\u{0c39}\u{0c41}-\u{0c44}\u{0c60}-\u{0c61}\u{0c66}-\u{0c6f}\u{0c82}-\u{0c83}\u{0c85}-\u{0c8c}\u{0c8e}-\u{0c90}\u{0c92}-\u{0ca8}\u{0caa}-\u{0cb3}\u{0cb5}-\u{0cb9}\u{0cc0}-\u{0cc4}\u{0cc7}-\u{0cc8}\u{0cca}-\u{0ccb}\u{0cd5}-\u{0cd6}\u{0ce0}-\u{0ce1}\u{0ce6}-\u{0cef}\u{0d02}-\u{0d03}\u{0d05}-\u{0d0c}\u{0d0e}-\u{0d10}\u{0d12}-\u{0d28}\u{0d2a}-\u{0d39}\u{0d3e}-\u{0d40}\u{0d46}-\u{0d48}\u{0d4a}-\u{0d4c}\u{0d60}-\u{0d61}\u{0d66}-\u{0d6f}\u{0d82}-\u{0d83}\u{0d85}-\u{0d96}\u{0d9a}-\u{0db1}\u{0db3}-\u{0dbb}\u{0dc0}-\u{0dc6}\u{0dcf}-\u{0dd1}\u{0dd8}-\u{0ddf}\u{0df2}-\u{0df4}\u{0e01}-\u{0e30}\u{0e32}-\u{0e33}\u{0e40}-\u{0e46}\u{0e4f}-\u{0e5b}\u{0e81}-\u{0e82}\u{0e87}-\u{0e88}\u{0e94}-\u{0e97}\u{0e99}-\u{0e9f}\u{0ea1}-\u{0ea3}\u{0eaa}-\u{0eab}\u{0ead}-\u{0eb0}\u{0eb2}-\u{0eb3}\u{0ec0}-\u{0ec4}\u{0ed0}-\u{0ed9}\u{0edc}-\u{0edd}\u{0f00}-\u{0f17}\u{0f1a}-\u{0f34}\u{0f3e}-\u{0f47}\u{0f49}-\u{0f6a}\u{0f88}-\u{0f8b}\u{0fbe}-\u{0fc5}\u{0fc7}-\u{0fcc}\u{1000}-\u{1021}\u{1023}-\u{1027}\u{1029}-\u{102a}\u{1040}-\u{1057}\u{10a0}-\u{10c5}\u{10d0}-\u{10f8}\u{1100}-\u{1159}\u{115f}-\u{11a2}\u{11a8}-\u{11f9}\u{1200}-\u{1206}\u{1208}-\u{1246}\u{124a}-\u{124d}\u{1250}-\u{1256}\u{125a}-\u{125d}\u{1260}-\u{1286}\u{128a}-\u{128d}\u{1290}-\u{12ae}\u{12b2}-\u{12b5}\u{12b8}-\u{12be}\u{12c2}-\u{12c5}\u{12c8}-\u{12ce}\u{12d0}-\u{12d6}\u{12d8}-\u{12ee}\u{12f0}-\u{130e}\u{1312}-\u{1315}\u{1318}-\u{131e}\u{1320}-\u{1346}\u{1348}-\u{135a}\u{1361}-\u{137c}\u{13a0}-\u{13f4}\u{1401}-\u{1676}\u{1681}-\u{169a}\u{16a0}-\u{16f0}\u{1700}-\u{170c}\u{170e}-\u{1711}\u{1720}-\u{1731}\u{1735}-\u{1736}\u{1740}-\u{1751}\u{1760}-\u{176c}\u{176e}-\u{1770}\u{1780}-\u{17b6}\u{17be}-\u{17c5}\u{17c7}-\u{17c8}\u{17d4}-\u{17da}\u{17e0}-\u{17e9}\u{1810}-\u{1819}\u{1820}-\u{1877}\u{1880}-\u{18a8}\u{1e00}-\u{1e9b}\u{1ea0}-\u{1ef9}\u{1f00}-\u{1f15}\u{1f18}-\u{1f1d}\u{1f20}-\u{1f45}\u{1f48}-\u{1f4d}\u{1f50}-\u{1f57}\u{1f5f}-\u{1f7d}\u{1f80}-\u{1fb4}\u{1fb6}-\u{1fbc}\u{1fc2}-\u{1fc4}\u{1fc6}-\u{1fcc}\u{1fd0}-\u{1fd3}\u{1fd6}-\u{1fdb}\u{1fe0}-\u{1fec}\u{1ff2}-\u{1ff4}\u{1ff6}-\u{1ffc}\u{210a}-\u{2113}\u{2119}-\u{211d}\u{212a}-\u{212d}\u{212f}-\u{2131}\u{2133}-\u{2139}\u{213d}-\u{213f}\u{2145}-\u{2149}\u{2160}-\u{2183}\u{2336}-\u{237a}\u{249c}-\u{24e9}\u{3005}-\u{3007}\u{3021}-\u{3029}\u{3031}-\u{3035}\u{3038}-\u{303c}\u{3041}-\u{3096}\u{309d}-\u{309f}\u{30a1}-\u{30fa}\u{30fc}-\u{30ff}\u{3105}-\u{312c}\u{3131}-\u{318e}\u{3190}-\u{31b7}\u{31f0}-\u{321c}\u{3220}-\u{3243}\u{3260}-\u{327b}\u{327f}-\u{32b0}\u{32c0}-\u{32cb}\u{32d0}-\u{32fe}\u{3300}-\u{3376}\u{337b}-\u{33dd}\u{33e0}-\u{33fe}\u{3400}-\u{4db5}\u{4e00}-\u{9fa5}\u{a000}-\u{a48c}\u{ac00}-\u{d7a3}\u{e000}-\u{fa2d}\u{fa30}-\u{fa6a}\u{fb00}-\u{fb06}\u{fb13}-\u{fb17}\u{ff21}-\u{ff3a}\u{ff41}-\u{ff5a}\u{ff66}-\u{ffbe}\u{ffc2}-\u{ffc7}\u{ffca}-\u{ffcf}\u{ffd2}-\u{ffd7}\u{ffda}-\u{ffdc}\u{10300}-\u{1031e}\u{10320}-\u{10323}\u{10330}-\u{1034a}\u{10400}-\u{10425}\u{10428}-\u{1044d}\u{1d000}-\u{1d0f5}\u{1d100}-\u{1d126}\u{1d12a}-\u{1d166}\u{1d16a}-\u{1d172}\u{1d183}-\u{1d184}\u{1d18c}-\u{1d1a9}\u{1d1ae}-\u{1d1dd}\u{1d400}-\u{1d454}\u{1d456}-\u{1d49c}\u{1d49e}-\u{1d49f}\u{1d4a5}-\u{1d4a6}\u{1d4a9}-\u{1d4ac}\u{1d4ae}-\u{1d4b9}\u{1d4bd}-\u{1d4c0}\u{1d4c2}-\u{1d4c3}\u{1d4c5}-\u{1d505}\u{1d507}-\u{1d50a}\u{1d50d}-\u{1d514}\u{1d516}-\u{1d51c}\u{1d51e}-\u{1d539}\u{1d53b}-\u{1d53e}\u{1d540}-\u{1d544}\u{1d54a}-\u{1d550}\u{1d552}-\u{1d6a3}\u{1d6a8}-\u{1d7c9}\u{20000}-\u{2a6d6}\u{2f800}-\u{2fa1d}\u{f0000}-\u{ffffd}\u{100000}-\u{10fffd}\p{Cs}]).*?(?-mix:[\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}])))|(?-mix:(?m-ix:\A(?-mix:[^\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]).*?(?-mix:[\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]))|(?m-ix:(?-mix:[\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}]).*?(?-mix:[^\u{05be 05c0 05c3 061b 061f 06dd 0710 07b1 200f fb1d fb3e}\u{05d0}-\u{05ea}\u{05f0}-\u{05f4}\u{0621}-\u{063a}\u{0640}-\u{064a}\u{066d}-\u{066f}\u{0671}-\u{06d5}\u{06e5}-\u{06e6}\u{06fa}-\u{06fe}\u{0700}-\u{070d}\u{0712}-\u{072c}\u{0780}-\u{07a5}\u{fb1f}-\u{fb28}\u{fb2a}-\u{fb36}\u{fb38}-\u{fb3c}\u{fb40}-\u{fb41}\u{fb43}-\u{fb44}\u{fb46}-\u{fbb1}\u{fbd3}-\u{fd3d}\u{fd50}-\u{fd8f}\u{fd92}-\u{fdc7}\u{fdf0}-\u{fdfc}\u{fe70}-\u{fe74}\u{fe76}-\u{fefc}])\z))/.freeze
94
+
95
+ # Names of each codepoint table in the RFC-3454 appendices
96
+ TITLES = {
97
+ "A.1" => "Unassigned code points in Unicode 3.2",
98
+ "B.1" => "Commonly mapped to nothing",
99
+ "B.2" => "Mapping for case-folding used with NFKC",
100
+ "B.3" => "Mapping for case-folding used with no normalization",
101
+ "C.1" => "Space characters",
102
+ "C.1.1" => "ASCII space characters",
103
+ "C.1.2" => "Non-ASCII space characters",
104
+ "C.2" => "Control characters",
105
+ "C.2.1" => "ASCII control characters",
106
+ "C.2.2" => "Non-ASCII control characters",
107
+ "C.3" => "Private use",
108
+ "C.4" => "Non-character code points",
109
+ "C.5" => "Surrogate codes",
110
+ "C.6" => "Inappropriate for plain text",
111
+ "C.7" => "Inappropriate for canonical representation",
112
+ "C.8" => "Change display properties or are deprecated",
113
+ "C.9" => "Tagging characters",
114
+ "D.1" => "Characters with bidirectional property \"R\" or \"AL\"",
115
+ "D.2" => "Characters with bidirectional property \"L\"",
116
+ }.freeze
117
+
118
+ # Regexps matching each codepoint table in the RFC-3454 appendices
119
+ REGEXPS = {
120
+ "A.1" => IN_A_1,
121
+ "B.1" => IN_B_1,
122
+ "B.2" => IN_B_2,
123
+ "B.3" => IN_B_3,
124
+ "C.1.1" => IN_C_1_1,
125
+ "C.1.2" => IN_C_1_2,
126
+ "C.2.1" => IN_C_2_1,
127
+ "C.2.2" => IN_C_2_2,
128
+ "C.3" => IN_C_3,
129
+ "C.4" => IN_C_4,
130
+ "C.5" => IN_C_5,
131
+ "C.6" => IN_C_6,
132
+ "C.7" => IN_C_7,
133
+ "C.8" => IN_C_8,
134
+ "C.9" => IN_C_9,
135
+ "D.1" => IN_D_1,
136
+ "D.2" => IN_D_2,
137
+ }.freeze
138
+
139
+ MAPPINGS = {
140
+ "B.1" => [IN_B_1, MAP_B_1].freeze,
141
+ "B.2" => [IN_B_2, MAP_B_2].freeze,
142
+ "B.3" => [IN_B_3, MAP_B_3].freeze,
143
+ }.freeze
144
+
145
+ end
146
+ end
@@ -0,0 +1,85 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Net
4
+ class IMAP
5
+ module StringPrep
6
+
7
+ # Defined in RFC-4505[https://www.rfc-editor.org/rfc/rfc4505] §3, The +trace+
8
+ # profile of \StringPrep is used by the +ANONYMOUS+ \SASL mechanism.
9
+ module Trace
10
+
11
+ # Defined in RFC-4505[https://www.rfc-editor.org/rfc/rfc4505] §3.
12
+ STRINGPREP_PROFILE = "trace"
13
+
14
+ # >>>
15
+ # The character repertoire of this profile is Unicode 3.2 [Unicode].
16
+ UNASSIGNED_TABLE = "A.1"
17
+
18
+ # >>>
19
+ # No mapping is required by this profile.
20
+ MAPPING_TABLES = nil
21
+
22
+ # >>>
23
+ # No Unicode normalization is required by this profile.
24
+ NORMALIZATION = nil
25
+
26
+ # From RFC-4505[https://www.rfc-editor.org/rfc/rfc4505] §3, The "trace"
27
+ # Profile of "Stringprep":
28
+ # >>>
29
+ # Characters from the following tables of [StringPrep] are prohibited:
30
+ #
31
+ # - C.2.1 (ASCII control characters)
32
+ # - C.2.2 (Non-ASCII control characters)
33
+ # - C.3 (Private use characters)
34
+ # - C.4 (Non-character code points)
35
+ # - C.5 (Surrogate codes)
36
+ # - C.6 (Inappropriate for plain text)
37
+ # - C.8 (Change display properties are deprecated)
38
+ # - C.9 (Tagging characters)
39
+ #
40
+ # No additional characters are prohibited.
41
+ PROHIBITED_TABLES = %w[C.2.1 C.2.2 C.3 C.4 C.5 C.6 C.8 C.9].freeze
42
+
43
+ # >>>
44
+ # This profile requires bidirectional character checking per Section 6
45
+ # of [StringPrep].
46
+ CHECK_BIDI = true
47
+
48
+ module_function
49
+
50
+ # From RFC-4505[https://www.rfc-editor.org/rfc/rfc4505] §3, The "trace"
51
+ # Profile of "Stringprep":
52
+ # >>>
53
+ # The character repertoire of this profile is Unicode 3.2 [Unicode].
54
+ #
55
+ # No mapping is required by this profile.
56
+ #
57
+ # No Unicode normalization is required by this profile.
58
+ #
59
+ # The list of unassigned code points for this profile is that provided
60
+ # in Appendix A of [StringPrep]. Unassigned code points are not
61
+ # prohibited.
62
+ #
63
+ # Characters from the following tables of [StringPrep] are prohibited:
64
+ # (documented on PROHIBITED_TABLES)
65
+ #
66
+ # This profile requires bidirectional character checking per Section 6
67
+ # of [StringPrep].
68
+ def stringprep_trace(string, **opts)
69
+ StringPrep.stringprep(
70
+ string,
71
+ unassigned: UNASSIGNED_TABLE,
72
+ maps: MAPPING_TABLES,
73
+ prohibited: PROHIBITED_TABLES,
74
+ normalization: NORMALIZATION,
75
+ bidi: CHECK_BIDI,
76
+ profile: STRINGPREP_PROFILE,
77
+ **opts,
78
+ )
79
+ end
80
+
81
+ end
82
+
83
+ end
84
+ end
85
+ end