cmsg.py 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536
  1. __filename__ = "cmsg.py"
  2. __author__ = "Bob Mottram"
  3. __credits__ = ["Bartek Radwanski"]
  4. __license__ = "AGPL3+"
  5. __version__ = "1.0.0"
  6. __maintainer__ = "Bob Mottram"
  7. __email__ = "bob@freedombone.net"
  8. __status__ = "Production"
  9. import re
  10. dict = {
  11. '<f0>': "\u001b[38;5;0m",
  12. '<f1>': "\u001b[38;5;1m",
  13. '<f2>': "\u001b[38;5;2m",
  14. '<f3>': "\u001b[38;5;3m",
  15. '<f4>': "\u001b[38;5;4m",
  16. '<f5>': "\u001b[38;5;5m",
  17. '<f6>': "\u001b[38;5;6m",
  18. '<f7>': "\u001b[38;5;7m",
  19. '<f8>': "\u001b[38;5;8m",
  20. '<f9>': "\u001b[38;5;9m",
  21. '<f10>': "\u001b[38;5;10m",
  22. '<f11>': "\u001b[38;5;11m",
  23. '<f12>': "\u001b[38;5;12m",
  24. '<f13>': "\u001b[38;5;13m",
  25. '<f14>': "\u001b[38;5;14m",
  26. '<f15>': "\u001b[38;5;15m",
  27. '<f16>': "\u001b[38;5;16m",
  28. '<f17>': "\u001b[38;5;17m",
  29. '<f18>': "\u001b[38;5;18m",
  30. '<f19>': "\u001b[38;5;19m",
  31. '<f20>': "\u001b[38;5;20m",
  32. '<f21>': "\u001b[38;5;21m",
  33. '<f22>': "\u001b[38;5;22m",
  34. '<f23>': "\u001b[38;5;23m",
  35. '<f24>': "\u001b[38;5;24m",
  36. '<f25>': "\u001b[38;5;25m",
  37. '<f26>': "\u001b[38;5;26m",
  38. '<f27>': "\u001b[38;5;27m",
  39. '<f28>': "\u001b[38;5;28m",
  40. '<f29>': "\u001b[38;5;29m",
  41. '<f30>': "\u001b[38;5;30m",
  42. '<f31>': "\u001b[38;5;31m",
  43. '<f32>': "\u001b[38;5;32m",
  44. '<f33>': "\u001b[38;5;33m",
  45. '<f34>': "\u001b[38;5;34m",
  46. '<f35>': "\u001b[38;5;35m",
  47. '<f36>': "\u001b[38;5;36m",
  48. '<f37>': "\u001b[38;5;37m",
  49. '<f38>': "\u001b[38;5;38m",
  50. '<f39>': "\u001b[38;5;39m",
  51. '<f40>': "\u001b[38;5;40m",
  52. '<f41>': "\u001b[38;5;41m",
  53. '<f42>': "\u001b[38;5;42m",
  54. '<f43>': "\u001b[38;5;43m",
  55. '<f44>': "\u001b[38;5;44m",
  56. '<f45>': "\u001b[38;5;45m",
  57. '<f46>': "\u001b[38;5;46m",
  58. '<f47>': "\u001b[38;5;47m",
  59. '<f48>': "\u001b[38;5;48m",
  60. '<f49>': "\u001b[38;5;49m",
  61. '<f50>': "\u001b[38;5;50m",
  62. '<f51>': "\u001b[38;5;51m",
  63. '<f52>': "\u001b[38;5;52m",
  64. '<f53>': "\u001b[38;5;53m",
  65. '<f54>': "\u001b[38;5;54m",
  66. '<f55>': "\u001b[38;5;55m",
  67. '<f56>': "\u001b[38;5;56m",
  68. '<f57>': "\u001b[38;5;57m",
  69. '<f58>': "\u001b[38;5;58m",
  70. '<f59>': "\u001b[38;5;59m",
  71. '<f60>': "\u001b[38;5;60m",
  72. '<f61>': "\u001b[38;5;61m",
  73. '<f62>': "\u001b[38;5;62m",
  74. '<f63>': "\u001b[38;5;63m",
  75. '<f64>': "\u001b[38;5;64m",
  76. '<f65>': "\u001b[38;5;65m",
  77. '<f66>': "\u001b[38;5;66m",
  78. '<f67>': "\u001b[38;5;67m",
  79. '<f68>': "\u001b[38;5;68m",
  80. '<f69>': "\u001b[38;5;69m",
  81. '<f70>': "\u001b[38;5;70m",
  82. '<f71>': "\u001b[38;5;71m",
  83. '<f72>': "\u001b[38;5;72m",
  84. '<f73>': "\u001b[38;5;73m",
  85. '<f74>': "\u001b[38;5;74m",
  86. '<f75>': "\u001b[38;5;75m",
  87. '<f76>': "\u001b[38;5;76m",
  88. '<f77>': "\u001b[38;5;77m",
  89. '<f78>': "\u001b[38;5;78m",
  90. '<f79>': "\u001b[38;5;79m",
  91. '<f80>': "\u001b[38;5;80m",
  92. '<f81>': "\u001b[38;5;81m",
  93. '<f82>': "\u001b[38;5;82m",
  94. '<f83>': "\u001b[38;5;83m",
  95. '<f84>': "\u001b[38;5;84m",
  96. '<f85>': "\u001b[38;5;85m",
  97. '<f86>': "\u001b[38;5;86m",
  98. '<f87>': "\u001b[38;5;87m",
  99. '<f88>': "\u001b[38;5;88m",
  100. '<f89>': "\u001b[38;5;89m",
  101. '<f90>': "\u001b[38;5;90m",
  102. '<f91>': "\u001b[38;5;91m",
  103. '<f92>': "\u001b[38;5;92m",
  104. '<f93>': "\u001b[38;5;93m",
  105. '<f94>': "\u001b[38;5;94m",
  106. '<f95>': "\u001b[38;5;95m",
  107. '<f96>': "\u001b[38;5;96m",
  108. '<f97>': "\u001b[38;5;97m",
  109. '<f98>': "\u001b[38;5;98m",
  110. '<f99>': "\u001b[38;5;99m",
  111. '<f100>': "\u001b[38;5;100m",
  112. '<f101>': "\u001b[38;5;101m",
  113. '<f102>': "\u001b[38;5;102m",
  114. '<f103>': "\u001b[38;5;103m",
  115. '<f104>': "\u001b[38;5;104m",
  116. '<f105>': "\u001b[38;5;105m",
  117. '<f106>': "\u001b[38;5;106m",
  118. '<f107>': "\u001b[38;5;107m",
  119. '<f108>': "\u001b[38;5;108m",
  120. '<f109>': "\u001b[38;5;109m",
  121. '<f110>': "\u001b[38;5;110m",
  122. '<f111>': "\u001b[38;5;111m",
  123. '<f112>': "\u001b[38;5;112m",
  124. '<f113>': "\u001b[38;5;113m",
  125. '<f114>': "\u001b[38;5;114m",
  126. '<f115>': "\u001b[38;5;115m",
  127. '<f116>': "\u001b[38;5;116m",
  128. '<f117>': "\u001b[38;5;117m",
  129. '<f118>': "\u001b[38;5;118m",
  130. '<f119>': "\u001b[38;5;119m",
  131. '<f120>': "\u001b[38;5;120m",
  132. '<f121>': "\u001b[38;5;121m",
  133. '<f122>': "\u001b[38;5;122m",
  134. '<f123>': "\u001b[38;5;123m",
  135. '<f124>': "\u001b[38;5;124m",
  136. '<f125>': "\u001b[38;5;125m",
  137. '<f126>': "\u001b[38;5;126m",
  138. '<f127>': "\u001b[38;5;127m",
  139. '<f128>': "\u001b[38;5;128m",
  140. '<f129>': "\u001b[38;5;129m",
  141. '<f130>': "\u001b[38;5;130m",
  142. '<f131>': "\u001b[38;5;131m",
  143. '<f132>': "\u001b[38;5;132m",
  144. '<f133>': "\u001b[38;5;133m",
  145. '<f134>': "\u001b[38;5;134m",
  146. '<f135>': "\u001b[38;5;135m",
  147. '<f136>': "\u001b[38;5;136m",
  148. '<f137>': "\u001b[38;5;137m",
  149. '<f138>': "\u001b[38;5;138m",
  150. '<f139>': "\u001b[38;5;139m",
  151. '<f140>': "\u001b[38;5;140m",
  152. '<f141>': "\u001b[38;5;141m",
  153. '<f142>': "\u001b[38;5;142m",
  154. '<f143>': "\u001b[38;5;143m",
  155. '<f144>': "\u001b[38;5;144m",
  156. '<f145>': "\u001b[38;5;145m",
  157. '<f146>': "\u001b[38;5;146m",
  158. '<f147>': "\u001b[38;5;147m",
  159. '<f148>': "\u001b[38;5;148m",
  160. '<f149>': "\u001b[38;5;149m",
  161. '<f150>': "\u001b[38;5;150m",
  162. '<f151>': "\u001b[38;5;151m",
  163. '<f152>': "\u001b[38;5;152m",
  164. '<f153>': "\u001b[38;5;153m",
  165. '<f154>': "\u001b[38;5;154m",
  166. '<f155>': "\u001b[38;5;155m",
  167. '<f156>': "\u001b[38;5;156m",
  168. '<f157>': "\u001b[38;5;157m",
  169. '<f158>': "\u001b[38;5;158m",
  170. '<f159>': "\u001b[38;5;159m",
  171. '<f160>': "\u001b[38;5;160m",
  172. '<f161>': "\u001b[38;5;161m",
  173. '<f162>': "\u001b[38;5;162m",
  174. '<f163>': "\u001b[38;5;163m",
  175. '<f164>': "\u001b[38;5;164m",
  176. '<f165>': "\u001b[38;5;165m",
  177. '<f166>': "\u001b[38;5;166m",
  178. '<f167>': "\u001b[38;5;167m",
  179. '<f168>': "\u001b[38;5;168m",
  180. '<f169>': "\u001b[38;5;169m",
  181. '<f170>': "\u001b[38;5;170m",
  182. '<f171>': "\u001b[38;5;171m",
  183. '<f172>': "\u001b[38;5;172m",
  184. '<f173>': "\u001b[38;5;173m",
  185. '<f174>': "\u001b[38;5;174m",
  186. '<f175>': "\u001b[38;5;175m",
  187. '<f176>': "\u001b[38;5;176m",
  188. '<f177>': "\u001b[38;5;177m",
  189. '<f178>': "\u001b[38;5;178m",
  190. '<f179>': "\u001b[38;5;179m",
  191. '<f180>': "\u001b[38;5;180m",
  192. '<f181>': "\u001b[38;5;181m",
  193. '<f182>': "\u001b[38;5;182m",
  194. '<f183>': "\u001b[38;5;183m",
  195. '<f184>': "\u001b[38;5;184m",
  196. '<f185>': "\u001b[38;5;185m",
  197. '<f186>': "\u001b[38;5;186m",
  198. '<f187>': "\u001b[38;5;187m",
  199. '<f188>': "\u001b[38;5;188m",
  200. '<f189>': "\u001b[38;5;189m",
  201. '<f190>': "\u001b[38;5;190m",
  202. '<f191>': "\u001b[38;5;191m",
  203. '<f192>': "\u001b[38;5;192m",
  204. '<f193>': "\u001b[38;5;193m",
  205. '<f194>': "\u001b[38;5;194m",
  206. '<f195>': "\u001b[38;5;195m",
  207. '<f196>': "\u001b[38;5;196m",
  208. '<f197>': "\u001b[38;5;197m",
  209. '<f198>': "\u001b[38;5;198m",
  210. '<f199>': "\u001b[38;5;199m",
  211. '<f200>': "\u001b[38;5;200m",
  212. '<f201>': "\u001b[38;5;201m",
  213. '<f202>': "\u001b[38;5;202m",
  214. '<f203>': "\u001b[38;5;203m",
  215. '<f204>': "\u001b[38;5;204m",
  216. '<f205>': "\u001b[38;5;205m",
  217. '<f206>': "\u001b[38;5;206m",
  218. '<f207>': "\u001b[38;5;207m",
  219. '<f208>': "\u001b[38;5;208m",
  220. '<f209>': "\u001b[38;5;209m",
  221. '<f210>': "\u001b[38;5;210m",
  222. '<f211>': "\u001b[38;5;211m",
  223. '<f212>': "\u001b[38;5;212m",
  224. '<f213>': "\u001b[38;5;213m",
  225. '<f214>': "\u001b[38;5;214m",
  226. '<f215>': "\u001b[38;5;215m",
  227. '<f216>': "\u001b[38;5;216m",
  228. '<f217>': "\u001b[38;5;217m",
  229. '<f218>': "\u001b[38;5;218m",
  230. '<f219>': "\u001b[38;5;219m",
  231. '<f220>': "\u001b[38;5;220m",
  232. '<f221>': "\u001b[38;5;221m",
  233. '<f222>': "\u001b[38;5;222m",
  234. '<f223>': "\u001b[38;5;223m",
  235. '<f224>': "\u001b[38;5;224m",
  236. '<f225>': "\u001b[38;5;225m",
  237. '<f226>': "\u001b[38;5;226m",
  238. '<f227>': "\u001b[38;5;227m",
  239. '<f228>': "\u001b[38;5;228m",
  240. '<f229>': "\u001b[38;5;229m",
  241. '<f230>': "\u001b[38;5;230m",
  242. '<f231>': "\u001b[38;5;231m",
  243. '<f232>': "\u001b[38;5;232m",
  244. '<f233>': "\u001b[38;5;233m",
  245. '<f234>': "\u001b[38;5;234m",
  246. '<f235>': "\u001b[38;5;235m",
  247. '<f236>': "\u001b[38;5;236m",
  248. '<f237>': "\u001b[38;5;237m",
  249. '<f238>': "\u001b[38;5;238m",
  250. '<f239>': "\u001b[38;5;239m",
  251. '<f240>': "\u001b[38;5;240m",
  252. '<f241>': "\u001b[38;5;241m",
  253. '<f242>': "\u001b[38;5;242m",
  254. '<f243>': "\u001b[38;5;243m",
  255. '<f244>': "\u001b[38;5;244m",
  256. '<f245>': "\u001b[38;5;245m",
  257. '<f246>': "\u001b[38;5;246m",
  258. '<f247>': "\u001b[38;5;247m",
  259. '<f248>': "\u001b[38;5;248m",
  260. '<f249>': "\u001b[38;5;249m",
  261. '<f250>': "\u001b[38;5;250m",
  262. '<f251>': "\u001b[38;5;251m",
  263. '<f252>': "\u001b[38;5;252m",
  264. '<f253>': "\u001b[38;5;253m",
  265. '<f254>': "\u001b[38;5;254m",
  266. '<f255>': "\u001b[38;5;255m",
  267. '<b0>': "\u001b[48;5;0m",
  268. '<b1>': "\u001b[48;5;1m",
  269. '<b2>': "\u001b[48;5;2m",
  270. '<b3>': "\u001b[48;5;3m",
  271. '<b4>': "\u001b[48;5;4m",
  272. '<b5>': "\u001b[48;5;5m",
  273. '<b6>': "\u001b[48;5;6m",
  274. '<b7>': "\u001b[48;5;7m",
  275. '<b8>': "\u001b[48;5;8m",
  276. '<b9>': "\u001b[48;5;9m",
  277. '<b10>': "\u001b[48;5;10m",
  278. '<b11>': "\u001b[48;5;11m",
  279. '<b12>': "\u001b[48;5;12m",
  280. '<b13>': "\u001b[48;5;13m",
  281. '<b14>': "\u001b[48;5;14m",
  282. '<b15>': "\u001b[48;5;15m",
  283. '<b16>': "\u001b[48;5;16m",
  284. '<b17>': "\u001b[48;5;17m",
  285. '<b18>': "\u001b[48;5;18m",
  286. '<b19>': "\u001b[48;5;19m",
  287. '<b20>': "\u001b[48;5;20m",
  288. '<b21>': "\u001b[48;5;21m",
  289. '<b22>': "\u001b[48;5;22m",
  290. '<b23>': "\u001b[48;5;23m",
  291. '<b24>': "\u001b[48;5;24m",
  292. '<b25>': "\u001b[48;5;25m",
  293. '<b26>': "\u001b[48;5;26m",
  294. '<b27>': "\u001b[48;5;27m",
  295. '<b28>': "\u001b[48;5;28m",
  296. '<b29>': "\u001b[48;5;29m",
  297. '<b30>': "\u001b[48;5;30m",
  298. '<b31>': "\u001b[48;5;31m",
  299. '<b32>': "\u001b[48;5;32m",
  300. '<b33>': "\u001b[48;5;33m",
  301. '<b34>': "\u001b[48;5;34m",
  302. '<b35>': "\u001b[48;5;35m",
  303. '<b36>': "\u001b[48;5;36m",
  304. '<b37>': "\u001b[48;5;37m",
  305. '<b38>': "\u001b[48;5;38m",
  306. '<b39>': "\u001b[48;5;39m",
  307. '<b40>': "\u001b[48;5;40m",
  308. '<b41>': "\u001b[48;5;41m",
  309. '<b42>': "\u001b[48;5;42m",
  310. '<b43>': "\u001b[48;5;43m",
  311. '<b44>': "\u001b[48;5;44m",
  312. '<b45>': "\u001b[48;5;45m",
  313. '<b46>': "\u001b[48;5;46m",
  314. '<b47>': "\u001b[48;5;47m",
  315. '<b48>': "\u001b[48;5;48m",
  316. '<b49>': "\u001b[48;5;49m",
  317. '<b50>': "\u001b[48;5;50m",
  318. '<b51>': "\u001b[48;5;51m",
  319. '<b52>': "\u001b[48;5;52m",
  320. '<b53>': "\u001b[48;5;53m",
  321. '<b54>': "\u001b[48;5;54m",
  322. '<b55>': "\u001b[48;5;55m",
  323. '<b56>': "\u001b[48;5;56m",
  324. '<b57>': "\u001b[48;5;57m",
  325. '<b58>': "\u001b[48;5;58m",
  326. '<b59>': "\u001b[48;5;59m",
  327. '<b60>': "\u001b[48;5;60m",
  328. '<b61>': "\u001b[48;5;61m",
  329. '<b62>': "\u001b[48;5;62m",
  330. '<b63>': "\u001b[48;5;63m",
  331. '<b64>': "\u001b[48;5;64m",
  332. '<b65>': "\u001b[48;5;65m",
  333. '<b66>': "\u001b[48;5;66m",
  334. '<b67>': "\u001b[48;5;67m",
  335. '<b68>': "\u001b[48;5;68m",
  336. '<b69>': "\u001b[48;5;69m",
  337. '<b70>': "\u001b[48;5;70m",
  338. '<b71>': "\u001b[48;5;71m",
  339. '<b72>': "\u001b[48;5;72m",
  340. '<b73>': "\u001b[48;5;73m",
  341. '<b74>': "\u001b[48;5;74m",
  342. '<b75>': "\u001b[48;5;75m",
  343. '<b76>': "\u001b[48;5;76m",
  344. '<b77>': "\u001b[48;5;77m",
  345. '<b78>': "\u001b[48;5;78m",
  346. '<b79>': "\u001b[48;5;79m",
  347. '<b80>': "\u001b[48;5;80m",
  348. '<b81>': "\u001b[48;5;81m",
  349. '<b82>': "\u001b[48;5;82m",
  350. '<b83>': "\u001b[48;5;83m",
  351. '<b84>': "\u001b[48;5;84m",
  352. '<b85>': "\u001b[48;5;85m",
  353. '<b86>': "\u001b[48;5;86m",
  354. '<b87>': "\u001b[48;5;87m",
  355. '<b88>': "\u001b[48;5;88m",
  356. '<b89>': "\u001b[48;5;89m",
  357. '<b90>': "\u001b[48;5;90m",
  358. '<b91>': "\u001b[48;5;91m",
  359. '<b92>': "\u001b[48;5;92m",
  360. '<b93>': "\u001b[48;5;93m",
  361. '<b94>': "\u001b[48;5;94m",
  362. '<b95>': "\u001b[48;5;95m",
  363. '<b96>': "\u001b[48;5;96m",
  364. '<b97>': "\u001b[48;5;97m",
  365. '<b98>': "\u001b[48;5;98m",
  366. '<b99>': "\u001b[48;5;99m",
  367. '<b100>': "\u001b[48;5;100m",
  368. '<b101>': "\u001b[48;5;101m",
  369. '<b102>': "\u001b[48;5;102m",
  370. '<b103>': "\u001b[48;5;103m",
  371. '<b104>': "\u001b[48;5;104m",
  372. '<b105>': "\u001b[48;5;105m",
  373. '<b106>': "\u001b[48;5;106m",
  374. '<b107>': "\u001b[48;5;107m",
  375. '<b108>': "\u001b[48;5;108m",
  376. '<b109>': "\u001b[48;5;109m",
  377. '<b110>': "\u001b[48;5;110m",
  378. '<b111>': "\u001b[48;5;111m",
  379. '<b112>': "\u001b[48;5;112m",
  380. '<b113>': "\u001b[48;5;113m",
  381. '<b114>': "\u001b[48;5;114m",
  382. '<b115>': "\u001b[48;5;115m",
  383. '<b116>': "\u001b[48;5;116m",
  384. '<b117>': "\u001b[48;5;117m",
  385. '<b118>': "\u001b[48;5;118m",
  386. '<b119>': "\u001b[48;5;119m",
  387. '<b120>': "\u001b[48;5;120m",
  388. '<b121>': "\u001b[48;5;121m",
  389. '<b122>': "\u001b[48;5;122m",
  390. '<b123>': "\u001b[48;5;123m",
  391. '<b124>': "\u001b[48;5;124m",
  392. '<b125>': "\u001b[48;5;125m",
  393. '<b126>': "\u001b[48;5;126m",
  394. '<b127>': "\u001b[48;5;127m",
  395. '<b128>': "\u001b[48;5;128m",
  396. '<b129>': "\u001b[48;5;129m",
  397. '<b130>': "\u001b[48;5;130m",
  398. '<b131>': "\u001b[48;5;131m",
  399. '<b132>': "\u001b[48;5;132m",
  400. '<b133>': "\u001b[48;5;133m",
  401. '<b134>': "\u001b[48;5;134m",
  402. '<b135>': "\u001b[48;5;135m",
  403. '<b136>': "\u001b[48;5;136m",
  404. '<b137>': "\u001b[48;5;137m",
  405. '<b138>': "\u001b[48;5;138m",
  406. '<b139>': "\u001b[48;5;139m",
  407. '<b140>': "\u001b[48;5;140m",
  408. '<b141>': "\u001b[48;5;141m",
  409. '<b142>': "\u001b[48;5;142m",
  410. '<b143>': "\u001b[48;5;143m",
  411. '<b144>': "\u001b[48;5;144m",
  412. '<b145>': "\u001b[48;5;145m",
  413. '<b146>': "\u001b[48;5;146m",
  414. '<b147>': "\u001b[48;5;147m",
  415. '<b148>': "\u001b[48;5;148m",
  416. '<b149>': "\u001b[48;5;149m",
  417. '<b150>': "\u001b[48;5;150m",
  418. '<b151>': "\u001b[48;5;151m",
  419. '<b152>': "\u001b[48;5;152m",
  420. '<b153>': "\u001b[48;5;153m",
  421. '<b154>': "\u001b[48;5;154m",
  422. '<b155>': "\u001b[48;5;155m",
  423. '<b156>': "\u001b[48;5;156m",
  424. '<b157>': "\u001b[48;5;157m",
  425. '<b158>': "\u001b[48;5;158m",
  426. '<b159>': "\u001b[48;5;159m",
  427. '<b160>': "\u001b[48;5;160m",
  428. '<b161>': "\u001b[48;5;161m",
  429. '<b162>': "\u001b[48;5;162m",
  430. '<b163>': "\u001b[48;5;163m",
  431. '<b164>': "\u001b[48;5;164m",
  432. '<b165>': "\u001b[48;5;165m",
  433. '<b166>': "\u001b[48;5;166m",
  434. '<b167>': "\u001b[48;5;167m",
  435. '<b168>': "\u001b[48;5;168m",
  436. '<b169>': "\u001b[48;5;169m",
  437. '<b170>': "\u001b[48;5;170m",
  438. '<b171>': "\u001b[48;5;171m",
  439. '<b172>': "\u001b[48;5;172m",
  440. '<b173>': "\u001b[48;5;173m",
  441. '<b174>': "\u001b[48;5;174m",
  442. '<b175>': "\u001b[48;5;175m",
  443. '<b176>': "\u001b[48;5;176m",
  444. '<b177>': "\u001b[48;5;177m",
  445. '<b178>': "\u001b[48;5;178m",
  446. '<b179>': "\u001b[48;5;179m",
  447. '<b180>': "\u001b[48;5;180m",
  448. '<b181>': "\u001b[48;5;181m",
  449. '<b182>': "\u001b[48;5;182m",
  450. '<b183>': "\u001b[48;5;183m",
  451. '<b184>': "\u001b[48;5;184m",
  452. '<b185>': "\u001b[48;5;185m",
  453. '<b186>': "\u001b[48;5;186m",
  454. '<b187>': "\u001b[48;5;187m",
  455. '<b188>': "\u001b[48;5;188m",
  456. '<b189>': "\u001b[48;5;189m",
  457. '<b190>': "\u001b[48;5;190m",
  458. '<b191>': "\u001b[48;5;191m",
  459. '<b192>': "\u001b[48;5;192m",
  460. '<b193>': "\u001b[48;5;193m",
  461. '<b194>': "\u001b[48;5;194m",
  462. '<b195>': "\u001b[48;5;195m",
  463. '<b196>': "\u001b[48;5;196m",
  464. '<b197>': "\u001b[48;5;197m",
  465. '<b198>': "\u001b[48;5;198m",
  466. '<b199>': "\u001b[48;5;199m",
  467. '<b200>': "\u001b[48;5;200m",
  468. '<b201>': "\u001b[48;5;201m",
  469. '<b202>': "\u001b[48;5;202m",
  470. '<b203>': "\u001b[48;5;203m",
  471. '<b204>': "\u001b[48;5;204m",
  472. '<b205>': "\u001b[48;5;205m",
  473. '<b206>': "\u001b[48;5;206m",
  474. '<b207>': "\u001b[48;5;207m",
  475. '<b208>': "\u001b[48;5;208m",
  476. '<b209>': "\u001b[48;5;209m",
  477. '<b210>': "\u001b[48;5;210m",
  478. '<b211>': "\u001b[48;5;211m",
  479. '<b212>': "\u001b[48;5;212m",
  480. '<b213>': "\u001b[48;5;213m",
  481. '<b214>': "\u001b[48;5;214m",
  482. '<b215>': "\u001b[48;5;215m",
  483. '<b216>': "\u001b[48;5;216m",
  484. '<b217>': "\u001b[48;5;217m",
  485. '<b218>': "\u001b[48;5;218m",
  486. '<b219>': "\u001b[48;5;219m",
  487. '<b220>': "\u001b[48;5;220m",
  488. '<b221>': "\u001b[48;5;221m",
  489. '<b222>': "\u001b[48;5;222m",
  490. '<b223>': "\u001b[48;5;223m",
  491. '<b224>': "\u001b[48;5;224m",
  492. '<b225>': "\u001b[48;5;225m",
  493. '<b226>': "\u001b[48;5;226m",
  494. '<b227>': "\u001b[48;5;227m",
  495. '<b228>': "\u001b[48;5;228m",
  496. '<b229>': "\u001b[48;5;229m",
  497. '<b230>': "\u001b[48;5;230m",
  498. '<b231>': "\u001b[48;5;231m",
  499. '<b232>': "\u001b[48;5;232m",
  500. '<b233>': "\u001b[48;5;233m",
  501. '<b234>': "\u001b[48;5;234m",
  502. '<b235>': "\u001b[48;5;235m",
  503. '<b236>': "\u001b[48;5;236m",
  504. '<b237>': "\u001b[48;5;237m",
  505. '<b238>': "\u001b[48;5;238m",
  506. '<b239>': "\u001b[48;5;239m",
  507. '<b240>': "\u001b[48;5;240m",
  508. '<b241>': "\u001b[48;5;241m",
  509. '<b242>': "\u001b[48;5;242m",
  510. '<b243>': "\u001b[48;5;243m",
  511. '<b244>': "\u001b[48;5;244m",
  512. '<b245>': "\u001b[48;5;245m",
  513. '<b246>': "\u001b[48;5;246m",
  514. '<b247>': "\u001b[48;5;247m",
  515. '<b248>': "\u001b[48;5;248m",
  516. '<b249>': "\u001b[48;5;249m",
  517. '<b250>': "\u001b[48;5;250m",
  518. '<b251>': "\u001b[48;5;251m",
  519. '<b252>': "\u001b[48;5;252m",
  520. '<b253>': "\u001b[48;5;253m",
  521. '<b254>': "\u001b[48;5;254m",
  522. '<b255>': "\u001b[48;5;255m",
  523. '<u>': "\u001b[4m",
  524. '<b>': "\u001b[1m",
  525. '<r>': "\u001b[0m"
  526. }
  527. # Create a regular expression from the dictionary keys
  528. pattern = re.compile("(%s)" % "|".join(map(re.escape, dict.keys())))
  529. def cmsg(text):
  530. # For each match, look-up corresponding value in dictionary
  531. return pattern.sub(
  532. lambda mo: dict[mo.string[mo.start(): mo.end()]], text) + "\u001b[0m"