Useful Python Scripts

Zero Width Space Inserter

kswinsert200b.py
#!/usr/bin/env/ python3
# -*- coding: utf-8 -*-
 
prog_version = '1.1'
 
def insert(input_text, insert_char = "\u200b"):
	""""""
	karen_consonants = set("ကခဂဃငစဆၡဇညတထဒနပဖဘမယရလဝသဟအဧ")
	# Karen Consonants: before which we may insert a U+200b
	karen_chars = set({chr(x) for x in range(4096, 4256)}) | set({chr(x) for x in range(43616, 43644)})
	# Makes a set of all Myanmar characters
 
	opening_parentheses = set("([{")
	# parenthetic characters which may start a new line after karen text
	closing_parentheses = set(")]}")
	#characters after which a line my break if directly followed by a Karen consonant
 
	input_text = input_text.replace("\u200b", "")
	# Note, even though we're making the insert_char changable for test purposes, replacing any random character that comes in would be dangerous. So we'll leave the replace part as \u200b.
 
 
	output_text, last_char = [], ''
	for char in input_text:
		if char in karen_consonants and (last_char in karen_chars or last_char in closing_parentheses):
			output_text.append(insert_char + char)
		elif char in opening_parentheses and last_char in karen_chars:
			output_text.append(insert_char + char)
		else:
			output_text.append(char)
		last_char = char
	output_text = ''.join(output_text)
	corrections = (
		("ခ{}ရံာ်", "ခရံာ်"),
		("ပ{}တြၢၤ", "ပတြၢၤ"),
	)
	for old, new in corrections:
		output_text = output_text.replace(old.format(insert_char), new)
	return output_text
 
def test_insert():
	import unittest
	class TestSequenceFunctions(unittest.TestCase):
		def test_basic(self):
			data = "လံာ်စီဆှံအတၢ်ကွဲးအသးတဖၣ်န့ၣ်ဟဲလၢယွၤဆံးအါလဲၣ်."
			self.assertEqual("လံာ်-စီ-ဆှံ-အ-တၢ်-ကွဲး-အ-သး-တ-ဖၣ်-န့ၣ်-ဟဲ-လၢ-ယွၤ-ဆံး-အါ-လဲၣ်.", insert(data, "-"))
 
		def test_hkree(self):
			data = "ပှၤခရံာ်ဖိအကျဲ"
			self.assertEqual("ပှၤ-ခရံာ်-ဖိ-အ-ကျဲ", insert(data, "-"))
 
		def test_batrur(self):
			data = "လံာ်စံးထီၣ်ပတြၢၤအပူၤ"
			self.assertEqual("လံာ်-စံး-ထီၣ်-ပတြၢၤ-အ-ပူၤ", insert(data, "-"))
 
		def test_parentheses(self):
			data = "တၢ်ကွဲးအသးလၢ(လံာ်စံးထီၣ်ပတြၢၤ)အပူၤ"
			self.assertEqual("တၢ်-ကွဲး-အ-သး-လၢ-(လံာ်-စံး-ထီၣ်-ပတြၢၤ)-အ-ပူၤ", insert(data, "-"))
			data = "တၢ်ကွဲးအသးလၢ[လံာ်စံးထီၣ်ပတြၢၤ]အပူၤ"
			self.assertEqual("တၢ်-ကွဲး-အ-သး-လၢ-[လံာ်-စံး-ထီၣ်-ပတြၢၤ]-အ-ပူၤ", insert(data, "-"))
			data = "တၢ်ကွဲးအသးလၢ{လံာ်စံးထီၣ်ပတြၢၤ}အပူၤ"
			self.assertEqual("တၢ်-ကွဲး-အ-သး-လၢ-{လံာ်-စံး-ထီၣ်-ပတြၢၤ}-အ-ပူၤ", insert(data, "-"))
			data = "တၢ်[]ကွဲး{အ}သးလၢ{လံာ်စံး(ထီၣ်ပတြၢၤ}အပူၤ]"
			self.assertEqual("တၢ်-[]-ကွဲး-{အ}-သး-လၢ-{လံာ်-စံး-(ထီၣ်-ပတြၢၤ}-အ-ပူၤ]", insert(data, "-"))
 
		def test_latin(self):
			data = "တိနီၣ် – လံာ်စီဆှံOld Testemantအပူန့ၣ်လီၤ. လံာ်စီဆှံအသီတအိၣ်ဒံးဘၣ်."
			self.assertEqual("တိ-နီၣ် – လံာ်-စီ-ဆှံOld Testemantအ-ပူ-န့ၣ်-လီၤ. လံာ်-စီ-ဆှံ-အ-သီ-တ-အိၣ်-ဒံး-ဘၣ်.", insert(data, "-"))
			data = "ဖဲကစၢ်ယွၤစံးဝဲတၢ်,ကွဲးအ. သးန့ၣ်မ့ၢ်အစံးဝဲ"
			self.assertEqual("ဖဲ-က-စၢ်-ယွၤ-စံး-ဝဲ-တၢ်,ကွဲး-အ. သး-န့ၣ်-မ့ၢ်-အ-စံး-ဝဲ", insert(data, "-"))
 
	suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
	unittest.TextTestRunner(verbosity = 2).run(suite)
 
if __name__ == "__main__":
	import argparse, sys
 
	parser = argparse.ArgumentParser(
	   description = 'this program takes a string of text potentially containing Sgaw Karen Unicode and inserts U+200b before each consonant if that consonant is preceded by any character in the Myanmar Unicode block',
	   epilog = 'this script was written by Ben Sharon')
	parser.add_argument('infile', nargs='?', action = "store", default = None, help = 'the input file, default is stdin')
	parser.add_argument('outfile', nargs='?', action = "store", default = None, help = 'the output file, default is stdout')
	parser.add_argument('-v', '--version', action = 'version', version = prog_version)
	args = parser.parse_args()
 
	if args.infile:
		karen_text = open(args.infile, 'r').read()
 
		if args.outfile:
			open(args.outfile, 'w').write(insert(karen_text))
		else:
			open(args.infile, 'w').write(insert(karen_text))
	else:
		test_insert()

Spell Checker

kswspellchecker.py
#!/usr/bin/env/ python3
# -*- coding: utf-8 -*-
"""
~/.scripts/sgkspellcheck.py
 
this module has two modes of operation, as a command line utility, and as a python module.
as a commandline utility:
	usage: sgkspellcheck.py [-h] [-v] [infile] [outfile]
 
	this script takes an input file, and looks for strings of Myanmar characters
	which do not make a valid Sgaw Karen syllable. if it finds any invalid syllables,
	it will print information about them it to the outfile.
 
	positional arguments:
	  infile         the input file, if no file is provided, the script will run
					 tests instead
	  outfile        the output file, default is stdout
 
	optional arguments:
	  -h, --help     show this help message and exit
	  -v, --version  show program's version number and exit
 
as a python module:
	parse_string_to_phrases(iterable)
	takes a string of text, and returns a list of all runs of Myanmar characters
 
	parse_phrase_to_syllables(sgk_phrase)
	takes a string of Myanmar characters, and returns a list of syllables
 
	check_syllable_spelling(syllable)
	takes a string containing a syllable, and determines whether it is a valid syllable or not
 
"""
import unicodedata, binascii
 
programVersion = '1.2'
 
class SyllableChecker:
 
	def __init__(self):
 
		self.consonants = set("ကခဂဃငစဆၡဇညတထဒနပဖဘမယရလဝသဟအဧ")
		self.medials = set("ြျှွၠ")
		self.vowels = set("ါံၢုူ့ဲိီ")
		self.tones = set("ၢၣးာၤ")
		self.asat = "်"
		self.numerals = set("၁၂၃၄၅၆၇၈၉၀")
		self.myanmarCharacters = (set({chr(x) for x in range(4096, 4256)}) | set({chr(x) for x in range(43616, 43644)}))
		self.medialCombatibilityMap = {
			"က": set("ွြၠျ"), "ခ": set("ွြၠျ"), "စ": set("ွြှ"), "ဆ": set("ွြှ"), "ည": set("ွ"), "တ": set("ွြ"),
			"ထ": set("ွြ"), "ဒ": set("ွ"), "န": set("ွ"), "ပ": set("ွြှၠျ"), "ဖ": set("ွြှၠျ"), "ဘ": set("ှၠျ"),
			"မ": set("ွှၠျ"), "ယ": set("ွ"), "ရ": set("ွ"), "လ": set("ွ"), "သ": set("ွြ"),
		}
		self.lastSyllable, self.errorLog = "", []
 
	def parseSyllables(self, string):
		syllable, inSyllable, lastCharacter = '', False, ''
		for currentCharacter in string:
			if not inSyllable and currentCharacter in self.myanmarCharacters:
				inSyllable = True; syllable += currentCharacter
			elif inSyllable and (
					currentCharacter in self.consonants or
						(lastCharacter not in self.numerals and currentCharacter in self.numerals) or
						(lastCharacter in self.numerals and currentCharacter not in self.numerals and currentCharacter in self.myanmarCharacters)
					):
				if syllable: yield syllable; syllable = currentCharacter
			elif inSyllable and currentCharacter in self.myanmarCharacters:
				syllable += currentCharacter
			else:
				inSyllable = False
				if syllable:
					yield syllable
					syllable = ''
			lastCharacter = currentCharacter
		if syllable: yield syllable
 
	def __charSetNumberAssignment(self, char):
		if char in self.consonants:
			return 1
		elif char in self.medials:
			return 2
		elif char in self.vowels:
			return 3
		elif char in self.tones:
			return 4
		elif char in self.asat:
			return 5
		return 0
 
	def isValidSyllable(self, syllable):
		isCorrect, self.lastSyllable, self.errorLog = True, syllable, []
 
		if not syllable:
			self.errorLog.append("oops, there's nothing here")
			return False
 
		if all(c in self.numerals for c in syllable):
			return isCorrect
 
		if syllable[0] not in self.consonants:
			self.errorLog.append("this syllable does not begin with a consonant")
			isCorrect = False
 
		if syllable[-1] in self.medials:
			self.errorLog.append("ends with a medial")
			isCorrect = False
 
		try:
			if syllable[1] in self.medials and syllable[1] not in self.medialCombatibilityMap[syllable[0]]:
				isCorrect = False
		except KeyError:
			self.errorLog.append("illegal combination of consonant and medial")
			isCorrect = False
		except IndexError: # A single character syllable, can't address the second character.
			pass
 
		if len(syllable) > 2 and syllable[-1] == self.asat and syllable[-2] not in 'ၣာၢ':
			self.errorLog.append("ahthee or hathee without asat")
			isCorrect = False
 
		s, c = syllable.replace("ၢ်", "်"), self.__charSetNumberAssignment
		if not all(c(s[i]) < c(s[i+1]) for i in range(len(s)-1)):
			self.errorLog.append("does not follow the basic structure of a syllable")
			isCorrect = False
 
		return isCorrect
 
	def stringContainsOnlyValidKarenSyllables(self, string):
		for syllable in self.parseSyllables(string):
			if not self.isValidSyllable(syllable):
				return False
		return True
 
	def getLastSyllableReport(self, verbosity = 3):
		reportMessage = 'Syllable Report\n'
		if verbosity == 1:
			reportMessage += '  Text: {}, Errors: {}'.format(self.lastSyllable, len(self.errorLog))
		elif verbosity > 1:
			reportMessage += '  Text: {}\n'.format(self.lastSyllable)
			if self.errorLog:
				reportMessage += '  Error Messages:\n'
				for errorMessage in self.errorLog:
					reportMessage += '    {}\n'.format(errorMessage)
		if verbosity > 2:
			reportMessage += "  Unicode Data (in syllable order):\n"
			for char in self.lastSyllable:
				reportMessage += '    U+{}: {}\n'.format(str(hex(ord(char))).replace('0x', '', 1).upper(), unicodedata.name(char, '<undefined>'))
		return reportMessage
# End SyllableChecker class
 
###################################################################################
# Test Code
###################################################################################
 
def test():
	import unittest, random
	class TestSequenceFunctions(unittest.TestCase):
 
		def setUp(self):
			self.checker = SyllableChecker()
 
		def test_validSyllable(self):
			testSyllables = ("တၢ်",)
#					"ဒီး", "ယွၤ", "ဟဲ", "လီၤ", "လၢ", "တၢ်", "အၢၣ်", "အ", "ပူၤ", "ဆၢ", "ထၢၣ်",
#					"အီၤ", "ဖဲ", "န့ၣ်", "ကိး", "ထီၣ်", "အ", "မံၤ", "လဲၤ", "မဲာ်", "ညါ", "က",
#					"စၢ်", "သး", "အိၣ်", "တၢ်", "ညီၤ", "ကီ", "ဘျုး", "ဖှိၣ်", "မ့ၢ်", "တီ", "အိၣ်",
#					"ဝဲ", "အါ", "မး", "ဟံး", "ဃာ်", "ဘျုး", "ပှၤ", "ထိ", "ဂီၢ်", "ပျၢ်",
#					"အၢ", "သီ", "သ", "ရူး", "မၣ်", "ဒဲး", "ဖိ", "အ", "ကျဲ", "ပှၤ", "ခ", "ရံာ်",
#			)
			for syllable in testSyllables:
				self.assertTrue(self.checker.isValidSyllable(syllable))
 
		def test_nonConsonantStart(self):
			testSyllables = (
					"ၤ", "ၢ်", "ံ", "ံဖံံ", "့တီ့", "ျကြျံၤ", "ျဒီိး", "ိကၤး", "ဲကျ",
			)
			for syllable in testSyllables:
				self.assertFalse(self.checker.isValidSyllable(syllable))
 
		def test_medialEnd(self):
			testSyllables = ("ကြ", "ကျ", "ကၠ", "ညြ", "တွ", "ဝှ",)
			for syllable in testSyllables:
				self.assertFalse(self.checker.isValidSyllable(syllable))
 
		def test_randomMyanmarSyllables(self):
			myanmarChars = ''.join((chr(x) for x in range(4096, 4256))) + ''.join((chr(x) for x in range(43616, 43644)))
 
			for i in range(30):
				for j in range(5):
					testStr = ''.join((random.choice(myanmarChars) for n in range(i)))
					try:
						self.checker.isValidSyllable(testStr)
					except Exception as e:
						self.fail("isValidSyllable('{}') unexpectedly raised an exception: ({})".format(testStr, e))
 
		def test_randomUnicodeSyllables(self):
			chars = ''.join((chr(x) for x in range(0, 65536)))
 
			for i in range(30):
				for j in range(5):
					testStr = ''.join((random.choice(chars) for n in range(i)))
					try:
						self.checker.isValidSyllable(testStr)
					except Exception as e:
						self.fail("isValidSyllable('{}') unexpectedly raised an exception: ({})".format(testStr, e))
 
		def test_parseSyllables(self):
			self.assertEqual("ဒီး-စီၤ-ဖံ-လံ-ပူး-စံး-ဘၣ်-အီၤ", '-'.join(self.checker.parseSyllables("ဒီးစီၤဖံလံပူးစံးဘၣ်အီၤ")))
			self.assertEqual("ဒီး-စီၤ-ဖံ-လံ-ပူး-စံး-ဘၣ်-အီၤ", '-'.join(self.checker.parseSyllables("somethingဒီးစီၤဖံလံပူးစံးဘၣ်အီၤ")))
			self.assertEqual("ဒီး-စီၤ-ဖံ-လံ-ပူး-စံး-ဘၣ်-အီၤ", '-'.join(self.checker.parseSyllables("ဒီးစီၤဖံလံပူးစံးဘၣ်အီၤsomething")))
			self.assertEqual("ဒီး-စီၤ-ဖံ-လံ-ပူး-စံး-ဘၣ်-အီၤ", '-'.join(self.checker.parseSyllables("ဒီးစီၤ ဖံလံပူးစံး ဘၣ်အီၤ")))
 
		def test_stringContainsOnlyValidKarenSyllables(self):
			self.assertTrue(self.checker.stringContainsOnlyValidKarenSyllables("ဒီးစီၤဖံလံပူးစံးဘၣ်အီၤ"))
			self.assertTrue(self.checker.stringContainsOnlyValidKarenSyllables("somethingဒီးစီၤဖံလံပူးစံးဘၣ်အီၤ"))
			self.assertTrue(self.checker.stringContainsOnlyValidKarenSyllables("ဒီးစီၤဖံလံပူးစံးဘၣ်အီၤsomething"))
			self.assertTrue(self.checker.stringContainsOnlyValidKarenSyllables("ဒီးစီၤ ဖံလံပူးစံး ဘၣ်အီၤ"))
 
			self.assertFalse(self.checker.stringContainsOnlyValidKarenSyllables("ဒီးစီၤဖံလံပူးးစံးဘၣ်အီၤ"))
			self.assertFalse(self.checker.stringContainsOnlyValidKarenSyllables("somethingံဒီးစီၤဖံလံပူးစံးဘၣ်အီၤ"))
			self.assertFalse(self.checker.stringContainsOnlyValidKarenSyllables("ဒီးစီၤဖံလံပူးစံးဘၣ်ကြအီၤsomething"))
			self.assertFalse(self.checker.stringContainsOnlyValidKarenSyllables("ဒီးစီၤ ဖံလံပူးစံး ဘၣ်အီၤ့"))
 
	suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
	unittest.TextTestRunner(verbosity = 2).run(suite)
 
###################################################################################
# Application Code
###################################################################################
 
if __name__ == "__main__":
	import argparse, sys
 
	parser = argparse.ArgumentParser(
	   description = 'this script takes an input file, and looks for strings of Myanmar characters which do not make a valid Sgaw Karen syllable',
	   epilog = 'this script was written by Ben Sharon')
	parser.add_argument('infile', nargs='?', action = "store", default = None, help = 'the input file, if no file is provided, the script will run tests instead')
	parser.add_argument('outfile', nargs='?', action = "store", default = None, help = 'the output file, default is stdout')
	parser.add_argument('-v', '--version', action = 'version', version = programVersion)
	args = parser.parse_args()
 
	if args.infile:
		input_text = open(args.infile, 'r').readlines()
 
		try:
			output_file = open(args.outfile, 'w')
		except TypeError:
			output_file = sys.stdout
 
		checker, errorNumber = SyllableChecker(), 0
		for i, line in enumerate(input_text):
			if not checker.stringContainsOnlyValidKarenSyllables(line):
				errorNumber += 1
				output_file.write("Error #{}: Spelling Error: Line {}:\n{}\n".format(errorNumber, i + 1, checker.getLastSyllableReport()))
		output_file.close()
 
	else:
		test()
sgkconvertknu.py
#!/usr/bin/env/ python3
# -*- coding: utf-8 -*-
"""
~/.scripts/sgkconvertknu.py
the following script can be used in two modes, either as a python
module, or as a commandline utility.
as a commandline utility:
	usage: kconvertknu.py [-h] [-v] [infile] [outfile]
 
	this program takes a file written in Sgaw Karen KNU font, and converts it into
	Karen unicode
 
	positional arguments:
	  infile         the input file, if no file is provided, the script will run
					 tests instead
	  outfile        the output file, if output is not provided, the input file
					 will be overwriten
 
	optional arguments:
	  -h, --help     show this help message and exit
	  -v, --version  show program's version number and exit
 
	this script was written by Ben Sharon
 
as a python module:
	converter(input_str)
	this function takes an input_str contianing Karen text encoded with the KNU font,
	and returns a string with characters swaped to the coresponding unicode character.
	the proccess isn't perfect, because there is not a 100% 1 to 1 relationship
	between the two encodings. it is recommended to run the preprosessor first.
	that will improve the situation, although there is still some ambiguity. the
	following is a list of some of the known ambiguities:
 
		* wa followed by plersee (is a number and a colon, or the syllable 'wa')
 
	preprocessor(input_str)
	this funciton takes an input string and returns a string with some preprocessing in
	preparation for converter()
 
 
"""
 
prog_version = '1.1'
 
import re
 
def converter(input_str):
	char_map = {
		"H": "ံ", "h": "့", ";": "း", "=": "-", "<": ",",
		"I": ".", "$": ".", "“": "“", "?": "“",
		"/": "”", "A": " ", ":": "★", "0": "၀",
		"1": "၁", "2": "၂", "3": "၃", "4": "၄", "5": "၅",
		"6": "၆", "7": "၇", "8": "၈", "9": "၉", "u": "က",
		"c": "ခ", "*": "ဂ", "C": "ဃ", "]": "င", "p": "စ",
		"q": "ဆ", "Z": "ဇ", "n": "ည", "!": "ည", "w": "တ",
		"x": "ထ", "'": "ဒ", "e": "န", "E": "န", "M": "န့",
		"y": "ပ", "z": "ဖ", "b": "ဘ", "r": "မ", ",": "ယ",
		"s": "ျ", "V": "ျ့", "%": "ရ", "&": "ရ", "j": "ြ",
		"}": "ြ", "-": "ြ", "_": "ြ", "v": "လ", "F": "ၠ",
		"G": "ွ","U": "ွ့", "o": "သ", "[": "ဟ", "O": "ှ့",
		"+": "ှု", "t": "အ", "{": "ဧ", "g": "ါ", "m": "ာ်",
		"d": "ိ", "D": "ီ", "k": "ု", "K": "ု", "l": "ူ",
		"L": "ူ", "J": "ဲ", "X": "ၢ", ">": "ၢ်", "f": "်",
		".": "ၣ်", "R": "ၤ", "]": "=", "S": "ှ",
		"\u1AFD": ":",
	}
 
	output_str = ""
	for char in input_str:
		try:
			output_str += char_map[char]
		except KeyError:
			output_str += char
	return output_str
 
def preprocessor(knu_str):
	regex_rules = (
		("([j}_-])(.)", "\\2\\1"), 
		# Switch any ra's with the next character
 
		("0([dfghjklm.RSDFGHJX>])", "ဝ\\1"),
		# Change any wa's that appear to be part of a syllable ahead of
		# time. This will fix most of them, however, there is still an
		# ambiguity with wa's followed by plersee because knu also uses
		# plersee between numbers
 
		("([1234567890]);", "\\1\u1AFD")
		# Change any plersee following a number (other than zero,
		# because that's ambiguous) into an intermediate \u1AFD which
		# will then be changed into a colon in the main converter stage
	)
 
	for pat, repl in regex_rules:
		knu_str = re.sub(pat, repl, knu_str)
 
	return knu_str
 
 
def test():
	import unittest
	class TestSequenceFunctions(unittest.TestCase):
 
		def test_preprocessor_ra_switcher(self):
			self.assertEqual("uj", preprocessor("ju"))
 
		def test_preprocessor_wa_fixer(self):
			self.assertEqual("ဝg", preprocessor("0g"))
 
	suite = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
	unittest.TextTestRunner(verbosity = 2).run(suite)
 
 
if __name__ == "__main__":
	import argparse, sys
 
	parser = argparse.ArgumentParser(
	   description = 'this program takes a file written in Sgaw Karen KNU font, and converts it into Karen unicode',
	   epilog = 'this script was written by Ben Sharon')
	parser.add_argument('infile', nargs='?', action = "store", default = None, help = 'the input file, if no file is provided, the script will run tests instead')
	parser.add_argument('outfile', nargs='?', action = "store", default = None, help = 'the output file, if output is not provided, the input file will be overwriten')
	parser.add_argument('-v', '--version', action = 'version', version = prog_version)
	args = parser.parse_args()
 
	if args.infile:
		file_text = open(args.infile, 'r', encoding='utf-8').read()
		file_text = preprocessor(file_text)
		file_text = converter(file_text)
 
		if args.outfile:
			open(args.outfile, 'w', encoding='utf-8').write(file_text)
		else:
			open(args.infile, 'w', encoding='utf-8').write(file_text)
 
	else:
		test()

Discussion

Sai , 2016/10/10 03:30

Hi How to run this on Python? Please

ColinAbeta, http://rivotril.clubeo.com/ , 2017/10/17 05:01

health care spending account <a href=http://www.jefaismonsite.fr/stilnox>http://www.jefaismonsite.fr/stilnox</a> windows 8 pro tablet pc

ColinAbeta, http://rivotril.clubeo.com/ , 2017/10/18 07:05

where can i get cheap prescription glasses <a href=http://rivotril.clubeo.com/>http://rivotril.clubeo.com/</a> manhattan internal medicine associates

ColinAbeta, http://restoril.actolio.com/ , 2017/10/19 00:49

american journal of lifestyle medicine <a href=http://reductil.esforos.com/>http://reductil.esforos.com/</a> columbia university public health

ColinAbeta, http://sibutramina.esmiweb.es/ , 2017/10/19 17:51

doctors during the black plague <a href=http://sibutramina.esmiweb.es/>http://sibutramina.esmiweb.es/</a> consultants in internal medicine

ColinAbeta, http://reductil.esforos.com/ , 2017/10/23 04:13

viagra free trial coupon <a href=http://www.jefaismonsite.fr/stilnox>http://www.jefaismonsite.fr/stilnox</a> is dr oz a real doctor

ScottSlacy, http://rivotril.clubeo.com/ , 2017/10/24 08:24

uc davis health system jobs <a href=http://www.bricksite.com/belviq>http://www.bricksite.com/belviq</a> retin a online pharmacy

ScottSlacy, http://tenuate.iconosites.com/ , 2017/10/24 21:10

urine temperature drug test <a href=http://www.jefaismonsite.fr/stilnox>http://www.jefaismonsite.fr/stilnox</a> kroger pharmacy lebanon ohio

PeterTam, http://phendimetrazine.mycindr.com/ , 2017/10/28 18:07

sonic screwdriver tenth doctor <a href=https://fastin.zankyou.com/>https://fastin.zankyou.com/</a> senior prescription drug assistance program

PeterTam, http://blogscat.com/a/reductil/ , 2017/10/30 00:03

healthcare it jobs florida <a href=http://phendimetrazine.mycindr.com/>http://phendimetrazine.mycindr.com/</a> how to pass a home drug test for opiates

PeterTam, http://ionamin.app.rsvpify.com/ , 2017/10/30 17:49

dog food prescription diet <a href=https://fastin.zankyou.com/>https://fastin.zankyou.com/</a> vicodin online no prescription needed

PeterTam, http://blogscat.com/a/reductil/ , 2017/11/01 14:10

healthcare jobs in charleston sc <a href=http://reductil.wifeo.com/>http://reductil.wifeo.com/</a> prescription for bacterial vag

PeterTam, https://fastin.zankyou.com , 2017/11/02 05:19

boogie board lcd writing tablets <a href=http://qsymia.luvbirds.com/>http://qsymia.luvbirds.com/</a> nike prescription glasses flexon

Enter your comment. Wiki syntax is allowed:
If you can't read the letters on the image, download this .wav file to get them read to you.
 
development/scripts.txt · Last modified: 2015/07/08 15:39 by ben
Public Domain
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0