diff --git a/AIOMG.py b/AIOMG.py
deleted file mode 100644
index a3062ab..0000000
--- a/AIOMG.py
+++ /dev/null
@@ -1,179 +0,0 @@
-# A.I.O.M.G
-# Alert Image Or Map Generator
-
-# This script will take an image or generate a map from an CAP alert.
-
-# first, look for an image, it could be encoded in base64 or have a link (i haven't seen an image with a link though...)
-# then, if no image could be found, generate a polygon, output image in 1:1 ratio.
-# if any of the generation processes fails, just use the fallback image.
-
-import re, base64, requests, os, subprocess, shutil
-
-import matplotlib
-matplotlib.use('Agg')
-
-import matplotlib.pyplot as plt
-from mpl_toolkits.basemap import Basemap
-from matplotlib.patches import Polygon
-from matplotlib.lines import Line2D
-
-# Requirments: matplotlib, basemap
-
-ImageOutput = "./images/alertImage.png"
-
-def overlay_polygon(map_object, lats, lons, label='', color='red'):
- x, y = map_object(lons, lats)
- map_object.plot(x, y, marker=None, color=color, linewidth=2, linestyle='-', label=label)
-
-def fill_polygon(map_object, lats, lons, color='red', alpha=0.5):
- x, y = map_object(lons, lats)
- polygon = Polygon(list(zip(x, y)), facecolor=color, alpha=alpha)
- map_object.ax.add_patch(polygon)
-
-def calculate_bounding_box(coordinates):
- min_lat = min(lat for lat, _ in coordinates)
- max_lat = max(lat for lat, _ in coordinates)
- min_lon = min(lon for _, lon in coordinates)
- max_lon = max(lon for _, lon in coordinates)
- return min_lat, max_lat, min_lon, max_lon
-
-def GenerateMapImage(InfoXML, PolyColor="#FF0000"):
- print("[AIOMG]: Generating map image...")
- if "#" not in PolyColor: PolyColor = "#" + PolyColor
- if len(PolyColor) > 7: PolyColor = "#FF0000"
- for char in PolyColor:
- if 'G' <= char <= 'Z' or 'g' <= char <= 'z': PolyColor = "#FF0000"
-
-
- # Get alert title TODO
- #HEADLINE = "Test alert"
- HEADLINE = re.search(r'\s*(.*?)\s*', InfoXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
-
- # Get all polygons TODO
-
- #Areas = re.findall(r'\s*(.*?)\s*', InfoXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- AllCoords = re.findall(r'\s*(.*?)\s*', InfoXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
-
- #for SingleArea in Areas:
- # Polygon = re.search(r'\s*(.*?)\s*', SingleArea, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- # print(Polygon)
-
- # Generate map
- coordinates_string = ""
- for i in AllCoords:
- coordinates_string = coordinates_string + f" {i}"
- polygon_coordinates = [list(map(float, item.split(','))) for item in coordinates_string.split()]
- min_lat, max_lat, min_lon, max_lon = calculate_bounding_box(polygon_coordinates)
- lat_center = (min_lat + max_lat) / 2
- lon_center = (min_lon + max_lon) / 2
- lat_range = max_lat - min_lat
- lon_range = max_lon - min_lon
-
- if lat_range > lon_range: lon_range = lat_range
- else: lat_range = lon_range
-
- fig = plt.figure(figsize=(10, 10))
- # For outlined polygon
- #world_map = Basemap(projection='mill', lat_1=-60, lat_2=90, lon_0=lon_center, llcrnrlat=lat_center - 1.1 * lat_range, urcrnrlat=lat_center + 1.1 * lat_range, llcrnrlon=lon_center - 1.1 * lon_range, urcrnrlon=lon_center + 1.1 * lon_range, resolution='i')
- ax = fig.add_subplot(111)
-
- #world_map = Basemap(ax=ax, projection='mill', lat_1=-60, lat_2=90, lon_0=lon_center, llcrnrlat=lat_center - 1.1 * lat_range, urcrnrlat=lat_center + 1.1 * lat_range, llcrnrlon=lon_center - 1.1 * lon_range, urcrnrlon=lon_center + 1.1 * lon_range, resolution='i')
-
- world_map = Basemap(
- ax=ax,
- projection='cyl', # Using cylindrical projection to minimize distortion
- lon_0=lon_center,
- llcrnrlat=lat_center - 1.1 * lat_range,
- urcrnrlat=lat_center + 1.1 * lat_range,
- llcrnrlon=lon_center - 1.1 * lon_range,
- urcrnrlon=lon_center + 1.1 * lon_range,
- resolution='i'
- )
-
- world_map.drawcoastlines()
- world_map.drawcountries()
- world_map.drawcounties()
- world_map.drawstates()
- world_map.fillcontinents(color='#00AA44', lake_color='#002255')
- world_map.drawmapboundary(fill_color='#002255')
- for i in AllCoords:
- i = [list(map(float, item.split(','))) for item in i.split()]
- lats, lons = zip(*i)
- fill_polygon(world_map, lats, lons, color=PolyColor, alpha=0.5)
- overlay_polygon(world_map, lats, lons, label=HEADLINE, color=PolyColor) # For outlined polygon
-
- ax.set_aspect('equal')
-
- legend_patch = Line2D([0], [0], marker='o', color='w', markerfacecolor=PolyColor, markersize=10, label=HEADLINE)
- plt.legend(handles=[legend_patch], loc='upper right')
- #plt.legend(loc='upper right') # For outlined polygon
- #plt.show() #For testing, to show the map in a window
- fig.savefig(ImageOutput, bbox_inches='tight', pad_inches=0.0, dpi=70)
-
-def ConvertImageFormat(inputAudio, outputAudio):
- result = subprocess.run(["ffmpeg", "-y", "-i", inputAudio, "-vf", "scale=-1:450", outputAudio], capture_output=True, text=True)
- if result.returncode == 0: print(f"[AIOMG]: {inputAudio} --> {outputAudio} ... Conversion successful!")
- else: print(f"[AIOMG]: {inputAudio} --> {outputAudio} ... Conversion failed: {result.stderr}")
-
-# ffmpeg -i input_image.png -vf "scale=-1:600" output_image.png
-
-def ResizeImage():
- pass
-
-def GetImage(imagelink, Output, DecodeType):
- if DecodeType == 1:
- print("Decoding image from BASE64...")
- with open(Output, "wb") as fh: fh.write(base64.decodebytes(imagelink))
- elif DecodeType == 0:
- print("Downloading image...")
- r = requests.get(imagelink)
- with open(Output, 'wb') as f: f.write(r.content)
-
-def GrabImage(InfoXML):
- resources = re.findall(r'\s*(.*?)\s*', InfoXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- if "image/jpeg" in str(resources): pass
- elif "image/png" in str(resources): pass
- else: return False
- print("[AIOMG]: Grabbing image from CAP...")
-
- try:
- for ImageResource in resources:
- if "" in ImageResource:
- ImageLink = bytes(re.search(r'\s*(.*?)\s*', ImageResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1), 'utf-8')
- ImageType = re.search(r'\s*(.*?)\s*', ImageResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- Decode = 1
- else:
- ImageLink = re.search(r'\s*(.*?)\s*', ImageResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- ImageType = re.search(r'\s*(.*?)\s*', ImageResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- Decode = 0
-
- if ImageType == "image/jpeg":
- GetImage(ImageLink,"./Audio/tmp/PreImage.jpg",Decode)
- ConvertImageFormat("./Audio/tmp/PreImage.jpg", ImageOutput)
- os.remove("./Audio/tmp/PreImage.jpg")
- elif ImageType == "image/png":
- GetImage(ImageLink,ImageOutput,Decode)
-
- return True
- except: return False
-
-def OutputAlertImage(InfoXML=None, InputColor="#FF0000", Fallback=False):
- if Fallback is True:
- print("[AIOMG]: Using fallback image...")
- shutil.copy("./images/fallbackImage.png", ImageOutput)
- else:
- try:
- if GrabImage(InfoXML) is True: pass
- else: GenerateMapImage(InfoXML, InputColor)
- print("[AIOMG]: Image generation finished")
- except Exception as e:
- print("[AIOMG]: Image generation failure: ", e)
- print("[AIOMG]: Using fallback image...")
- shutil.copy("./images/fallbackImage.png", ImageOutput)
-
-# for testing...
-if __name__ == "__main__":
- with open("testerX.xml", "r") as file: XML = file.read()
- INFOXML = re.search(r'\s*(.*?)\s*', XML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- INFOXML = f"{INFOXML}"
- OutputAlertImage(INFOXML) # this is the main one to run
\ No newline at end of file
diff --git a/Audio/Attn1050.wav b/Audio/Attn1050.wav
deleted file mode 100644
index cfba0ad..0000000
Binary files a/Audio/Attn1050.wav and /dev/null differ
diff --git a/QuantumENDEC.py b/QuantumENDEC.py
index 38fa37b..0419d7b 100644
--- a/QuantumENDEC.py
+++ b/QuantumENDEC.py
@@ -1,141 +1,413 @@
-with open("version.txt", "r") as f: QEversion = f.read()
+# This is QuantumENDEC, devloped by ApatheticDELL alongside Aaron and BunnyTub
+QuantumENDEC_Version = "QuantumENDEC v5 Final Beta (Public Beta 10)"
-# local imports
-from webserver import *
-from logger import Log
-import AIOMG
+XMLhistory_Folder = "./history"
+XMLqueue_Folder = "./queue"
+Assets_Folder = "./assets" # contains all webserver files (html, css) and audio files for EAS
+Tmp_Folder = "./assets/tmp"
+Config_File = "./config.json"
-import sys
-if sys.version_info.major >= 3: pass
-else: print("You are not running this program with Python 3, run it with Python 3. (Or update python)"); exit()
-
-try:
- import re, pyttsx3, requests, shutil, time, socket, threading, json, os, argparse, base64, subprocess, importlib
- import sounddevice as sd
- from scipy.io import wavfile
- from datetime import datetime, timezone
- from urllib.request import Request, urlopen
- from EASGen import EASGen
- from EAS2Text import EAS2Text
- #from itertools import zip_longest
- from pydub import AudioSegment
-except Exception as e: print(f"IMPORT FAIL: {e}.\nOne or more modules has failed to import, install the requirements!"); exit()
+QuantumStatus = 0
+# 0 = Normal
+# 1 = Restart
+# 2 = Shutdown
+
+def QEinterrupt():
+ global QuantumStatus
+ if QuantumStatus != 0: return True
+ return False
try: import pythoncom
except: pass
-if __name__ == "__main__":
+import re
+import pyttsx3
+import requests
+import shutil
+import time
+import socket
+import threading
+import json
+import os
+import argparse
+import base64
+import subprocess
+import importlib
+import signal
+
+import sounddevice as sd
+from scipy.io import wavfile
+from datetime import datetime, timezone, timedelta
+from urllib.request import Request, urlopen
+from pydub import AudioSegment
+from EASGen import EASGen
+from EAS2Text import EAS2Text
+
+import matplotlib
+import matplotlib.pyplot as plt
+from mpl_toolkits.basemap import Basemap
+from matplotlib.patches import Polygon
+from matplotlib.lines import Line2D
+
+import smtplib
+from discord_webhook import DiscordWebhook, DiscordEmbed
+from datetime import datetime
+from email.mime.multipart import MIMEMultipart
+from email.mime.text import MIMEText
+
+import random
+import string
+import sys
+import queue
+import wave
+import contextlib
+import ffmpeg
+
+import soundfile as sf
+from scipy.fft import *
+import numpy
+assert numpy
+
+from flask import Flask, request, jsonify, send_from_directory, redirect, url_for, make_response, session
+import hashlib, secrets, logging
+
+CapCatToSameOrg = { "Met": "WXR", "Admin": "EAS", "Other": "CIV", }
+SameOrgToCapCat = { "WXR":"Met", "EAS":"Admin", "CIV":"Other" }
+CapEventToSameEvent = {
+ "911Service": "TOE",
+ "accident": "CDW",
+ "admin":"ADR",
+ "aircraftCras":"LAE",
+ "airportClose":"ADR",
+ "airQuality":"SPS",
+ "airspaceClos":"ADR",
+ "amber":"CAE",
+ "ambulance":"LAE",
+ "animalDang":"CDW",
+ "animalDiseas":"CDW",
+ "animalFeed":"CEM",
+ "animalHealth":"CEM",
+ "arcticOut":"SVS",
+ "avalanche":"AVW",
+ "aviation":"LAE",
+ "biological":"BHW",
+ "blizzard":"BZW",
+ "bloodSupply":"LAE",
+ "blowingSnow":"WSW",
+ "bridgeClose":"LAE",
+ "cable":"ADR",
+ "chemical":"CHW",
+ "civil":"CEM",
+ "civilEmerg":"CEM",
+ "civilEvent":"CEM",
+ "cold":"SVS",
+ "coldWave":"SVS",
+ "crime":"CDW",
+ "damBreach":"DBW",
+ "damOverflow":"DBW",
+ "dangerPerson":"CDW",
+ "diesel":"LAE",
+ "drinkingWate":"CWW",
+ "dustStorm":"DSW",
+ "earthquake":"EQW",
+ "electric":"POS",
+ "emergFacil":"CEM",
+ "emergSupport":"CEM",
+ "explosive":"HMW",
+ "facility":"CEM",
+ "fallObject":"HMW",
+ "fire":"FRW",
+ "flashFlood":"FFW",
+ "flashFreeze":"FSW",
+ "flood":"FLW",
+ "fog":"SPS",
+ "foodSupply":"LAE",
+ "forestFire":"WFW",
+ "freezeDrzl":"WSW",
+ "freezeRain":"WSW",
+ "freezngSpray":"WSW",
+ "frost":"SPS",
+ "galeWind":"HWW",
+ "gasoline":"LAE",
+ "geophyiscal":"CEM",
+ "hazmat":"BHW",
+ "health":"BHW",
+ "heat":"SVS",
+ "heatHumidity":"SVS",
+ "heatingOil":"LAE",
+ "heatWave":"SVS",
+ "highWater":"SVS",
+ "homeCrime":"CEM",
+ "hospital":"LAE",
+ "hurricane":"HUW",
+ "hurricFrcWnd":"HUW",
+ "ice":"SPS",
+ "iceberg":"IBW",
+ "icePressure":"SPS",
+ "industCrime":"CEM",
+ "industryFire":"IFW",
+ "infectious":"DEW",
+ "internet":"ADR",
+ "lahar":"VOW",
+ "landslide":"LSW",
+ "lavaFlow":"VOW",
+ "magnetStorm":"CDW",
+ "marine":"SMW",
+ "marineSecure":"SMW",
+ "meteor":"CDW",
+ "missingPer":"MEP",
+ "missingVPer":"MEP",
+ "naturalGas":"LAE",
+ "nautical":"ADR",
+ "notam":"ADR",
+ "other":"CEM",
+ "overflood":"FLW",
+ "plant":"LAE",
+ "plantInfect":"LAE",
+ "product":"LAE",
+ "publicServic":"LAE",
+ "pyroclasFlow":"VOW",
+ "pyroclaSurge":"VOW",
+ "radiological":"RHW",
+ "railway":"LAE",
+ "rainfall":"SPS",
+ "rdCondition":"LAE",
+ "reminder":"CEM",
+ "rescue":"CEM",
+ "retailCrime":"CEM",
+ "road":"LAE",
+ "roadClose":"ADR",
+ "roadDelay":"ADR",
+ "roadUsage":"ADR",
+ "rpdCloseLead":"ADR",
+ "satellite":"ADR",
+ "schoolBus":"ADR",
+ "schoolClose":"ADR",
+ "schoolLock":"CDW",
+ "sewer":"LAE",
+ "silver":"CEM",
+ "snowfall":"WSW",
+ "snowSquall":"WSW",
+ "spclIce":"SPS",
+ "spclMarine":"SMW",
+ "squall":"SMW",
+ "storm":"SVS",
+ "stormFrcWnd":"SVS",
+ "stormSurge":"SSW",
+ "strongWind":"HWW",
+ "telephone":"LAE",
+ "temperature":"SPS",
+ "terrorism":"CDW",
+ "testMessage":"DMO",
+ "thunderstorm":"SVR",
+ "tornado":"TOR",
+ "traffic":"ADR",
+ "train":"ADR",
+ "transit":"ADR",
+ "tropStorm":"TRW",
+ "tsunami":"TSW",
+ "urbanFire":"FRW",
+ "utility":"ADR",
+ "vehicleCrime":"CEM",
+ "volcanicAsh":"VOW",
+ "volcano":"VOW",
+ "volunteer":"ADR",
+ "waste":"ADR",
+ "water":"ADR",
+ "waterspout":"SMW",
+ "weather":"SPS",
+ "wildFire":"FRW",
+ "wind":"HWW",
+ "windchill":"SPS",
+ "winterStorm":"WSW"
+}
+
+def CheckFolder(dir, Clear=False):
+ if not os.path.exists(dir): os.makedirs(dir)
+ else:
+ if Clear is True:
+ for f in os.listdir(dir): os.remove(os.path.join(dir, f))
+
+def CheckConfigVersion(InputConfig):
try:
- result = subprocess.run(["ffmpeg", "-version"], capture_output=True, text=True)
- if result.returncode == 0: print(f"Congrats, QuantumENDEC was able to detect FFMPEG!")
- else:
- print(f"QuantumENDEC failed to detect FFMPEG!: {result.stderr}")
- print("FFMPEG doesn't appear to be installed on your system, you will need to install it so it can be run on a command line. Some functions of QuantumENDEC depend on FFMPEG")
- exit()
+ if InputConfig['version'] == QuantumENDEC_Version: return True
+ else: return False
+ except: return False
+
+def createDefaultConfig():
+ NewConfig = {
+ "version": QuantumENDEC_Version,
+ "WebserverHost": "0.0.0.0",
+ "WebserverPort": "8050",
+ "PlayoutNoSAME": False,
+ "relay_en": True,
+ "relay_fr": False,
+ "Force120": False,
+ "AttentionTone": "AttnCAN.wav",
+ "Attn_BasedOnCountry": False,
+ "SAME_callsign": "QUANTUM0",
+ "SAME_ORGallowed": [],
+ "SAME_EVENTallowed": [],
+ "SAME_EVENTblocked": [],
+ "SAME_FIPSfilter": [],
+ "CGENcolor_warning": "ff2a2a",
+ "CGENcolor_watch": "ffcc00",
+ "CGENcolor_advisory": "00aa00",
+ "CGEN_ClearAfterAlert": False,
+ "ProduceImages": False,
+ "enable_discord_webhook": False,
+ "webhook_author_name": "",
+ "webhook_author_URL": "",
+ "webhook_author_iconURL": "",
+ "webhook_URL": "",
+ "webhook_sendAudio": False,
+ "enable_email": False,
+ "FancyHTML": False,
+ "email_server": "",
+ "email_server_port": "587",
+ "email_user": "",
+ "email_user_pass": "",
+ "email_sendto": [],
+ "enable_LogToTxt": True,
+ "UseSpecified_AudioOutput": False,
+ "Specified_AudioOutput": "",
+ "EnablePassThru": False,
+ "UseSpecified_Passthrough_AudioInput": False,
+ "Passthrough_AudioInput": "",
+ "UseDefaultVoices": True,
+ "TTS_Service": "pyttsx3",
+ "VoiceEN": "",
+ "VoiceFR": "",
+ "FliteVoice_EN": "",
+ "FliteVoice_FR": "",
+ "statusTest": True,
+ "statusActual": True,
+ "messagetypeAlert": True,
+ "messagetypeUpdate": True,
+ "messagetypeCancel": True,
+ "messagetypeTest": True,
+ "severityExtreme": True,
+ "severitySevere": True,
+ "severityModerate": True,
+ "severityMinor": True,
+ "severityUnknown": True,
+ "urgencyImmediate": True,
+ "urgencyExpected": True,
+ "urgencyFuture": True,
+ "urgencyPast": True,
+ "urgencyUnknown": True,
+ "AllowedLocations_Geocodes": [],
+ "TCP": False,
+ "TCP1": "streaming1.naad-adna.pelmorex.com:8080",
+ "TCP2": "streaming2.naad-adna.pelmorex.com:8080",
+ "HTTP_CAP": False,
+ "HTTP_CAP_ADDR": "",
+ "HTTP_CAP_ADDR1": "",
+ "HTTP_CAP_ADDR2": "",
+ "HTTP_CAP_ADDR3": "",
+ "HTTP_CAP_ADDR4": "",
+ "Enable_NWSCAP": False,
+ "NWSCAP_AtomLink": "https://api.weather.gov/alerts/active.atom",
+ "SAME-AudioDevice-Monitor": False,
+ "SAME_AudioStream_Monitors": False,
+ "SAME-AudioStream-Monitor1": "",
+ "SAME-AudioStream-Monitor2": "",
+ "SAME-AudioStream-Monitor3": "",
+ "SAME-AudioStream-Monitor4": ""
+ }
+
+ try:
+ with open(Config_File, 'w') as json_file: json.dump(NewConfig, json_file, indent=2)
+ except: return False
+ return True
+
+def DuplicateSAME(ZCZC):
+ file = f"{Tmp_Folder}/SameHistory.txt"
+ try:
+ with open(file, "r") as f:
+ content = f.read()
+ if ZCZC in content: return True
except:
- print("FFMPEG doesn't appear to be installed on your system, you will need to install it so it can be run on a command line. Some functions of QuantumENDEC depend on FFMPEG")
- exit()
+ with open(file, "a") as f: f.write(f"ZXZX-STARTER-\n")
+ with open(file, "a") as f: f.write(f"{ZCZC}\n")
+ return False
+
+def Setup():
+ CheckFolder(XMLhistory_Folder, True)
+ CheckFolder(XMLqueue_Folder, True)
+ CheckFolder(Assets_Folder, False)
+ CheckFolder(Tmp_Folder, True)
+ CheckFolder(f"{Assets_Folder}/stats", True)
+ UpdateCGEN("000000", "EMERGENCY ALERT DETAILS", "", False)
+
+ if os.path.isfile(f"{Assets_Folder}/alertlog.txt") is True: pass
+ else:
+ with open(f"{Assets_Folder}/alertlog.txt", "w", encoding='utf-8') as f: f.write("")
+
+ with open(f"{Tmp_Folder}/SameHistory.txt", "w") as f: f.write(f"ZXZX-STARTER-\n")
-def Clear(): os.system('cls' if os.name == 'nt' else 'clear')
+ if os.path.isfile(Config_File) is True:
+ with open(Config_File, "r") as JCfile: config = JCfile.read()
+ ConfigData = json.loads(config)
+ if CheckConfigVersion(ConfigData) is False: print(f"<> Your configuration file is out of date! Go to the web interface and save (overwrite) a new one, or delete the current configuration file ({Config_File}).")
+ else:
+ if createDefaultConfig() is True: pass
+ else: print("Error, failed to create default config file, QuantumENDEC can't run without a config file!"); exit()
+
+ if os.path.isfile(f"./{Assets_Folder}/GeoToCLC.csv") is True: pass
+ else: print("The GeoToCLC CSV file is missing, you don't have to worry about this if you're not using Canada's CAP and relaying in S.A.M.E. If you are using Canada's CAP and relaying in S.A.M.E, all CAP-CP alerts will have a 000000 location (FIPS/CLC) code.")
def UpdateStatus(service, content):
try:
- statFolder = "stats"
- with open(f"{statFolder}/{service}_status.txt", "w") as f: f.write(content)
+ with open(f"{Assets_Folder}/stats/{service}_status.txt", "w") as f: f.write(content)
except: pass
+def DeconstructSAME(SAMEheader):
+ try:
+ SAME = SAMEheader.split("+")
+ Section1 = SAME[0].split("-", 3)
+ Section2 = SAME[1].split("-")
+ OrginatorCode = Section1[1]
+ EventCode = Section1[2]
+ LocationCodes = Section1[3].split("-")
+ PurgeTime = Section2[0]
+ date = Section2[1][:3]
+ hour = Section2[1][3:5]
+ minute = Section2[1][5:]
+ IssueDate = {"date":date, "hour":hour, "minute":minute}
+ Callsign = Section2[2]
+ SAMEdata = {
+ "OrginatorCode":OrginatorCode,
+ "EventCode":EventCode,
+ "LocationCodes":LocationCodes,
+ "PurgeTime":PurgeTime,
+ "Issue":IssueDate,
+ "Callsign":Callsign }
+ return SAMEdata
+ except: return None
+
def Plugins_Run(mode=None, ZCZC=None, BROADCASTTEXT=None, XML=None):
- # execute plugin with: GeneratedHeader, BroadcastText, InfoXML
+ """Run modes: startup, beforeRelay, afterRelay"""
+ # Execute plugin with: GeneratedHeader, BroadcastText, InfoXML
pluginFolder = "plugins"
ZCZC = str(ZCZC).replace("\n","")
BROADCASTTEXT = str(BROADCASTTEXT).replace("\n"," ")
XML = str(XML).replace("\n"," ")
- if not os.path.exists(pluginFolder): pass
- else:
+ if os.path.exists(pluginFolder) and mode is not None:
print("Attempting to run plugins...")
pluginList = os.listdir(pluginFolder)
-
- if mode == "beforeRelay":
- for plug in pluginList:
- if ".py" in plug:
- plug = plug.replace(".py", "")
- plug = f"{pluginFolder}.{plug}"
- try:
- print("importing... ", plug)
- module = importlib.import_module(plug)
- print("Running plugin: ", plug)
- module.ExecutePlugin_BeforeRelay(ZCZC, BROADCASTTEXT, XML)
- except Exception as e: print(f"{plug} has failed to run.", e)
-
- elif mode == "afterRelay":
- for plug in pluginList:
- if ".py" in plug:
- plug = plug.replace(".py", "")
- plug = f"{pluginFolder}.{plug}"
- try:
- print("importing... ", plug)
- module = importlib.import_module(plug)
- print("Running plugin: ", plug)
- module.ExecutePlugin_AfterRelay(ZCZC, BROADCASTTEXT, XML)
- except Exception as e: print(f"{plug} has failed to run.", e)
-
- elif mode == "startup":
- for plug in pluginList:
- if ".py" in plug:
- plug = plug.replace(".py", "")
- plug = f"{pluginFolder}.{plug}"
- try:
- print("importing... ", plug)
- module = importlib.import_module(plug)
- print("Running plugin: ", plug)
- module.ExecutePlugin_OnStart()
- except Exception as e: print(f"{plug} has failed to run.", e)
-
- else: pass
-
-def GenenerateTTS_UsingAPI(TTSservice=None, VoiceSelection=None, Region=None, APIkey=None, OutputFolder=None, InputTEXT=None, Test=False):
- try:
- if Test is True:
- if OutputFolder is None or OutputFolder == "": TTSoutput = "TestTTS"
- else: TTSoutput = f"{OutputFolder}/TestTTS"
- else:
- if OutputFolder is None or OutputFolder == "": TTSoutput = "GeneratedTTS"
- else: TTSoutput = f"{OutputFolder}/GeneratedTTS"
-
- if "11labs" in TTSservice:
- API_URL = "https://api.elevenlabs.io/v1/text-to-speech"
- headers = {
- "xi-api-key": APIkey,
- "Content-Type": "application/json"
- }
- payload = {
- "text": InputTEXT,
- "voice_settings": {
- "stability": 0.5,
- "similarity_boost": 0.5
- }
- }
- response = requests.post(f"{API_URL}/{VoiceSelection}", json=payload, headers=headers)
- if response.status_code == 200:
- with open(f"{TTSoutput}.mp3", "wb") as file:
- file.write(response.content)
- print(f"MP3 file generated successfully: {TTSoutput}.mp3")
- else:
- raise Exception(f"Error: {response.status_code} - {response.text}")
-
- elif "IBMwatson" in TTSservice:
- pass
-
- elif "AmazonPolly" in TTSservice:
- pass
-
- else:
- raise Exception("Invalid TTS service selection!")
-
- return 0
- except Exception as e:
- return f"Failure: {e}"
+ for plug in pluginList:
+ if ".py" in plug:
+ plug = plug.replace(".py", "")
+ plug = f"{pluginFolder}.{plug}"
+ try:
+ print("Running plugin: ", plug)
+ module = importlib.import_module(plug)
+ if mode == "beforeRelay": module.ExecutePlugin_BeforeRelay(ZCZC, BROADCASTTEXT, XML)
+ elif mode == "afterRelay": module.ExecutePlugin_AfterRelay(ZCZC, BROADCASTTEXT, XML)
+ elif mode == "startup": module.ExecutePlugin_OnStart()
+ except Exception as e: print(f"{plug} has failed to run.", e)
def GetAlertLevelColor(ConfigData, ZCZC=None):
colEvtlist = {
@@ -204,350 +476,248 @@ def GetAlertLevelColor(ConfigData, ZCZC=None):
try:
ZCZC = ZCZC.split("-")
evnt = ZCZC[2]
-
if evnt in colEvtlist:
if colEvtlist[evnt] == 0: embed_color = ConfigData["CGENcolor_warning"]
elif colEvtlist[evnt] == 1: embed_color = ConfigData["CGENcolor_watch"]
- else:
- embed_color = ConfigData["CGENcolor_advisory"]
- except:
- embed_color = ConfigData["CGENcolor_warning"]
- else:
- embed_color = ConfigData["CGENcolor_warning"]
-
+ else: embed_color = ConfigData["CGENcolor_advisory"]
+ except: embed_color = ConfigData["CGENcolor_warning"]
+ else: embed_color = ConfigData["CGENcolor_warning"]
return embed_color
-class Capture:
- def __init__(self, OutputFolder, TCP, name):
- # domain, port = url.split(':')
- self.NAAD, self.PORT = TCP.split(':')
- self.OutputFolder = OutputFolder
- self.nom = name
-
- def receive(self, host, port, buffer, delimiter):
- with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
- try:
- s.connect((host, int(port)))
- s.settimeout(100)
- UpdateStatus(self.nom, f"Connected to {host}")
- print(f"[TCP Capture]: Connected to {host}")
- data_received = ""
- try:
- while True:
- chunk = str(s.recv(buffer), encoding='utf-8', errors='ignore')
- data_received += chunk
- if delimiter in chunk:
- CapturedSent = re.search(r'\s*(.*?)\s*', data_received, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_")
- CapturedIdent = re.search(r'\s*(.*?)\s*', data_received, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_")
- NAADsFilename = f"{CapturedSent}I{CapturedIdent}.xml"
- with open(f"{self.OutputFolder}/{NAADsFilename}", 'w', encoding='utf-8') as file: file.write(data_received)
- print(f"[TCP Capture]: I captured an XML, and saved it to: {self.OutputFolder}/{NAADsFilename} | From: {host}")
- data_received = ""
- except socket.timeout: print(f"[TCP Capture]: Connection timed out for {host}"); return False
- except Exception as e: print(f"[TCP Capture]: Something broke when connecting to {host}: {e}"); return False
- except: print("[TCP Capture]: General exception occurred!"); return False
-
- def start(self):
- while True:
- NAAD = self.receive(self.NAAD, self.PORT, 1024, "")
- if NAAD is False:
- UpdateStatus(self.nom, f"TCP connection to {self.NAAD} failure")
- time.sleep(30)
-
-class Check:
- def __init__(self):
- pass
+def FilterCheck_CAP(InputConfig, AlertInfo):
+ # Returns True if passed
+ Urgency = re.search(r'\s*(.*?)\s*', AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Severity = re.search(r'\s*(.*?)\s*', AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+
+ try:
+ current_time = datetime.now(timezone.utc)
+ Expires = re.search(r'\s*(.*?)\s*', AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Expires = datetime.fromisoformat(datetime.fromisoformat(Expires).astimezone(timezone.utc).isoformat())
+ if current_time > Expires: Expired = True
+ else: Expired = False
+ except: Expired = False
+
+ try: Broadcast_Immediately = re.search(r'layer:SOREM:1.0:Broadcast_Immediately\s*\s*(.*?)\s*', AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ except: Broadcast_Immediately = "no"
+ if "yes" in Broadcast_Immediately.lower(): Broadcast_Immediately = True
+ else: Broadcast_Immediately = False
+
+ # To check the 'CAP-CP Geocodes' - not for FIPS/CLC
+ if len(InputConfig['AllowedLocations_Geocodes']) == 0: GecodeResult = True
+ else:
+ GecodeResult = False
+ try:
+ GeocodeList = re.findall(r'\s*profile:CAP-CP:Location:0.3\s*\s*(.*?)\s*', AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ for i in GeocodeList:
+ if i[:2] in InputConfig['AllowedLocations_Geocodes']: GecodeResult = True
+ if i[:3] in InputConfig['AllowedLocations_Geocodes']: GecodeResult = True
+ if i[:4] in InputConfig['AllowedLocations_Geocodes']: GecodeResult = True
+ if i in InputConfig['AllowedLocations_Geocodes']: GecodeResult = True
+ except: GecodeResult = True
- def Config(InfoX, ConfigData, Status, MsgType, Severity, Urgency, BroadcastImmediately):
- if ConfigData[f"status{Status}"] is False: return False
- if "Yes" in str(BroadcastImmediately): Final = True
+ try:
+ Language = re.search(r'\s*(.*?)\s*', AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Language = Language.lower()
+ if "fr-ca" in Language: Language = "fr"
+ else: Language = "en"
+ Language_Result = ConfigData[f"relay_{Language}"]
+ except:
+ Language_Result = True
+
+ print("<< Filter Check (CAP) >>")
+ print("Severity: ", InputConfig[f"severity{Severity}"])
+ print("Urgency: ", InputConfig[f"urgency{Urgency}"])
+ print("Broadcat Immedately (CAP-CP only): ", Broadcast_Immediately)
+ print("Geocode result (CAP-CP only): ", GecodeResult)
+ print("Language result: ", Language_Result)
+ print("Expired: ", Expired)
+
+ if ((InputConfig[f"severity{Severity}"] and InputConfig[f"urgency{Urgency}"]) or Broadcast_Immediately) and GecodeResult and Language_Result and not Expired: print("Final result: Pass")
+ else: print("Final result: Failed... alert will be skipped.")
+
+ return ((InputConfig[f"severity{Severity}"] and InputConfig[f"urgency{Urgency}"]) or Broadcast_Immediately) and GecodeResult and Language_Result and not Expired
+
+def FilterCheck_SAME(ConfigData, ZCZC):
+ # Returns True if passed
+ SAME_DICT = DeconstructSAME(ZCZC)
+ EVENT = SAME_DICT['EventCode']
+
+ if "EAN" in EVENT or "NIC" in EVENT or "NPT" in EVENT or "RMT" in EVENT or "RWT" in EVENT:
+ EventAllowed = True
+ EventBlocked = False # EventBlocked will be True if an event is blocked
+ else:
+ if len(ConfigData['SAME_EVENTblocked']) == 0: EventBlocked = False
else:
- try:
- var1 = ConfigData[f"severity{Severity}"]
- var2 = ConfigData[f"urgency{Urgency}"]
- var3 = ConfigData[f"messagetype{MsgType}"]
- if var1 is True and var2 is True and var3 is True: Final = True
- else: Final = False
- except: Final = False
- if Final is True:
- if len(ConfigData['AllowedLocations_Geocodes']) == 0: pass
- else:
- try:
- GeocodeList = re.findall(r'\s*profile:CAP-CP:Location:0.3\s*\s*(.*?)\s*', InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- for i in GeocodeList:
- if i[:2] in ConfigData['AllowedLocations_Geocodes']: return True
- if i[:3] in ConfigData['AllowedLocations_Geocodes']: return True
- if i[:4] in ConfigData['AllowedLocations_Geocodes']: return True
- if i in ConfigData['AllowedLocations_Geocodes']: return True
- except: return True
- return False
- return Final
+ if EVENT in ConfigData['SAME_EVENTblocked']: EventBlocked = True
- def MatchCLC(ConfigData, SAMEheader):
- if len(ConfigData['AllowedLocations_CLC']) == 0: return True
+ if len(ConfigData['SAME_EVENTallowed']) == 0: EventAllowed = True
else:
- for i in EAS2Text(SAMEheader).FIPS:
- # Partial county wildcard filter
- partial = "*" + i[1:]
- if partial[:2] in ConfigData['AllowedLocations_CLC']: return True
- if partial[:3] in ConfigData['AllowedLocations_CLC']: return True
- if partial[:4] in ConfigData['AllowedLocations_CLC']: return True
- if partial in ConfigData['AllowedLocations_CLC']: return True
-
- if i[:2] in ConfigData['AllowedLocations_CLC']: return True
- if i[:3] in ConfigData['AllowedLocations_CLC']: return True
- if i[:4] in ConfigData['AllowedLocations_CLC']: return True
- if i in ConfigData['AllowedLocations_CLC']: return True
- return False
+ if EVENT in ConfigData['SAME_EVENTallowed']: EventAllowed = True
+ else: EventAllowed = False
- def DuplicateSAME(GeneratedHeader):
- try:
- with open("SameHistory.txt", "r") as f:
- content = f.read()
- if GeneratedHeader in content: return True
- except:
- with open("SameHistory.txt", "a") as f: f.write(f"ZXZX-STARTER-\n")
- with open("SameHistory.txt", "a") as f: f.write(f"{GeneratedHeader}\n")
- return False
-
- def CheckEventCodeSAME(ConfigData, GeneratedHeader):
- EVENT = EAS2Text(GeneratedHeader).evnt
- EVENT = str(EVENT)
- if "EAN" in EVENT or "NIC" in EVENT or "NPT" in EVENT or "RMT" in EVENT or "RWT" in EVENT: return True
-
- if len(ConfigData['CAP_SAMEevent_Blocklist']) == 0: return True
- else:
- if EVENT in ConfigData['CAP_SAMEevent_Blocklist']: return False
-
- if len(ConfigData['CAP_SAMEevent_Whitelist']) == 0: return True
- else:
- if EVENT in ConfigData['CAP_SAMEevent_Whitelist']: return True
- else: return False
+ if len(ConfigData['SAME_ORGallowed']) == 0: OrgiResult = True
+ else:
+ if SAME_DICT['OrginatorCode'] in ConfigData['SAME_ORGallowed']: OrgiResult = True
+ else: OrgiResult = False
- def Heartbeat(References, QueueFolder, HistoryFolder):
- print("Downloading alerts from received heartbeat...")
- RefList = References.split(" ")
- for i in RefList:
- j = re.sub(r'^.*?,', '', i)
- j = j.split(",")
- sent = j[1]
- sentDT = sent.split("T", 1)[0]
- sent = sent.replace("-","_").replace("+", "p").replace(":","_")
- identifier = j[0]
- identifier = identifier.replace("-","_").replace("+", "p").replace(":","_")
- Dom1 = 'capcp1.naad-adna.pelmorex.com'
- Dom2 = 'capcp2.naad-adna.pelmorex.com'
- Output = f"{QueueFolder}/{sent}I{identifier}.xml"
- if f"{sent}I{identifier}.xml" in os.listdir(f"{HistoryFolder}"):
- print("Heartbeat, no download: Files matched.")
+ if len(ConfigData['SAME_FIPSfilter']) == 0: LocationResult = True
+ else:
+ LocationResult = False
+ for i in SAME_DICT['LocationCodes']:
+ # Partial county wildcard filter
+ partial = "*" + i[1:]
+ if partial[:2] in ConfigData['SAME_FIPSfilter']: LocationResult = True
+ if partial[:3] in ConfigData['SAME_FIPSfilter']: LocationResult = True
+ if partial[:4] in ConfigData['SAME_FIPSfilter']: LocationResult = True
+ if partial in ConfigData['SAME_FIPSfilter']: LocationResult = True
+
+ if i[:2] in ConfigData['SAME_FIPSfilter']: LocationResult = True
+ if i[:3] in ConfigData['SAME_FIPSfilter']: LocationResult = True
+ if i[:4] in ConfigData['SAME_FIPSfilter']: LocationResult = True
+ if i in ConfigData['SAME_FIPSfilter']: LocationResult = True
+
+ print("<< Filter check (S.A.M.E) >>")
+ print("Originator result: ", OrgiResult)
+ print("Location code result: ", LocationResult)
+ print("Event code allowed: ", EventAllowed)
+ print("Event code blocked: ", EventBlocked)
+
+ if (OrgiResult and LocationResult and EventAllowed) and not EventBlocked: print("Final result: pass")
+ else: print("Final result: fail... alert will be skipped.")
+
+ return (OrgiResult and LocationResult and EventAllowed) and not EventBlocked
+
+def WatchNotify(ListenFolder, HistoryFolder):
+ print(f"Waiting for an alert...")
+ while QEinterrupt() is False:
+ ExitTicket = False
+ QueueList = os.listdir(f"{ListenFolder}")
+ for file in QueueList:
+ with open(f"{ListenFolder}/{file}", "r", encoding='UTF-8') as f: RelayXML = f.read()
+ AlertListXML = re.findall(r'', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ if len(AlertListXML) > 1:
+ print("WHY THE F*** IS THERE 2 ALERT ELEMENTS IN A SINGLE XML FILE?!!?")
+ AlertCount = 0
+ for AlertXML in AlertListXML:
+ AlertCount = AlertCount + 1
+ print("Alert", AlertCount)
+ Sent = re.search(r'\s*(.*?)\s*', AlertXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_").replace("\n", "")
+ Ident = re.search(r'\s*(.*?)\s*', AlertXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_").replace("\n", "")
+ NAADsFilename = f"{Sent}I{Ident}.xml"
+ AlertXML = f""
+ with open(f"{ListenFolder}/{NAADsFilename}", 'w', encoding='utf-8') as f: f.write(AlertXML)
+ os.remove(f"{ListenFolder}/{file}")
+ elif file in os.listdir(f"{HistoryFolder}"):
+ print("No relay: watch folder files matched.")
+ os.remove(f"{ListenFolder}/{file}")
+ ExitTicket = False
else:
- print( f"Downloading: {sent}I{identifier}.xml...")
- req1 = Request(url = f'http://{Dom1}/{sentDT}/{sent}I{identifier}.xml', headers={'User-Agent': 'Mozilla/5.0'})
- req2 = Request(url = f'http://{Dom2}/{sentDT}/{sent}I{identifier}.xml', headers={'User-Agent': 'Mozilla/5.0'})
- try: xml = urlopen(req1).read()
- except:
- try: xml = urlopen(req2).read()
- except: pass
- try:
- with open(Output, "wb") as f: f.write(xml)
- except: print("Heartbeat, download aborted: a general exception occurred, it could be that the URLs are temporarily unavailable.")
-
- def watchNotify(ListenFolder, HistoryFolder):
- print(f"Waiting for an alert...")
- while True:
- ExitTicket = False
- QueueList = os.listdir(f"{ListenFolder}")
- for file in QueueList:
- with open(f"{ListenFolder}/{file}", "r", encoding='UTF-8') as f: RelayXML = f.read()
- AlertListXML = re.findall(r'', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
-
- if len(AlertListXML) > 1:
- print("WHY THE F*** IS THERE 2 ALERT ELEMENTS IN A SINGLE XML FILE?!!?")
- AlertCount = 0
- for AlertXML in AlertListXML:
- AlertCount = AlertCount + 1
- print("Alert", AlertCount)
- Sent = re.search(r'\s*(.*?)\s*', AlertXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_").replace("\n", "")
- Ident = re.search(r'\s*(.*?)\s*', AlertXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_").replace("\n", "")
- NAADsFilename = f"{Sent}I{Ident}.xml"
- AlertXML = f""
- with open(f"{ListenFolder}/{NAADsFilename}", 'w', encoding='utf-8') as f: f.write(AlertXML)
- os.remove(f"{ListenFolder}/{file}")
- elif file in os.listdir(f"{HistoryFolder}"):
- print("No relay: watch folder files matched.")
- os.remove(f"{ListenFolder}/{file}")
- ExitTicket = False
- else:
- ExitTicket = True
- break
- if ExitTicket is True: break
- else: time.sleep(1) # Wait a little bit between looking for new files
- return file
+ ExitTicket = True
+ break
+ if ExitTicket is True: break
+ else: time.sleep(1) # Wait a little bit between looking for new files
+ if QEinterrupt() is False: return file
+
+def Heartbeat(References, QueueFolder, HistoryFolder):
+ print("Downloading (Pelmorex NAADs) alerts from received heartbeat...")
+ RefList = References.split(" ")
+ for i in RefList:
+ j = re.sub(r'^.*?,', '', i)
+ j = j.split(",")
+ sent = j[1]
+ sentDT = sent.split("T", 1)[0]
+ sent = sent.replace("-","_").replace("+", "p").replace(":","_")
+ identifier = j[0]
+ identifier = identifier.replace("-","_").replace("+", "p").replace(":","_")
+ Dom1 = 'capcp1.naad-adna.pelmorex.com'
+ Dom2 = 'capcp2.naad-adna.pelmorex.com'
+ Output = f"{QueueFolder}/{sent}I{identifier}.xml"
+ if f"{sent}I{identifier}.xml" in os.listdir(f"{HistoryFolder}"):
+ print("Heartbeat, no download: Files matched.")
+ else:
+ print(f"Downloading: {sent}I{identifier}.xml...")
+ req1 = Request(url = f'http://{Dom1}/{sentDT}/{sent}I{identifier}.xml', headers={'User-Agent': 'Mozilla/5.0'})
+ req2 = Request(url = f'http://{Dom2}/{sentDT}/{sent}I{identifier}.xml', headers={'User-Agent': 'Mozilla/5.0'})
+ try: xml = urlopen(req1).read()
+ except:
+ try: xml = urlopen(req2).read()
+ except: pass
+ try:
+ with open(Output, "wb") as f: f.write(xml)
+ except: print("Heartbeat, download aborted: a general exception occurred, it could be that the URLs are temporarily unavailable.")
-class Generate:
- def __init__(self, InfoXML, SentDate, MsgType, SAMEcallsign):
- self.InfoX = InfoXML
- self.MsgType = MsgType
- self.Sent = SentDate
- self.Callsign = SAMEcallsign
- self.CapCatToSameOrg = {
- "Met": "WXR",
- "Admin": "EAS",
- "Other": "CIV",
- }
- self.CapEventToSameEvent = {
- "911Service": "TOE",
- "accident": "CDW",
- "admin":"ADR",
- "aircraftCras":"LAE",
- "airportClose":"ADR",
- "airQuality":"SPS",
- "airspaceClos":"ADR",
- "amber":"CAE",
- "ambulance":"LAE",
- "animalDang":"CDW",
- "animalDiseas":"CDW",
- "animalFeed":"CEM",
- "animalHealth":"CEM",
- "arcticOut":"SVS",
- "avalanche":"AVW",
- "aviation":"LAE",
- "biological":"BHW",
- "blizzard":"BZW",
- "bloodSupply":"LAE",
- "blowingSnow":"WSW",
- "bridgeClose":"LAE",
- "cable":"ADR",
- "chemical":"CHW",
- "civil":"CEM",
- "civilEmerg":"CEM",
- "civilEvent":"CEM",
- "cold":"SVS",
- "coldWave":"SVS",
- "crime":"CDW",
- "damBreach":"DBW",
- "damOverflow":"DBW",
- "dangerPerson":"CDW",
- "diesel":"LAE",
- "drinkingWate":"CWW",
- "dustStorm":"DSW",
- "earthquake":"EQW",
- "electric":"POS",
- "emergFacil":"CEM",
- "emergSupport":"CEM",
- "explosive":"HMW",
- "facility":"CEM",
- "fallObject":"HMW",
- "fire":"FRW",
- "flashFlood":"FFW",
- "flashFreeze":"FSW",
- "flood":"FLW",
- "fog":"SPS",
- "foodSupply":"LAE",
- "forestFire":"WFW",
- "freezeDrzl":"WSW",
- "freezeRain":"WSW",
- "freezngSpray":"WSW",
- "frost":"SPS",
- "galeWind":"HWW",
- "gasoline":"LAE",
- "geophyiscal":"CEM",
- "hazmat":"BHW",
- "health":"BHW",
- "heat":"SVS",
- "heatHumidity":"SVS",
- "heatingOil":"LAE",
- "heatWave":"SVS",
- "highWater":"SVS",
- "homeCrime":"CEM",
- "hospital":"LAE",
- "hurricane":"HUW",
- "hurricFrcWnd":"HUW",
- "ice":"SPS",
- "iceberg":"IBW",
- "icePressure":"SPS",
- "industCrime":"CEM",
- "industryFire":"IFW",
- "infectious":"DEW",
- "internet":"ADR",
- "lahar":"VOW",
- "landslide":"LSW",
- "lavaFlow":"VOW",
- "magnetStorm":"CDW",
- "marine":"SMW",
- "marineSecure":"SMW",
- "meteor":"CDW",
- "missingPer":"MEP",
- "missingVPer":"MEP",
- "naturalGas":"LAE",
- "nautical":"ADR",
- "notam":"ADR",
- "other":"CEM",
- "overflood":"FLW",
- "plant":"LAE",
- "plantInfect":"LAE",
- "product":"LAE",
- "publicServic":"LAE",
- "pyroclasFlow":"VOW",
- "pyroclaSurge":"VOW",
- "radiological":"RHW",
- "railway":"LAE",
- "rainfall":"SPS",
- "rdCondition":"LAE",
- "reminder":"CEM",
- "rescue":"CEM",
- "retailCrime":"CEM",
- "road":"LAE",
- "roadClose":"ADR",
- "roadDelay":"ADR",
- "roadUsage":"ADR",
- "rpdCloseLead":"ADR",
- "satellite":"ADR",
- "schoolBus":"ADR",
- "schoolClose":"ADR",
- "schoolLock":"CDW",
- "sewer":"LAE",
- "silver":"CEM",
- "snowfall":"WSW",
- "snowSquall":"WSW",
- "spclIce":"SPS",
- "spclMarine":"SMW",
- "squall":"SMW",
- "storm":"SVS",
- "stormFrcWnd":"SVS",
- "stormSurge":"SSW",
- "strongWind":"HWW",
- "telephone":"LAE",
- "temperature":"SPS",
- "terrorism":"CDW",
- "testMessage":"DMO",
- "thunderstorm":"SVR",
- "tornado":"TOR",
- "traffic":"ADR",
- "train":"ADR",
- "transit":"ADR",
- "tropStorm":"TRW",
- "tsunami":"TSW",
- "urbanFire":"FRW",
- "utility":"ADR",
- "vehicleCrime":"CEM",
- "volcanicAsh":"VOW",
- "volcano":"VOW",
- "volunteer":"ADR",
- "waste":"ADR",
- "water":"ADR",
- "waterspout":"SMW",
- "weather":"SPS",
- "wildFire":"FRW",
- "wind":"HWW",
- "windchill":"SPS",
- "winterStorm":"WSW"
- }
-
- def GeoToCLC(self):
- GeocodeList = re.findall(r'\s*profile:CAP-CP:Location:0.3\s*\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- filepath = './GeoToCLC.csv'
- SameDict = {}
+def UpdateCGEN(color="000000", headline="", text="", stat=True):
+ try:
+ CGEN_Dict = { "color": color, "headline": headline, "text": text, "alertStat": stat }
+ with open(f"{Assets_Folder}/AlertText.json", 'w') as json_file: json.dump(CGEN_Dict, json_file, indent=2)
+ except: pass
+
+def ConvertAudioFormat(inputAudio, outputAudio):
+ result = subprocess.run(["ffmpeg", "-y", "-i", inputAudio, outputAudio], capture_output=True, text=True)
+ if result.returncode == 0: print(f"{inputAudio} --> {outputAudio} ... Conversion successful!")
+ else: print(f"{inputAudio} --> {outputAudio} ... Conversion failed: {result.stderr}")
+
+def LoudenAudio(inputAudio, outputAudio):
+ result = subprocess.run(["ffmpeg", "-y", "-i", inputAudio, "-filter:a", "volume=2.5", outputAudio], capture_output=True, text=True)
+ if result.returncode == 0: print(f"Filter loudening success.")
+ else: print(f"Filter loudening failure: {result.stderr}")
+
+def GenerateTTS(Output, InputConfig=None, InputText=None, Language="EN"):
+ # This function will generate TTS and output it to an audio file.
+ try: os.remove(Output)
+ except: pass
+ try: pythoncom.CoInitialize()
+ except: pass
+ if InputConfig["TTS_Service"] == "pyttsx3":
+ engine = pyttsx3.init()
+ if InputConfig["UseDefaultVoices"] is False:
+ if Language == "FR": ActiveVoice = InputConfig["VoiceFR"]
+ else: ActiveVoice = InputConfig["VoiceEN"]
+ voices = engine.getProperty('voices')
+ ActiveVoice = next((voice for voice in voices if voice.name == ActiveVoice), None)
+ if ActiveVoice: engine.setProperty('voice', ActiveVoice.id)
+ engine.save_to_file(str(InputText), Output)
+ engine.runAndWait()
+ elif InputConfig["TTS_Service"] == "flite":
+ InputText = InputText.replace("\n", " ")
+ if InputConfig["UseDefaultVoices"] is False:
+ if Language == "FR": ActiveVoice = InputConfig["FliteVoice_FR"]
+ else: ActiveVoice = InputConfig["FliteVoice_EN"]
+ subprocess.run(["flite", "-t", InputText, "-voice", ActiveVoice, "-o", Output], capture_output=True, text=True)
+ else: subprocess.run(["flite", "-t", InputText, "-o", Output], capture_output=True, text=True)
+
+def EventSuffix(EventIn):
+ target_words = {"test", "watch", "warning", "alert", "emergency", "notification"}
+ words = EventIn.split()
+ if words:
+ last_word = words[-1].lower()
+ return last_word in target_words
+ return False
+
+def TrimAudio(input_file, max_duration_ms=120000):
+ # For broadcast audio
+ output_file = input_file + ".trimmed"
+ audio = AudioSegment.from_file(input_file)
+ duration_ms = len(audio)
+ if duration_ms > max_duration_ms:
+ trimmed_audio = audio[:max_duration_ms]
+ trimmed_audio.export(output_file, format="wav")
+ print(f"Broadcast Audio trimmed to {max_duration_ms / 1000} seconds.")
+ shutil.move(output_file, input_file)
+ else: pass
+
+# Actual, Update, Cancel, Test
+MsgTypeConv = {
+ "EN":{ "Alert":"has issued", "Update":"has updated", "Cancel":"has ended", "Test":"has issued" },
+ "FR":{ "Alert":"a émis", "Update":"a mis à jour", "Cancel":"est terminé", "Test":"a émis" }
+}
+
+def GeoToCLC(InfoXML):
+ GeocodeList = re.findall(r'\s*profile:CAP-CP:Location:0.3\s*\s*(.*?)\s*', InfoXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ filepath = f"{Assets_Folder}/GeoToCLC.csv"
+ SameDict = {}
+
+ try:
with open(filepath) as fp:
line = fp.readline()
cnt = 1
@@ -557,1002 +727,1621 @@ def GeoToCLC(self):
SameDict[SAMESPLIT[0]] = SAMESPLIT[1]
line = fp.readline()
cnt += 1
+ except: return "000000"
+
+ CLC = ""
+ for i in GeocodeList:
+ try: C = SameDict[i]
+ except: C = ""
+ if C == "": pass
+ else: CLC = f"{CLC}" + f"{C},"
+
+ # Aaron i know you're kinda gonna cringe at this, but we need it
+ CLC = "".join(CLC.rsplit(",",1))
+ CLC = CLC.split(",")
+ CLC = "-".join(CLC)
+ CLC = CLC.split("-")
+ CLC = list(set(CLC))
+ CLC = "-".join(CLC)
+ return CLC
+
+def GetMedia(InputSource, OutputAudio, DecodeType):
+ if DecodeType == 1:
+ print("Decoding media from BASE64...")
+ with open(OutputAudio, "wb") as fh: fh.write(base64.decodebytes(InputSource))
+ elif DecodeType == 0:
+ print("Downloading media...")
+ r = requests.get(InputSource)
+ with open(OutputAudio, 'wb') as f: f.write(r.content)
+
+def GetAlertRegion(XML):
+ # Get the alert region of CAP XML
+ try:
+ CODE = re.findall(r'\s*(.*?)\s*
', XML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ if "profile:CAP-CP:0.4" in str(CODE): CODE = "CANADA"
+ elif "IPAWSv1.0" in str(CODE): CODE = "USA"
+ else: CODE = None
+ return CODE
+ except: return None
- CLC = ""
- for i in GeocodeList:
- try:
- C = SameDict[i]
- except:
- C = ""
- if C == "":
- pass
- else:
- CLC = f"{CLC}" + f"{C},"
+def CreateSAMEmonitorXML(SAME, audioInput, monitorName):
+ try:
+ SAME = SAME.replace("\n", "")
+ oof = EAS2Text(SAME)
- # Aaron i know you're kinda gonna cringe at this, but we need it
- CLC = "".join(CLC.rsplit(",",1))
- CLC = CLC.split(",")
- CLC = "-".join(CLC)
- CLC = CLC.split("-")
- CLC = list(set(CLC))
- CLC = "-".join(CLC)
- return CLC
-
- def SAMEheader(self):
- Callsign = self.Callsign
- if len(Callsign) > 8: Callsign = "QUANTUM0"; print("Your callsign is too long!")
- elif len(Callsign) < 8: Callsign = "QUANTUM0"; print("Your callsign is too short!")
- elif "-" in Callsign: Callsign = "QUANTUM0"; print("Your callsign contains an invalid symbol!")
+ sent = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S-00:00')
+ sent_rp = sent.replace("-","").replace(":","")
+ ident_code = ''.join(random.choices(string.ascii_uppercase + string.digits, k=10))
+ ident = f"{sent_rp}{ident_code}"
+ output = f"{XMLqueue_Folder}/{monitorName}-{sent_rp}I{ident}.xml"
+ current_time = datetime.strptime(sent, "%Y-%m-%dT%H:%M:%S-00:00")
- try: ORG = re.search(r'\s*EAS-ORG\s*\s*(.*?)\s*\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- except:
- try: ORG = self.CapCatToSameOrg[re.search(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)]
- except: ORG = "CIV"
+ try: hours, minutes = map(int, oof.purge)
+ except: hours, minutes = map(int, ['01','30'])
+ expiry_time = current_time + timedelta(hours=hours, minutes=minutes)
+ expiry_timestamp = expiry_time.strftime("%Y-%m-%dT%H:%M:%S-00:00")
- try:
- EVE = re.search(r'\s*SAME\s*\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- if EVE is None or EVE == "": EVE = "CEM"
- except:
- try:
- EVE = re.search(r'\s*profile:CAP-CP:Event:0.4\s*\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- EVE = self.CapEventToSameEvent[EVE]
- except: EVE = "CEM"
+ monitorName = monitorName.replace("\n", "")
+ try: Cate = SameOrgToCapCat[oof.org]
+ except: Cate = "Other"
+ FIPs = "-".join(oof.FIPS)
- try: Effective = datetime.fromisoformat(datetime.fromisoformat(re.search(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)).astimezone(timezone.utc).isoformat()).strftime("%j%H%M")
- except: Effective = datetime.now().astimezone(timezone.utc).strftime("%j%H%M")
-
try:
- NowTime = datetime.now(timezone.utc)
- NowTime = NowTime.replace(microsecond=0).isoformat()
- NowTime = NowTime[:-6]
- NowTime = datetime.fromisoformat(NowTime)
- ExpireTime = re.search(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- ExpireTime = datetime.fromisoformat(ExpireTime).astimezone(timezone.utc)
- ExpireTime = ExpireTime.isoformat()
- ExpireTime = ExpireTime[:-6]
- ExpireTime = datetime.fromisoformat(ExpireTime)
- Purge = ExpireTime - NowTime
- hours, remainder = divmod(Purge.seconds, 3600)
- minutes, _ = divmod(remainder, 60)
- Purge = "{:02}{:02}".format(hours, minutes)
- except: Purge = "0600"
+ with open(audioInput, 'rb') as wav_file: wav_data = wav_file.read()
+ encoded_data = base64.b64encode(wav_data).decode('utf-8')
+ embedded_audio = f"""
+
+ broadcast audio
+ audio/wave
+ {encoded_data}
+
+ """
+ except: embedded_audio = ""
+
+ XML = f"""
+
+ {ident}
+ {monitorName}
+ {sent}
+ Actual
+ Alert
+
+ Public
+
+ en-US
+ {Cate}
+ {oof.evntText}
+ Monitor
+ Immediate
+ Extreme
+ Observed
+ SAME{oof.evnt}
+ {sent}
+ {expiry_timestamp}
+ {oof.orgText}
+ {oof.evntText}
+ From {oof.callsign}
+ {embedded_audio}
+ EAS-ORG{oof.org}
+ {oof.strFIPS}SAME{FIPs}
+
+
+ """
+
+ with open(output, "w") as f: f.write(XML)
+ except: pass
- if "layer:EC-MSC-SMC:1.1:Newly_Active_Areas" in str(self.InfoX):
- try: CLC = re.search(r'layer:EC-MSC-SMC:1.1:Newly_Active_Areas\s*\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace(',','-')
- except: CLC = self.GeoToCLC()
+def GetPlatform():
+ if sys.platform == "win32": platform = "win"
+ else: platform = "other"
+ return platform
+
+def get_len(fname):
+ with contextlib.closing(wave.open(fname,'r')) as f:
+ frames = f.getnframes()
+ rate = f.getframerate()
+ duration = frames / float(rate)
+ return duration
+
+def freq(file, start_time, end_time):
+ sr, data = wavfile.read(file)
+ if data.ndim > 1: data = data[:, 0]
+ else: pass
+ dataToRead = data[int(start_time * sr / 1000) : int(end_time * sr / 1000) + 1]
+ N = len(dataToRead)
+ yf = rfft(dataToRead)
+ xf = rfftfreq(N, 1 / sr)
+ idx = numpy.argmax(numpy.abs(yf)) # Get the most dominant frequency and return it
+ freq = xf[idx]
+ return freq
+
+def RemoveEOMpATTN(AudioFile):
+ try:
+ # Remove END (EOMs)
+ # audio = AudioSegment.from_file(f"Audio/tmp/{moniName}out.wav")
+ audio = AudioSegment.from_file(AudioFile)
+ lengthaudio = len(audio)
+ start = 0
+ threshold = lengthaudio - 1200
+ end = 0
+ counter = 0
+ end += threshold
+ chunk = audio[start:end]
+ filename = f"{AudioFile}.rmend"
+ chunk.export(filename, format="wav")
+ counter +=1
+ start += threshold
+ except: pass
+
+ try:
+ # Remove attention tone
+ timelist = []
+ freqlist = []
+ ATTNCUT = 0
+ file_length = get_len(f"{AudioFile}.rmend")
+ if file_length < 23: file_length = round(file_length)
+ else: file_length = 80
+ cnt = 0
+ for e in range(file_length):
+ cnt = cnt + 1
+ val = 300
+ start = e * val
+ offset = start + val
+ timelist.append(start)
+ frequency = freq(f"{AudioFile}.rmend", start, offset)
+ freqlist.append(frequency)
+ freqlist = list(freqlist)
+ mainlen = len(freqlist)
+ found = False
+ for e in range(len(freqlist)):
+ if found == False:
+ if 810 < round(int(freqlist[e])) < 1070:
+ if 810 < round(int(freqlist[e + 1])) < 1070 and 810 < round(int(freqlist[e + 2])) < 1070:
+ found = True
+ elif found == True:
+ if freqlist[e] < 810 or freqlist[e] > 1070:
+ if e + 5 < mainlen:
+ if freqlist[e + 1] < 810 or freqlist[e + 1] > 1070 and freqlist[e + 2] < 810 or freqlist[e + 2] > 1070 and freqlist[e + 3] < 810 or freqlist[e + 3] > 1070 and freqlist[e + 4] < 810 or freqlist[e + 4] > 1070 and freqlist[e + 5] < 810 or freqlist[e + 5] > 1070:
+ end_point = e
+ found = None
+ os.remove(AudioFile)
+ if(found == None): pass
else:
- CLC = re.findall(r'\s*SAME\s*\s*(.*?)\s*\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- CLC = '-'.join(CLC)
- if str(CLC) == "": CLC = self.GeoToCLC()
- if CLC == "": CLC = "000000"
+ gl = round(get_len(f"{AudioFile}.rmend"))
+ if(gl > 4): end_point = 17 #5 seconds
+ else: end_point = gl // 2
+ audio = AudioSegment.from_file(f"{AudioFile}.rmend")
+ lengthaudio = len(audio)
+ cut = 300 * end_point
+ start = cut
+ threshold = lengthaudio - cut
+ end = lengthaudio
+ counter = 0
+ while start < len(audio):
+ end += threshold
+ chunk = audio[start:end]
+ chunk.export(AudioFile, format="wav")
+ counter +=1
+ start += threshold
+ except: pass
- GeneratedHeader = f"ZCZC-{ORG}-{EVE}-{CLC}+{Purge}-{Effective}-{Callsign}-"
- return GeneratedHeader
-
- def LastWordThing(self, headline):
- target_words = {"test", "watch", "warning", "alert", "emergency"}
- words = headline.split()
- if words:
- last_word = words[-1].lower()
- return last_word in target_words
- return False
-
- def BroadcastText(self, lang):
- try: BroadcastText = re.search(r'layer:SOREM:1.0:Broadcast_Text\s*\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace('\n',' ').replace(' ',' ')
- except:
- if lang == "fr": issue = "émis"; update = "mis à jour"; cancel = "annulé"
- else: issue = "issued"; update = "updated"; cancel = "cancelled"
-
- if self.MsgType == "Alert": MsgPrefix = issue
- elif self.MsgType == "Update": MsgPrefix = update
- elif self.MsgType == "Cancel": MsgPrefix = cancel
- else: MsgPrefix = "issued"
-
- Sent = datetime.fromisoformat(datetime.fromisoformat(self.Sent).astimezone(timezone.utc).isoformat())
- Sent = Sent.astimezone()
- if lang == "fr": Sent = Sent.strftime("%Hh%M.")
- else: Sent = Sent.strftime("%H:%M %Z, %B %d, %Y.")
+def ZCZC_test(inp):
+ inp = inp.split("-")
+ num = len(inp) - 6
+ if len(inp[num + 3]) != 7: return False
+ elif len(inp[num + 4]) != 8: return False
+ elif len(inp[0]) != 4: return False #ZCZC
+ elif len(inp[1]) != 3: return False #"EAS"
+ elif len(inp[2]) != 3: return False #"DMO"
+ if num == 1 and len(inp[3]) == 11: return True
+ elif num > 1:
+ for e in range(num):
+ if (e + 1) == num:
+ if len(inp[e+3]) == 11: return True
+ else: return False
+ elif len(inp[e+3]) != 6: return False
+ else: return False
+
+class Webserver:
+ def __init__(self):
+ self.QEWEB_flaskapp = Flask(__name__)
+ self.setup_routes()
+ self.QEWEB_flaskapp.secret_key = secrets.token_hex(16)
+ self.PASSWORD_FILE = './password.json'
+ self.SESSION_COOKIE_NAME = 'session_id'
+ self.SESSIONS = {}
+ self.DEFAULT_PASSWORD_HASH = hashlib.sha256('hackme'.encode()).hexdigest()
+
+ def save_password(self, password_hash):
+ with open(self.PASSWORD_FILE, 'w') as file: json.dump({'password': password_hash}, file)
+
+ def get_audio_devices(self):
+ devices = sd.query_devices()
+ output_devices = [device for device in devices if device['max_output_channels'] > 0]
+ return [f"{device['name']}, {sd.query_hostapis()[device['hostapi']]['name']}" for device in output_devices]
+
+ def get_audio_inputs(self):
+ devices = sd.query_devices()
+ input_devices = [device for device in devices if device['max_input_channels'] > 0]
+ return [f"{device['name']}, {sd.query_hostapis()[device['hostapi']]['name']}" for device in input_devices]
+
+ def list_tts_voices(self):
+ try:
+ try: pythoncom.CoInitialize()
+ except: pass
+ engine = pyttsx3.init()
+ voices = engine.getProperty('voices')
+ return [voice.name for voice in voices]
+ except Exception as e: print("[Webserver]: Exception getting the list of TTS voices (pyttsx3): ", e)
+
+ def load_config(self):
+ try:
+ with open(Config_File, 'r') as file: return json.load(file)
+ except FileNotFoundError: return {}
+
+ def save_config(self, config):
+ config['version'] = QuantumENDEC_Version
+ with open(Config_File, 'w') as file: json.dump(config, file, indent=4)
+
+ # Load the password from a file or use a default
+ def load_password(self):
+ try:
+ with open('password.json', 'r') as file:
+ data = json.load(file)
+ return data.get('password', self.DEFAULT_PASSWORD_HASH)
+ except FileNotFoundError: return self.DEFAULT_PASSWORD_HASH
+
+ # Check if the user is authenticated
+ def is_authenticated(self):
+ session_id = request.cookies.get(self.SESSION_COOKIE_NAME)
+ return session_id in self.SESSIONS
+
+ # Create a new session
+ def create_session(self):
+ session_id = ''.join(random.choices(string.ascii_letters + string.digits, k=32))
+ self.SESSIONS[session_id] = True
+ return session_id
+
+ def GetActiveAlerts(self):
+ try:
+ with open(Config_File, "r") as JCfile: config = JCfile.read()
+ ConfigData = json.loads(config)
+ ActiveAlerts = []
+ XMLhistory = os.listdir(XMLhistory_Folder)
+ current_time = datetime.now(timezone.utc)
+ for i in XMLhistory:
+ try:
+ with open(f"{XMLhistory_Folder}/{i}", "r", encoding='utf-8') as f: XML = f.read()
+ Sent = re.search(r'\s*(.*?)\s*', XML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ MessageType = re.search(r'\s*(.*?)\s*', XML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Status = re.search(r'\s*(.*?)\s*', XML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ XML = re.findall(r'\s*(.*?)\s*', XML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ InfoProc = 0
+ ExpireProc = 0
+
+ for InfoEN in XML:
+ InfoProc = InfoProc + 1
+ InfoEN = f"{InfoEN}"
+ try:
+ Expires = datetime.fromisoformat(datetime.fromisoformat(re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)).astimezone(timezone.utc).isoformat())
+ if current_time > Expires:
+ ExpireProc = ExpireProc + 1
+ continue
+ except:
+ ExpireProc = ExpireProc + 1
+ continue
+
+ try:
+ if "fr" in re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1): lang = "fr"
+ elif "es" in re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1): lang = "es"
+ else: lang = "en"
+ except: lang = "en"
+ try:
+ if ConfigData[f'relay_{lang}'] is False: continue
+ except: continue
+
+ Urgency = re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Severity = re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Sent = Sent.replace("T"," ")
+ expire = re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("T"," ")
+ senderName = re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Description = re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ event = re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ if Description == "###": continue
+ ActiveAlerts.append(f"CAP from {senderName}\n Sent: {Sent}\n Expires: {expire}\n{Status}, {MessageType}\n {Urgency}, {Severity}\n Event: {event}\n\n {Description}")
+ if InfoProc == ExpireProc:
+ try: os.remove(f"{XMLhistory_Folder}/{i}")
+ except: pass
+ except: continue
+ return ActiveAlerts
+ except: return []
+
+ # ... FLASK THINGS ...
+ def setup_routes(self):
+ @self.QEWEB_flaskapp.route('/activeAlerts')
+ def activeAlerts():
+ try:
+ ActiveAlerts = self.GetActiveAlerts()
+ if not ActiveAlerts: return jsonify(["No alerts"])
+ return jsonify(ActiveAlerts)
+ except: return jsonify(["Error fetching alerts"])
+
+ @self.QEWEB_flaskapp.route('/config')
+ def config_page():
+ if not self.is_authenticated(): return redirect(url_for('login_page'))
+ return send_from_directory(Assets_Folder, 'config.html')
+
+ @self.QEWEB_flaskapp.route('/audio_devices')
+ def audio_devices():
+ if not self.is_authenticated(): return jsonify({'error': 'Unauthorized'}), 401
+ devices = self.get_audio_devices()
+ return jsonify(devices)
+
+ @self.QEWEB_flaskapp.route('/audio_inputs')
+ def audio_inputs():
+ if not self.is_authenticated(): return jsonify({'error': 'Unauthorized'}), 401
+ devices = self.get_audio_inputs()
+ return jsonify(devices)
+
+ @self.QEWEB_flaskapp.route('/tts_voices')
+ def tts_voices():
+ if not self.is_authenticated(): return jsonify({'error': 'Unauthorized'}), 401
+ voices = self.list_tts_voices()
+ return jsonify(voices)
+
+ @self.QEWEB_flaskapp.route('/config_data')
+ def config_data():
+ if not self.is_authenticated(): return jsonify({'error': 'Unauthorized'}), 401
+ config = self.load_config()
+ return jsonify(config)
+
+ @self.QEWEB_flaskapp.route('/save_config', methods=['POST'])
+ def save_config_data():
+ if not self.is_authenticated(): return jsonify({'error': 'Unauthorized'}), 401
+ config = request.json
+ self.save_config(config)
+ return 'Configuration saved successfully.', 200
+
+ @self.QEWEB_flaskapp.route('/change_password', methods=['POST'])
+ def change_password():
+ if not self.is_authenticated(): return 'Unauthorized.', 401
+ data = request.get_json()
+ current_password_hash = hashlib.sha256(data['currentPassword'].encode()).hexdigest()
+ new_password_hash = hashlib.sha256(data['newPassword'].encode()).hexdigest()
+ if current_password_hash == self.load_password():
+ self.save_password(new_password_hash)
+ self.SESSIONS.clear() # Clear all sessions
+ return 'Password changed successfully.', 200
+ else: return 'Incorrect current password.', 403
+
+ @self.QEWEB_flaskapp.route('/login', methods=['GET', 'POST'])
+ def login_page():
+ if request.method == 'POST':
+ data = request.json
+ password_hash = hashlib.sha256(data['password'].encode()).hexdigest()
+ if password_hash == self.load_password():
+ session_id = self.create_session()
+ response = make_response('Login successful.')
+ response.set_cookie(self.SESSION_COOKIE_NAME, session_id, httponly=True, samesite='Lax')
+ return response
+ else: return 'Incorrect password.', 403
+ return send_from_directory(Assets_Folder, 'login.html')
+ #return send_from_directory('', 'login.html')
+
+ @self.QEWEB_flaskapp.route('/logout', methods=['POST'])
+ def logout():
+ session.clear() # Clear all session data
+ response = make_response(redirect('/login.html')) # Create a response object
+ response.set_cookie(self.SESSION_COOKIE_NAME, '', expires=0) # Remove the session cookie
+ return response
+
+ @self.QEWEB_flaskapp.route('/clearAlertLogTxt', methods=['POST'])
+ def clearAlertlogTxt():
+ try:
+ with open(f"{Assets_Folder}/alertlog.txt", "w") as f: f.write("")
+ except: pass
+ response = make_response(redirect('/alertLog.html'))
+ return response
+
+ @self.QEWEB_flaskapp.route('/send_alert', methods=['POST'])
+ def send_alert():
+ data = request.json
+ nowTime = datetime.now(timezone.utc)
+ sent = nowTime.strftime('%Y-%m-%dT%H:%M:%S-00:00')
+ expire = nowTime + timedelta(hours=1)
+ expire = expire.strftime('%Y-%m-%dT%H:%M:%S-00:00')
+ sentforres = nowTime.strftime('%Y%m%dT%H%M%S')
+ res = ''.join(random.choices(string.ascii_uppercase + string.digits, k=10))
+ res = f"{res}{sentforres}"
+
+ try: Cate = SameOrgToCapCat[data['ORG']]
+ except: Cate = "Other"
+
+ EVENT = data['EVE']
+ EVENT = EVENT.upper()
+ EVENT = EVENT[:3]
+
+ if data['SecondaryInfo'] is True:
+ try: Cate_second = SameOrgToCapCat[data['ORG_second']]
+ except: Cate_second = "Other"
+ EVENT_second = data['EVE_second']
+ EVENT_second = EVENT_second.upper()
+ EVENT_second = EVENT_second[:3]
+ secondInfo = f"""
+
+ {data['LANGUAGE_second']}
+ {Cate_second}
+ internal
+ Unknown
+ Unknown
+ Unknown
+ {sent}
+ {expire}
+ SAME{EVENT_second}
+ QuantumENDEC Internal
+ {EVENT_second}
+ {data['broadcastText_second']}
+ layer:SOREM:1.0:Broadcast_Text{data['broadcastText_second']}
+ EAS-ORG{data['ORG_second']}
+ Specified locationsSAME{data['FIPS_second']}
+
+ """
+ else: secondInfo = ""
+
+ finalXML = f"""
+
+ {res}
+ QuantumENDEC Internal
+ {sent}
+ Actual
+ Alert
+
+ Public
+
+ {data['LANGUAGE']}
+ {Cate}
+ internal
+ Unknown
+ Unknown
+ Unknown
+ {sent}
+ {expire}
+ SAME{EVENT}
+ QuantumENDEC Internal
+ {EVENT}
+ {data['broadcastText']}
+ layer:SOREM:1.0:Broadcast_Text{data['broadcastText']}
+ EAS-ORG{data['ORG']}
+ Specified locationsSAME{data['FIPS']}
+
+ {secondInfo}
+
+ """
+
+ filenameXML = f"{sent.replace(':', '_')}I{res}.xml"
+ print(f"Creating alert: {filenameXML}")
+ with open(f"{XMLqueue_Folder}/{filenameXML}", "w", encoding="utf-8") as file: file.write(finalXML)
+ return 'Alert XML created successfully.'
+
+ @self.QEWEB_flaskapp.before_request
+ def require_login():
+ public_paths = ['/login', '/login.html', '/scroll.html', '/alertText', '/fullscreen.html', '/Jstyle.html', '/tmp/alertImage.png', '/fullscreenWimage.html']
+ if request.path not in public_paths:
+ if not self.is_authenticated(): return redirect(url_for('login'))
+
+ @self.QEWEB_flaskapp.route('/login', methods=['GET', 'POST'])
+ def login():
+ if request.method == 'POST':
+ data = request.json
+ password_hash = hashlib.sha256(data['password'].encode()).hexdigest()
+
+ if password_hash == self.load_password():
+ session_id = self.create_session()
+ response = jsonify(message='Login successful.')
+ response.set_cookie(self.SESSION_COOKIE_NAME, session_id, httponly=True)
+ return response
+ else: return jsonify(message='Incorrect password.'), 403
- try: EventType = re.search(r'layer:EC-MSC-SMC:1.0:Alert_Name\s*\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- except:
- if lang == "fr":
- EventType = re.search(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- EventType = f"alerte {EventType}"
- else:
- EventType = re.search(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- if self.LastWordThing(EventType) is True: pass
- else: EventType = f"{EventType} alert"
+ return make_response(open('login.html').read()) # Render login page if GET request
+
+ @self.QEWEB_flaskapp.route('/upload_config', methods=['POST'])
+ def upload_config():
+ if 'file' not in request.files: return jsonify({'error': 'No file part'}), 400
+ file = request.files['file']
+ if file.filename == '': return jsonify({'error': 'No selected file'}), 400
+ if not file.filename.endswith('.json'): return jsonify({'error': 'Only JSON files are accepted'}), 400
+ file.save(Config_File)
+ return jsonify({'success': f'File uploaded and saved as {Config_File}'}), 200
+
+ @self.QEWEB_flaskapp.route('/upload_leadin', methods=['POST'])
+ def upload_leadin():
+ SAVE_PATH = f'{Assets_Folder}/pre.wav'
+ if 'file' not in request.files: return jsonify({'error': 'No file part'}), 400
+ file = request.files['file']
+ if file.filename == '': return jsonify({'error': 'No selected file'}), 400
+ if not file.filename.endswith('.wav'): return jsonify({'error': 'Only wav files are accepted'}), 400
+ file.save(SAVE_PATH)
+ return jsonify({'success': 'File uploaded and saved'}), 200
+
+ @self.QEWEB_flaskapp.route('/upload_leadout', methods=['POST'])
+ def upload_leadout():
+ SAVE_PATH = f'{Assets_Folder}/post.wav'
+ if 'file' not in request.files: return jsonify({'error': 'No file part'}), 400
+ file = request.files['file']
+ if file.filename == '': return jsonify({'error': 'No selected file'}), 400
+ if not file.filename.endswith('.wav'): return jsonify({'error': 'Only wav files are accepted'}), 400
+ file.save(SAVE_PATH)
+ return jsonify({'success': 'File uploaded and saved'}), 200
+
+ @self.QEWEB_flaskapp.route('/remove_Leadin', methods=['POST'])
+ def removeLeadin():
+ try:
+ os.remove(f"{Assets_Folder}/pre.wav")
+ return jsonify({'success': 'Lead in audio removed'})
+ except: return jsonify({'error': 'Failed to remove Lead in audio'})
+ @self.QEWEB_flaskapp.route('/remove_Leadout', methods=['POST'])
+ def removeLeadout():
try:
- Coverage = re.search(r'layer:EC-MSC-SMC:1.0:Alert_Coverage\s*\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- if lang == "fr": Coverage = f"en {Coverage} pour:"
- else: Coverage = f"in {Coverage} for:"
+ os.remove(f"{Assets_Folder}/post.wav")
+ return jsonify({'success': 'Lead out audio removed'})
+ except: return jsonify({'error': 'Failed to remove Lead out audio'})
+
+ @self.QEWEB_flaskapp.route('/alertText')
+ def GetAlertText():
+ try:
+ with open(f"{Assets_Folder}/AlertText.json", "r") as f: alertText = json.load(f)
+ return jsonify(alertText)
except:
- if lang == "fr": Coverage = "pour:"
- else: Coverage = "for:"
+ nothingThing = { "nothing":True }
+ return jsonify(nothingThing)
- AreaDesc = re.findall(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- AreaDesc = ', '.join(AreaDesc) + '.'
- try: SenderName = re.search(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- except: SenderName = "an alert issuer"
- try: Description = re.search(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace('\n', ' ')
- except: Description = ""
- try: Instruction = re.search(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace('\n', ' ')
- except: Instruction = ""
+ @self.QEWEB_flaskapp.route('/version')
+ def GetVersion():
+ return QuantumENDEC_Version
+
+ @self.QEWEB_flaskapp.route('/restart', methods=['GET'])
+ def RestartQE():
+ global QuantumStatus
+ if QuantumStatus == 1:
+ return "QuantumENDEC is already in the process of restarting!"
+
+ if QuantumStatus == 2:
+ return "QuantumENDEC is already in the process of shutting down!"
- if lang == "fr": BroadcastText = f"À {Sent} {SenderName} a {MsgPrefix} une {EventType} {Coverage} {AreaDesc} {Description} {Instruction}".replace('###','').replace(' ',' ')
- else: BroadcastText = f"At {Sent} {SenderName} has {MsgPrefix} a {EventType} {Coverage} {AreaDesc} {Description} {Instruction}".replace('###','').replace(' ',' ')
+ if QuantumStatus == 0:
+ QuantumStatus = 1
+ return "Now restarting QuantumENDEC... Check the status tab for QuantumENDEC's condition. The restart may take a while."
- return BroadcastText
+ @self.QEWEB_flaskapp.route('/shutdown', methods=['GET'])
+ def ShutdownQE():
+ global QuantumStatus
+ if QuantumStatus == 0:
+ QuantumStatus = 2
+ return """Now shutting down QuantumENDEC...
"""
+
+ if QuantumStatus == 1:
+ QuantumStatus = 2
+ return """QuantumENDEC was already restarting, now shutting down...
"""
+
+ if QuantumStatus == 2:
+ return """QuantumENDEC is already in the process of shutting down...
"""
+
+ #return """Now shutting down QuantumENDEC..."""
- def GetAudio(self, AudioLink, Output, DecodeType):
- if DecodeType == 1:
- print("Decoding audio from BASE64...")
- with open(Output, "wb") as fh: fh.write(base64.decodebytes(AudioLink))
- elif DecodeType == 0:
- print("Downloading audio...")
- r = requests.get(AudioLink)
- with open(Output, 'wb') as f: f.write(r.content)
-
- def ConvAudioFormat(self, inputAudio, outputAudio):
- result = subprocess.run(["ffmpeg", "-y", "-i", inputAudio, outputAudio], capture_output=True, text=True)
- if result.returncode == 0: print(f"[RELAY/GENERATE]: {inputAudio} --> {outputAudio} ... Conversion successful!")
- else: print(f"[RELAY/GENERATE]: {inputAudio} --> {outputAudio} ... Conversion failed: {result.stderr}")
-
- def LoudenAudio(self, inputAudio, outputAudio):
- result = subprocess.run(["ffmpeg", "-y", "-i", inputAudio, "-filter:a", "volume=2.5", outputAudio], capture_output=True, text=True)
- if result.returncode == 0: print(f"[RELAY/GENERATE]: Filter loudening success.")
- else: print(f"[RELAY/GENERATE]: Filter loudening failure: {result.stderr}")
-
- def TrimAudio(self, input_file, output_file, max_duration_ms=120000):
- # For broadcast audio
- try:
- audio = AudioSegment.from_file(input_file)
- duration_ms = len(audio)
- if duration_ms > max_duration_ms:
- trimmed_audio = audio[:max_duration_ms]
- trimmed_audio.export(output_file, format="wav")
- print(f"Broadcast Audio trimmed to {max_duration_ms / 1000} seconds.")
- shutil.move(output_file, input_file)
- else: pass
- except: print("Failed to trim broadcast audio!")
-
- def Audio(self, BroadcastText, lang, ConfigData):
- try:
- resources = re.findall(r'\s*(.*?)\s*', self.InfoX, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- if "audio/mpeg" in str(resources): pass
- elif "audio/x-ms-wma" in str(resources): pass
- elif "audio/wave" in str(resources): pass
- elif "audio/wav" in str(resources): pass
- elif "audio/x-ipaws-audio-mp3" in str(resources): pass
- else: raise Exception("Generate TTS instead")
- for BroadcastAudioResource in resources:
- if "" in BroadcastAudioResource:
- AudioLink = bytes(re.search(r'\s*(.*?)\s*', BroadcastAudioResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1), 'utf-8')
- AudioType = re.search(r'\s*(.*?)\s*', BroadcastAudioResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- Decode = 1
- else:
- AudioLink = re.search(r'\s*(.*?)\s*', BroadcastAudioResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- AudioType = re.search(r'\s*(.*?)\s*', BroadcastAudioResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- Decode = 0
-
- if AudioType == "audio/mpeg":
- self.GetAudio(AudioLink,"Audio/tmp/PreAudio.mp3",Decode)
- self.ConvAudioFormat("Audio/tmp/PreAudio.mp3", "Audio/tmp/PreAudio.wav")
- os.remove("Audio/tmp/PreAudio.mp3")
- self.LoudenAudio("Audio/tmp/PreAudio.wav", "Audio/audio.wav")
- os.remove("Audio/tmp/PreAudio.wav")
-
- elif AudioType == "audio/x-ms-wma":
- self.GetAudio(AudioLink,"Audio/tmp/PreAudio.wma",Decode)
- self.ConvAudioFormat("Audio/tmp/PreAudio.wma", "Audio/tmp/PreAudio.wav")
- os.remove("Audio/tmp/PreAudio.wma")
- self.LoudenAudio("Audio/tmp/PreAudio.wav", "Audio/audio.wav")
- os.remove("Audio/tmp/PreAudio.wav")
-
- elif AudioType == "audio/wave":
- self.GetAudio(AudioLink,"Audio/tmp/PreAudio.wav",Decode)
- self.LoudenAudio("Audio/tmp/PreAudio.wav", "Audio/audio.wav")
- os.remove("Audio/tmp/PreAudio.wav")
-
- elif AudioType == "audio/wav":
- self.GetAudio(AudioLink,"Audio/tmp/PreAudio.wav",Decode)
- self.LoudenAudio("Audio/tmp/PreAudio.wav", "Audio/audio.wav")
- os.remove("Audio/tmp/PreAudio.wav")
-
- elif AudioType == "audio/x-ipaws-audio-mp3":
- self.GetAudio(AudioLink,"Audio/tmp/PreAudio.mp3",Decode)
- self.ConvAudioFormat("Audio/tmp/PreAudio.mp3", "Audio/tmp/PreAudio.wav")
- os.remove("Audio/tmp/PreAudio.mp3")
- self.LoudenAudio("Audio/tmp/PreAudio.wav", "Audio/audio.wav")
- os.remove("Audio/tmp/PreAudio.wav")
- else: pass
- except:
- print("Generating TTS audio...")
- try: pythoncom.CoInitialize()
- except: pass
-
- try: os.remove("Audio/audio.wav")
- except: pass
+ @self.QEWEB_flaskapp.route('/')
+ def home(): return send_from_directory(Assets_Folder, 'index.html')
- try:
- if ConfigData["TTS_Service"] == "pyttsx3":
- engine = pyttsx3.init()
- if ConfigData["UseDefaultVoices"] is False:
- if lang == "fr": ActiveVoice = ConfigData["VoiceFR"]
- else: ActiveVoice = ConfigData["VoiceEN"]
- voices = engine.getProperty('voices')
- ActiveVoice = next((voice for voice in voices if voice.name == ActiveVoice), None)
- if ActiveVoice: engine.setProperty('voice', ActiveVoice.id)
- engine.save_to_file(str(BroadcastText), f"Audio/audio.wav")
- engine.runAndWait()
- elif ConfigData["TTS_Service"] == "flite":
- BroadcastText = BroadcastText.replace("\n", " ")
- if ConfigData["UseDefaultVoices"] is False:
- if lang == "fr": ActiveVoice = ConfigData["FliteVoice_FR"]
- else: ActiveVoice = ConfigData["FliteVoice_EN"]
- subprocess.run(["flite", "-t", BroadcastText, "-voice", ActiveVoice, "-o", f"Audio/audio.wav"], capture_output=True, text=True)
- else: subprocess.run(["flite", "-t", BroadcastText, "-o", f"Audio/audio.wav"], capture_output=True, text=True)
- else:
- BroadcastText = BroadcastText.replace("\n", " ")
- if lang == "fr": ActiveVoice = ConfigData["APIvoice_FR"]
- else: ActiveVoice = ConfigData["APIvoice_EN"]
- GenenerateTTS_UsingAPI(ConfigData["TTS_Service"], ActiveVoice, ConfigData["APIvoice_Region"], ConfigData["APIvoice_Key"], "Audio/tmp", BroadcastText)
- self.ConvAudioFormat("Audio/tmp/GeneratedTTS.mp3", "Audio/PreAudio.wav")
- except:
- print("TTS generation failure!")
-
- if ConfigData['Force120'] is True: self.TrimAudio("./Audio/audio.wav", "./Audio/tmp/trimmedAudio.wav")
-
- def AudioSAME(self, GeneratedHeader):
- print("Generating SAME header...")
- SAMEheader = EASGen.genEAS(header=GeneratedHeader, attentionTone=False, endOfMessage=False)
- SAMEeom = EASGen.genEAS(header="NNNN", attentionTone=False, endOfMessage=False)
- EASGen.export_wav("./Audio/same.wav", SAMEheader)
- EASGen.export_wav("./Audio/eom.wav", SAMEeom)
+ @self.QEWEB_flaskapp.after_request
+ def add_header(response):
+ response.headers['Cache-Control'] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0, max-age=0'
+ response.headers['Pragma'] = 'no-cache'
+ response.headers['Expires'] = '-1'
+ return response
-class Playout:
- def __init__(self, InputConfig, CODE):
- self.CODE = CODE
- self.InputConfig = InputConfig
+ @self.QEWEB_flaskapp.route('/')
+ def static_files(path): return send_from_directory(Assets_Folder, path)
- def play(self, InputFile):
- UseSpecDevice = self.InputConfig['UseSpecified_AudioOutput']
- SpecDevice = self.InputConfig['Specified_AudioOutput']
- time.sleep(0.5)
- if UseSpecDevice is True:
- sd.default.reset()
- sd.default.device = SpecDevice
- sampling_rate, audio_data = wavfile.read(InputFile)
- sd.play(audio_data, samplerate=sampling_rate)
- sd.wait()
- else:
- sampling_rate, audio_data = wavfile.read(InputFile)
- sd.play(audio_data, samplerate=sampling_rate)
- sd.wait()
+ def StartServer(self, HOST="0.0.0.0", PORT="8050"):
+ print("[Webserver]: Starting webserver... ", f"Port: {PORT}")
+ logging.getLogger('werkzeug').setLevel(logging.ERROR)
+ self.QEWEB_flaskapp.run(host=HOST, port=PORT, debug=False)
- def AlertIntro(self):
- UpdateStatus("Relay", f"Transmitting alert.")
- if os.path.exists("./Audio/pre.wav"):
- try: self.play("./Audio/pre.wav")
- except: pass
-
- def AlertSAME(self):
- try: self.play("./Audio/same.wav")
- except: pass
-
- def AlertAttn(self):
- try:
- if "CANADA" in str(self.CODE): self.play(f"./Audio/AttnCAN.wav")
- elif "USA" in str(self.CODE): self.play(f"./Audio/AttnEBS.wav")
- else: self.play(f"./Audio/{self.InputConfig['AttentionTone']}")
- except: print("Attention tone error! (Check attention tone audio file)")
- def AlertAudio(self):
- try: self.play("./Audio/audio.wav")
- except: print("Error playing alert audio.")
+class Capture:
+ def SaveCAP(self, OutputFolder, InputXML, Source=None):
+ CapturedSent = re.search(r'\s*(.*?)\s*', InputXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_")
+ CapturedIdent = re.search(r'\s*(.*?)\s*', InputXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_")
+ filename = f"{CapturedSent}I{CapturedIdent}.xml"
+ with open(f"{OutputFolder}/{filename}", 'w', encoding='utf-8') as file: file.write(InputXML)
+ print(f"[Capture]: Captured an XML, and saved it to: {OutputFolder}/{filename} | From: {Source}")
+
+ def realTCPcapture(self, host, port, buffer=1024, delimiter="", StatName=None):
+ print(f"[TCP Capture]: Connecting to: {host} at {port}")
+ while QEinterrupt() is False:
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
+ try:
+ s.connect((host, int(port)))
+ s.settimeout(100)
+ if StatName is not None: UpdateStatus(StatName, f"Connected to {host}")
+ print(f"[TCP Capture]: Connected to {host}")
+ data_received = ""
+ try:
+ while QEinterrupt() is False:
+ chunk = str(s.recv(buffer), encoding='utf-8', errors='ignore')
+ data_received += chunk
+ if delimiter in chunk:
+ try: self.SaveCAP(XMLqueue_Folder, data_received, host)
+ except: print(f"[TCP Capture]: {StatName}, failed to save XML!")
+ data_received = ""
+ except socket.timeout:
+ print(f"[TCP Capture]: Connection timed out for {host}")
+ if StatName is not None: UpdateStatus(StatName, f"Timed out: {host}")
+ except Exception as e:
+ print(f"[TCP Capture]: Something broke when connecting to {host}: {e}")
+ if StatName is not None: UpdateStatus(StatName, f"Connection error to: {host}")
+ exit()
- def AlertEOM(self):
- try: self.play("./Audio/eom.wav")
- except: pass
+ def TCPcapture(self, host, port, buffer=1024, delimiter="", StatName=None):
+ # i hate this, but it results in quicker shutdowns/restarts
+ decodeThread = threading.Thread(target=self.realTCPcapture, args=(host, port, buffer, delimiter, StatName))
+ decodeThread.daemon = True
+ decodeThread.start()
+ while QEinterrupt() is False: time.sleep(1) # keep-alive
+ exit()
- def AlertOutro(self):
- if os.path.exists("./Audio/post.wav"):
- try: self.play("./Audio/post.wav")
- except: pass
-def DecodeIntMonitor(inputXML, ConfigData):
- try:
- SourceHEADER = re.search(r'\s*(.*?)\s*', inputXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- BroadcastAudio = re.search(r'\s*(.*?)\s*', inputXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
-
- if len(ConfigData['SAMEmonitor-FIPS-filter']) == 0: pass
- else:
- try:
- SourceFIPS = EAS2Text(SourceHEADER).FIPS
- FIPSmatch = False
- for i in SourceFIPS:
- # Partial county wildcard filter
- partial = "*" + i[1:]
- if partial[:2] in ConfigData['AllowedLocations_CLC']: return True
- if partial[:3] in ConfigData['AllowedLocations_CLC']: return True
- if partial[:4] in ConfigData['AllowedLocations_CLC']: return True
- if partial in ConfigData['AllowedLocations_CLC']: return True
-
- if i[:2] in ConfigData['SAMEmonitor-FIPS-filter']: FIPSmatch = True
- if i[:3] in ConfigData['SAMEmonitor-FIPS-filter']: FIPSmatch = True
- if i[:4] in ConfigData['SAMEmonitor-FIPS-filter']: FIPSmatch = True
- if i in ConfigData['SAMEmonitor-FIPS-filter']: FIPSmatch = True
- if FIPSmatch is False: return False
- except: return False
-
- if len(ConfigData['SAMEmonitor-EVENT-filter']) == 0: pass
+ def HTTPcapture(self, CAP_URL, instance=None):
+ if CAP_URL is None or CAP_URL == "": UpdateStatus(f"HTTPCAPcapture{instance}", f"HTTP CAP capture {instance} disabled.")
else:
+ print(f"[HTTP Capture]: HTTP CAP Capture active! {CAP_URL}")
+ while QEinterrupt() is False:
+ try:
+ UpdateStatus(f"HTTPCAPcapture{instance}", f"HTTP CAP Capture {instance} is active!")
+ ReqCAP = Request(url = f'{CAP_URL}')
+ CAP = urlopen(ReqCAP).read()
+ CAP = CAP.decode('utf-8')
+ CAP = re.findall(r'', CAP, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ for alert in CAP:
+ alert = f""
+ try: self.SaveCAP(XMLqueue_Folder, alert, CAP_URL)
+ except: print("[Capture]: Failed to save XML!")
+ time.sleep(30)
+ except Exception as e:
+ print("[HTTP Capture] Something went wrong.", e)
+ UpdateStatus(f"HTTPCAPcapture{instance}", f"HTTP CAP Capture {instance} error.")
+ time.sleep(30)
+
+ def NWScapture(self, ATOM_LINK):
+ # Goddamnit americans, you have to have every single alert source in their own goddamn way!
+ # Why can't you use a centerlized TCP server?!!?!
+ print("[NWS CAP Capture]: Activating NWS CAP Capture with: ", ATOM_LINK)
+ while QEinterrupt() is False:
+ UpdateStatus("NWSCAPcapture", "NWS CAP Capture is active.")
try:
- EVENT = EAS2Text(SourceHEADER).evnt
- if "EAN" in EVENT or "NIC" in EVENT or "NPT" in EVENT or "RMT" in EVENT or "RWT" in EVENT: pass
- elif EVENT in ConfigData: pass
- else: return False
- except: return False
+ req1 = Request(url = ATOM_LINK)
+ xml = urlopen(req1).read()
+ xml = xml.decode('utf-8')
+ entries = re.findall(r'\s*(.*?)\s*', xml, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ current_time = datetime.now(timezone.utc)
+ for entry in entries:
+ try:
+ CAP_LINK = re.search(r'', entry, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ expires = re.search(r'\s*(.*?)\s*', entry, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ expires = datetime.fromisoformat(expires).astimezone(timezone.utc).isoformat()
+ expires = datetime.fromisoformat(expires)
+
+ if current_time > expires: pass #print("expired")
+ else:
+ last_slash_index = CAP_LINK.rfind('/')
+ if last_slash_index != -1: filename = CAP_LINK[last_slash_index + 1:]
+ else: filename = CAP_LINK
+ filename = filename.replace("-", "_").replace("+", "p").replace(":", "_").replace("\n", "")
+ filename = filename + ".xml"
+ if filename in os.listdir(f"{XMLhistory_Folder}"): pass #print("already downloaded")
+ elif filename in os.listdir(f"{XMLqueue_Folder}"): pass #print("already downloaded")
+ else:
+ # print(filename, expires)
+ NWSCAP_REQUEST = Request(url = CAP_LINK)
+ NWSCAP_XML = urlopen(NWSCAP_REQUEST).read()
+ NWSCAP_XML = NWSCAP_XML.decode('utf-8')
+ with open(f"{XMLqueue_Folder}/{filename}", "w") as f: f.write(NWSCAP_XML)
+ except: pass
+ except Exception as e:
+ print("[NWS CAP Capture]: An error occured.", e)
+ UpdateStatus("NWSCAPcapture", "An error occured.")
+ time.sleep(120) # To put less strain on the network
- if len(ConfigData['SAMEmonitor-ORIGINATOR-filter']) == 0: pass
- else:
- try:
- if EAS2Text(SourceHEADER).org in ConfigData['SAMEmonitor-ORIGINATOR-filter']: pass
- else: return False
- except: return False
-
- Callsign = ConfigData['SAME_callsign']
- if len(Callsign) > 8: Callsign = "QUANTUM0"; print("Your callsign is too long!")
- elif len(Callsign) < 8: Callsign = "QUANTUM0"; print("Your callsign is too short!")
- elif "-" in Callsign: Callsign = "QUANTUM0"; print("Your callsign contains an invalid symbol!")
- ZCZC = SourceHEADER.split("-")
- ZCZClen = len(ZCZC) - 2
- ZCZC[ZCZClen] = Callsign
- ZCZC = '-'.join(ZCZC)
- print("Generating SAME header...")
- SAMEheader = EASGen.genEAS(header=ZCZC, attentionTone=False, endOfMessage=False)
- SAMEeom = EASGen.genEAS(header="NNNN", attentionTone=False, endOfMessage=False)
- EASGen.export_wav("./Audio/same.wav", SAMEheader)
- EASGen.export_wav("./Audio/eom.wav", SAMEeom)
-
+class Monitor_Stream:
+ def __init__(self, monitorName, streamURL):
+ self.monitorName = monitorName
+ self.streamURL = streamURL
+ self.record = False
+
+ def is_stream_online(self):
try:
- oof = EAS2Text(ZCZC)
- BroadcastText = oof.EASText
- except: BroadcastText = "This is an emergency alert message."
-
+ response = requests.get(self.streamURL, stream=True, timeout=10)
+ return response.status_code == 200
+ except requests.RequestException as e:
+ print(f"[{self.monitorName}] Error checking stream URL: {e}")
+ return False
+
+ def RecordIP(self, ZCZC):
+ output_file = f"{Tmp_Folder}/{self.monitorName}-audio.wav"
+ try: os.remove(output_file)
+ except: pass
+ RecordIP = (ffmpeg .input(self.streamURL) .output(output_file, format='wav', ar='8000') .run_async(pipe_stdout=True, pipe_stderr=True))
+ seconds = 0
+ while QEinterrupt() is False:
+ seconds = seconds + 1
+ if self.record is False or seconds == 120 or seconds > 120:
+ RecordIP.terminate()
+ RecordIP.wait()
+ print(f"[{self.monitorName}] Stopped Recording Thread")
+ RemoveEOMpATTN(output_file)
+ CreateSAMEmonitorXML(ZCZC, output_file, self.monitorName)
+ UpdateStatus(self.monitorName, f"Alert sent.")
+ print(f"[{self.monitorName}] Alert Sent!\n\n")
+ exit()
+ time.sleep(1)
+
+ def decodeStream(self):
try:
- AudioLink = bytes(re.search(r'\s*(.*?)\s*', BroadcastAudio, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1), 'utf-8')
- #AudioType = re.search(r'\s*(.*?)\s*', BroadcastAudio, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- with open("PreAudio.wav", "wb") as fh: fh.write(base64.decodebytes(AudioLink))
- result = subprocess.run(["ffmpeg", "-y", "-i", "PreAudio.wav", "-filter:a", "volume=2.5", "Audio/audio.wav"], capture_output=True, text=True)
- if result.returncode == 0: print(f"[RELAY/GENERATE]: Filter loudening success.")
- else: print(f"[RELAY/GENERATE]: Filter loudening failure: {result.stderr}")
- os.remove("PreAudio.wav")
+ # Command to capture audio from IP stream and pipe it to multimon-ng
+ ffmpeg_command = [
+ 'ffmpeg',
+ '-i', self.streamURL, # Input stream URL
+ '-f', 'wav', # Output format
+ '-ac', '1', # Number of audio channels (1 for mono)
+ '-ar', '22050', # Audio sample rate
+ '-loglevel', 'quiet', # Suppress ffmpeg output
+ '-' ]
+
+ platform = GetPlatform()
+ last = None
+ self.ffmpeg_process = subprocess.Popen(ffmpeg_command, stdout=subprocess.PIPE)
+ if platform == "win": self.source_process = subprocess.Popen(['multimon-ng-WIN32/multimon-ng.exe', '-a', 'EAS', '-q', '-t', 'raw', '-'], stdin=self.ffmpeg_process.stdout, stdout=subprocess.PIPE)
+ else: self.source_process = subprocess.Popen(['multimon-ng', '-a', 'EAS', '-q', '-t', 'raw', '-'], stdin=self.ffmpeg_process.stdout, stdout=subprocess.PIPE)
+ UpdateStatus(self.monitorName, f"Ready For Alerts, listening to {self.streamURL}")
+ print(f"[{self.monitorName}] Ready For Alerts, listening to {self.streamURL}\n")
+
+ while QEinterrupt() is False:
+ line = self.source_process.stdout.readline().decode("utf-8")
+ if QEinterrupt() is True: break
+ decode = line.replace("b'EAS: ", "").replace("\n'", "").replace("'bEnabled Demodulators: EAS", "").replace('EAS: ', '').replace('EAS: ', '').replace('Enabled demodulators: EAS', '')
+ if "ZCZC-" in decode or "NNNN" in decode: print(f"[{self.monitorName}] Decoder: {decode}")
+
+ if 'ZCZC-' in str(line):
+ if ZCZC_test(decode) == True:
+ SAME = decode.replace("\n", "")
+ UpdateStatus(self.monitorName, f"Receiving alert...")
+ print(f"[{self.monitorName}] ZCZC Check OK")
+ with open(Config_File, "r") as JCfile: config = JCfile.read()
+ ConfigData = json.loads(config)
+ dateNow = datetime.now().strftime("%B %d, %Y at %H:%M:%S")
+ Logger(ConfigData).SendLog("Emergency Alert Received", f"Receipt: Received on {dateNow} from {self.monitorName}", decode)
+ self.record = True
+ RecordThread = threading.Thread(target = self.RecordIP, args=(decode,))
+ RecordThread.start()
+ else:
+ print(f"[{self.monitorName}] WARNING: ZCZC Check FAILED!")
+ line = "NNNN"
+
+ elif 'NNNN' not in str(last):
+ if 'NNNN' in str(line):
+ time.sleep(0.5)
+ self.record = False
+ try: RecordThread.join()
+ except: pass
+ UpdateStatus(self.monitorName, f"Ready For Alerts, listening to {self.streamURL}")
+ last = line
except:
- print("Generating TTS audio...")
- try: pythoncom.CoInitialize()
+ try:
+ self.ffmpeg_process.terminate()
+ self.source_process.terminate()
except: pass
- engine = pyttsx3.init()
- if ConfigData["UseDefaultVoices"] is False:
- ActiveVoice = ConfigData["VoiceEN"]
- voices = engine.getProperty('voices')
- ActiveVoice = next((voice for voice in voices if voice.name == ActiveVoice), None)
- if ActiveVoice: engine.setProperty('voice', ActiveVoice.id)
- engine.save_to_file(str(BroadcastText), f"Audio/audio.wav")
- engine.runAndWait()
- return [ZCZC, BroadcastText]
- except: return "exception"
-
-def GetXML_CODE(inputXML):
- try:
- CODE = re.findall(r'\s*(.*?)\s*
', inputXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- if "profile:CAP-CP:0.4" in str(CODE): CODE = "CANADA"
- elif "IPAWSv1.0" in str(CODE): CODE = "USA"
- else: CODE = False
- return CODE
- except:
- return False
+ UpdateStatus(self.monitorName, f"Failure")
+ print(f"[{self.monitorName}] Monitor failure.")
-stopPassthrough = threading.Event()
-
-def audio_callback(indata, outdata, frames, time, status):
- if status: print(status, file=sys.stderr)
- outdata[:] = indata
+ def start(self):
+ while QEinterrupt() is False:
+ if self.is_stream_online() is False:
+ print(f"[{self.monitorName}] Stream URL {self.streamURL} is offline or unreachable.")
+ UpdateStatus(self.monitorName, f"Stream URL {self.streamURL} is offline or unreachable.")
+ time.sleep(30)
+ else:
+ try:
+ decodeThread = threading.Thread(target=self.decodeStream)
+ decodeThread.daemon = True
+ decodeThread.start()
+ while QEinterrupt() is False:
+ time.sleep(30)
+ if self.is_stream_online() is False:
+ print(f"[{self.monitorName}] Stream URL {self.streamURL} is offline or unreachable.")
+ UpdateStatus(self.monitorName, f"Stream URL {self.streamURL} is offline or unreachable.")
+ time.sleep(30)
+ break
+ else: pass
+ if QEinterrupt() is True:
+ self.ffmpeg_process.terminate()
+ self.source_process.terminate()
+ except:
+ print(f"[{self.monitorName}] Monitor failure.")
+ UpdateStatus(self.monitorName, f"Failure.")
+ exit()
-def passthrough(ConfigData):
- sd.default.reset()
- Nope = False
- input_device_name = ConfigData['Passthrough_AudioInput']
- output_device_name = ConfigData['Specified_AudioOutput']
+class Monitor_Local:
+ def __init__(self, monitorName):
+ self.monitorName = monitorName
+ self.record = False
- if ConfigData['UseSpecified_Passthrough_AudioInput'] is True and ConfigData['UseSpecified_AudioOutput'] is True: sd.default.device = (input_device_name, output_device_name)
- elif ConfigData['UseSpecified_Passthrough_AudioInput'] is True and ConfigData['UseSpecified_AudioOutput'] is False: Nope = True
- elif ConfigData['UseSpecified_Passthrough_AudioInput'] is False and ConfigData['UseSpecified_AudioOutput'] is True: Nope = True
- elif ConfigData['UseSpecified_Passthrough_AudioInput'] is False and ConfigData['UseSpecified_AudioOutput'] is False: pass
- else: pass
+ def recordAUDIO(self, SAME):
+ OutputFile = f"{Tmp_Folder}/{self.monitorName}-audio.wav"
+ try: os.remove(OutputFile)
+ except: pass
+ while QEinterrupt() is False:
+ sd.default.reset()
+ samplerate = 8000
+ q = queue.Queue()
+
+ def callback(indata, frames, time, status):
+ if status: print(status, file=sys.stderr)
+ q.put(indata.copy())
+
+ with sf.SoundFile(OutputFile, mode='x', samplerate=samplerate,channels=2) as file:
+ with sd.InputStream(samplerate=samplerate,channels=2,callback=callback):
+ print(f"[{self.monitorName}] Recording!")
+ last_check_time = time.time()
+ while QEinterrupt() is False:
+ file.write(q.get())
+ current_time = time.time()
+ if self.record is False or current_time - last_check_time > 120:
+ file.close()
+ print(f"[{self.monitorName}] Stopped Recording Thread")
+ RemoveEOMpATTN(OutputFile)
+ CreateSAMEmonitorXML(SAME, OutputFile, self.monitorName)
+ UpdateStatus(self.monitorName, f"Alert sent.")
+ print(f"[{self.monitorName}] Alert Sent!")
+ exit()
+ exit()
- samplerate = 48000 # Sample rate in Hz
- blocksize = 1024 # Number of frames per block
+ def DecodeDev(self):
+ while QEinterrupt() is False:
+ try:
+ platform = GetPlatform()
+ last = None
+ if platform == "win": self.source_process = subprocess.Popen(["multimon-ng-WIN32/multimon-ng.exe", "-a", "EAS", "-q"], stdout=subprocess.PIPE)
+ else: self.source_process = subprocess.Popen(["multimon-ng", "-a", "EAS", "-q"], stdout=subprocess.PIPE)
+ UpdateStatus(self.monitorName, f"Ready For Alerts.")
+ print(f"[{self.monitorName}] Ready For Alerts...\n")
+
+ while QEinterrupt() is False:
+ line = self.source_process.stdout.readline().decode("utf-8")
+ if QEinterrupt() is True: break
+ decode = line.replace("b'EAS: ", "").replace("\n'", "").replace("'bEnabled Demodulators: EAS", "").replace('EAS: ', '').replace('EAS: ', '').replace('Enabled demodulators: EAS', '')
+ if "ZCZC-" in decode or "NNNN" in decode: print(f"[{self.monitorName}] Decoder: {decode}")
+
+ if 'ZCZC-' in str(line):
+ if ZCZC_test(decode) == True:
+ SAME = decode.replace("\n", "")
+ UpdateStatus(self.monitorName, f"Receiving alert...")
+ print(f"[{self.monitorName}] ZCZC Check OK")
+ with open(Config_File, "r") as JCfile: config = JCfile.read()
+ ConfigData = json.loads(config)
+ dateNow = datetime.now().strftime("%B %d, %Y at %H:%M:%S")
+ Logger(ConfigData).SendLog("Emergency Alert Received", f"Receipt: Received on {dateNow} from {self.monitorName}", SAME)
+ self.record = True
+ RecordThread = threading.Thread(target = self.recordAUDIO, args=(decode,))
+ RecordThread.start()
+ else:
+ print(f"[{self.monitorName}] WARNING: ZCZC Check FAILED!")
+ line = "NNNN"
+
+ elif 'NNNN' not in str(last):
+ if 'NNNN' in str(line):
+ self.record = False
+ try: RecordThread.join()
+ except: pass
+ UpdateStatus(self.monitorName, f"Ready For Alerts.")
+ last = line
+ except Exception as e:
+ UpdateStatus(self.monitorName, f"Failure")
+ print(f"[{self.monitorName}] Monitor failure.", e)
+ time.sleep(5)
+ exit()
- if Nope is True:
- print("In order to use pass-through, you can only have both input and output selected, or both input and outputs at default.")
- else:
- with sd.Stream(
- samplerate=samplerate,
- blocksize=blocksize,
- channels=2, # Stereo
- callback=audio_callback
- ) as stream:
- while not stopPassthrough.is_set(): stopPassthrough.wait(0.1) # Wait for 100 ms
- print("Stopping pass-through.")
-
-def Relay():
- PassthroughThread = None
- while True:
- with open("config.json", "r") as JCfile: config = JCfile.read()
- ConfigData = json.loads(config)
+ def start(self):
+ try:
+ decodeThread = threading.Thread(target=self.DecodeDev)
+ decodeThread.daemon = True
+ decodeThread.start()
+ while QEinterrupt() is False: time.sleep(1) # keep-alive
+ self.source_process.terminate()
+ exit()
+ except:
+ print(f"[{self.monitorName}] Monitor failure.")
+ UpdateStatus(self.monitorName, f"Failure.")
+
+class AIOMG:
+ # A.I.O.M.G: Alert Image Or Map Generator
+ def __init__(self) -> None:
+ self.ImageOutput = f"{Tmp_Folder}/alertImage.png"
+
+ def overlay_polygon(self, map_object, lats, lons, label='', color='red'):
+ x, y = map_object(lons, lats)
+ map_object.plot(x, y, marker=None, color=color, linewidth=2, linestyle='-', label=label)
+
+ def fill_polygon(self, map_object, lats, lons, color='red', alpha=0.5):
+ x, y = map_object(lons, lats)
+ polygon = Polygon(list(zip(x, y)), facecolor=color, alpha=alpha)
+ map_object.ax.add_patch(polygon)
+
+ def calculate_bounding_box(self, coordinates):
+ min_lat = min(lat for lat, _ in coordinates)
+ max_lat = max(lat for lat, _ in coordinates)
+ min_lon = min(lon for _, lon in coordinates)
+ max_lon = max(lon for _, lon in coordinates)
+ return min_lat, max_lat, min_lon, max_lon
+
+ def GenerateMapImage(self, InfoXML, PolyColor="#FF0000"):
+ matplotlib.use('Agg')
+ if "#" not in PolyColor: PolyColor = "#" + PolyColor
+ if len(PolyColor) > 7: PolyColor = "#FF0000"
+ for char in PolyColor:
+ if 'G' <= char <= 'Z' or 'g' <= char <= 'z': PolyColor = "#FF0000"
+
+ try: HEADLINE = re.search(r'\s*(.*?)\s*', InfoXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1) # Get alert title
+ except: HEADLINE = "Alert region"
+ AllCoords = re.findall(r'\s*(.*?)\s*', InfoXML, re.MULTILINE | re.IGNORECASE | re.DOTALL) # Get all polygons
- if ConfigData['EnablePassThru'] is True:
- if PassthroughThread is None or not PassthroughThread.is_alive():
- stopPassthrough.clear()
- PassthroughThread = threading.Thread(target=passthrough, args=(ConfigData,))
- PassthroughThread.start()
-
- Clear()
- print(f"Last refreshed: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
- UpdateStatus("Relay", f"Waiting for alert...")
- ResultFileName = Check.watchNotify("./XMLqueue", "./XMLhistory")
- print(f"Captured: {ResultFileName}")
+ # Generate map
+ coordinates_string = ""
+ for i in AllCoords:
+ coordinates_string = coordinates_string + f" {i}"
+ polygon_coordinates = [list(map(float, item.split(','))) for item in coordinates_string.split()]
+ min_lat, max_lat, min_lon, max_lon = self.calculate_bounding_box(polygon_coordinates)
+ lat_center = (min_lat + max_lat) / 2
+ lon_center = (min_lon + max_lon) / 2
+ lat_range = max_lat - min_lat
+ lon_range = max_lon - min_lon
+
+ if lat_range > lon_range: lon_range = lat_range
+ else: lat_range = lon_range
+
+ fig = plt.figure(figsize=(10, 10))
+ # For outlined polygon
+ #world_map = Basemap(projection='mill', lat_1=-60, lat_2=90, lon_0=lon_center, llcrnrlat=lat_center - 1.1 * lat_range, urcrnrlat=lat_center + 1.1 * lat_range, llcrnrlon=lon_center - 1.1 * lon_range, urcrnrlon=lon_center + 1.1 * lon_range, resolution='i')
+ ax = fig.add_subplot(111)
+ #world_map = Basemap(ax=ax, projection='mill', lat_1=-60, lat_2=90, lon_0=lon_center, llcrnrlat=lat_center - 1.1 * lat_range, urcrnrlat=lat_center + 1.1 * lat_range, llcrnrlon=lon_center - 1.1 * lon_range, urcrnrlon=lon_center + 1.1 * lon_range, resolution='i')
+ world_map = Basemap( ax=ax, projection='cyl', lon_0=lon_center, llcrnrlat=lat_center - 1.1 * lat_range, urcrnrlat=lat_center + 1.1 * lat_range, llcrnrlon=lon_center - 1.1 * lon_range, urcrnrlon=lon_center + 1.1 * lon_range, resolution='i' )
+ world_map.drawcoastlines()
+ world_map.drawcountries()
+ world_map.drawcounties()
+ world_map.drawstates()
+ world_map.fillcontinents(color='#00AA44', lake_color='#002255')
+ world_map.drawmapboundary(fill_color='#002255')
+
+ for i in AllCoords:
+ i = [list(map(float, item.split(','))) for item in i.split()]
+ lats, lons = zip(*i)
+ self.fill_polygon(world_map, lats, lons, color=PolyColor, alpha=0.5)
+ self.overlay_polygon(world_map, lats, lons, label=HEADLINE, color=PolyColor) # For outlined polygon
+ ax.set_aspect('equal')
+ legend_patch = Line2D([0], [0], marker='o', color='w', markerfacecolor=PolyColor, markersize=10, label=HEADLINE)
+ plt.legend(handles=[legend_patch], loc='upper right')
+ #plt.legend(loc='upper right') # For outlined polygon
+ #plt.show() #For testing, to show the map in a window
+ fig.savefig(self.ImageOutput, bbox_inches='tight', pad_inches=0.0, dpi=70)
+
+ def ConvertImageFormat(self, inputAudio, outputAudio):
+ result = subprocess.run(["ffmpeg", "-y", "-i", inputAudio, "-vf", "scale=-1:450", outputAudio], capture_output=True, text=True)
+ if result.returncode == 0: print(f"{inputAudio} --> {outputAudio} ... Conversion successful!")
+ else: print(f"{inputAudio} --> {outputAudio} ... Conversion failed: {result.stderr}")
+
+ def GrabImage(self, InfoXML):
+ resources = re.findall(r'\s*(.*?)\s*', InfoXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ if "image/jpeg" in str(resources): pass
+ elif "image/png" in str(resources): pass
+ else: return False
+
try:
- shutil.move(f"./XMLqueue/{ResultFileName}", f"./relay.xml")
- file = open("relay.xml", "r", encoding='utf-8')
- RelayXML = file.read()
- file.close()
-
- if "NAADS-Heartbeat" in RelayXML:
- print("\n\n...HEARTBEAT DETECTED...")
- References = re.search(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- Check.Heartbeat(References, "XMLqueue", "XMLhistory")
-
- elif "SAME" in RelayXML:
- UpdateStatus("Relay", f"Alert detected.")
- print("\n\n...NEW ALERT DETECTED - SAME MONITOR...")
- shutil.copy(f"./relay.xml", str(f"./XMLhistory/{ResultFileName}"))
- Callsign = ConfigData['SAME_callsign']
- print(f"Hello {Callsign}")
- Decoded = DecodeIntMonitor(RelayXML, ConfigData)
- if Decoded == "exception": print("No relay: An exception was raised when trying to decode the SAME alert's XML.")
+ for ImageResource in resources:
+ if "" in ImageResource:
+ ImageLink = bytes(re.search(r'\s*(.*?)\s*', ImageResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1), 'utf-8')
+ ImageType = re.search(r'\s*(.*?)\s*', ImageResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Decode = 1
else:
- if Decoded is False: print("No relay: No filter match.")
- else:
- if Check.DuplicateSAME(Decoded[0]) is True: print("No relay: duplicate SAME header detected from a previous relay."); continue
- alertColor = GetAlertLevelColor(ConfigData, Decoded[0])
- Plugins_Run("beforeRelay", Decoded[0], Decoded[1], None)
-
- if ConfigData["ProduceImages"] is True: AIOMG.OutputAlertImage(Fallback=True)
-
- try:
- CGEN_Dict = {
- "color": alertColor,
- "headline": "EMERGENCY ALERT SYSTEM",
- "text": Decoded[1],
- "alertStat": True
- }
- #with open("./alert.txt", "w") as f: f.write(Decoded[1])
- with open("AlertText.json", 'w') as json_file: json.dump(CGEN_Dict, json_file, indent=2)
- except: pass
-
- try:
- logge = Log(ConfigData)
- logge.SendLog("Emergency Alert Transmission", Decoded[1], Decoded[0], "TX", alertColor)
- except: pass
-
- PlayAlert = Playout(ConfigData, False)
-
- try:
- stopPassthrough.set()
- PassthroughThread.join()
- print("Pass-through stopped.")
- except: pass
-
- if ConfigData[f'PlayoutNoSAME'] is True:
- PlayAlert.AlertIntro()
- PlayAlert.AlertAttn()
- PlayAlert.AlertAudio()
- PlayAlert.AlertOutro()
- else:
- PlayAlert.AlertIntro()
- PlayAlert.AlertSAME()
- PlayAlert.AlertAttn()
- PlayAlert.AlertAudio()
- PlayAlert.AlertEOM()
- PlayAlert.AlertOutro()
-
- Plugins_Run("afterRelay", Decoded[0], Decoded[1], None)
-
- try:
- if ConfigData["CGEN_ClearAfterAlert"] is True:
- CGEN_Dict = {
- "color": "000000",
- "headline": "Emergency Alert Details",
- "text": ""
- }
- #with open("./alert.txt", "w") as f: f.write(Decoded[1])
- with open("AlertText.json", 'w') as json_file: json.dump(CGEN_Dict, json_file, indent=2)
- except: pass
-
- else:
- UpdateStatus("Relay", f"Alert detected.")
- print("\n\n...NEW ALERT DETECTED...")
- shutil.copy(f"./relay.xml", str(f"./XMLhistory/{ResultFileName}"))
- Callsign = ConfigData['SAME_callsign']
- print(f"Hello {Callsign}")
- Sent = re.search(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- Status = re.search(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- MessageType = re.search(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ ImageLink = re.search(r'\s*(.*?)\s*', ImageResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ ImageType = re.search(r'\s*(.*?)\s*', ImageResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Decode = 0
- if ConfigData['Attn_BasedOnCountry'] is True: CODE = GetXML_CODE(RelayXML)
- else: CODE = False
- PlayAlert = Playout(ConfigData, CODE)
-
- RelayXML = re.findall(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- InfoProc = 0
-
- AlertIntro_HasBeenPlayed = False
- Alert_Playout = False
+ if ImageType == "image/jpeg":
+ GetMedia(ImageLink,f"{Tmp_Folder}/PreImage.jpg",Decode)
+ self.ConvertImageFormat(f"{Tmp_Folder}/PreImage.jpg", self.ImageOutput)
+ os.remove(f"{Tmp_Folder}/PreImage.jpg")
+ ImageGet = True
+ elif ImageType == "image/png":
+ GetMedia(ImageLink,self.ImageOutput,Decode)
+ ImageGet = True
+
+ if ImageGet is True: return True
+ else: return False
+ except: return False
- for InfoEN in RelayXML:
- InfoProc = InfoProc + 1
- print(f"\n...Processing : {InfoProc}...\n")
- InfoEN = f"{InfoEN}"
+ def OutputAlertImage(self, InfoXML=None, InputColor="#FF0000", Fallback=False):
+ if Fallback is True or InfoXML is None: shutil.copy(f"{Assets_Folder}/fallbackImage.png", self.ImageOutput)
+ else:
+ try:
+ print("[AIOMG]: Generating image...")
+ if self.GrabImage(InfoXML) is True: pass
+ else: self.GenerateMapImage(InfoXML, InputColor)
+ print("[AIOMG]: Image generation finished")
+ except Exception as e:
+ print("[AIOMG]: Image generation failure: ", e)
+ shutil.copy(f"{Assets_Folder}/fallbackImage.png", self.ImageOutput)
- try:
- if "en" in re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1): lang = "en"
- elif "fr" in re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1): lang = "fr"
- elif "es" in re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1): lang = "es"
- else:
- print("Language not supported.")
- continue
- if ConfigData[f'relay_{lang}'] is False: print("Not relaying:", lang); continue
- except:
- print("Language check failed.")
- continue
+class Generate:
+ def __init__(self, ConfigData, InfoXML, MessageType=None, InputSentISO=None):
+ self.Config = ConfigData
+ self.AlertInfo = InfoXML
+ self.MessageType = MessageType
+ self.InputSentISO = InputSentISO
+ Language = re.search(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ if "en-ca" in Language or "en-us" in Language or "en" in Language: self.Language = "EN"
+ elif "fr-ca" in Language or "fr" in Language: self.Language = "FR"
+ else: self.Language = "EN"
+
+ def BroadcastText(self):
+ try: BroadcastText = re.search(r'layer:SOREM:1.0:Broadcast_Text\s*\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace('\n',' ').replace(' ',' ')
+ except:
+ try: MsgPrefix = MsgTypeConv[self.Language][self.MessageType]
+ except: MsgPrefix = "has issued"
+
+ if self.InputSentISO is not None:
+ Sent = datetime.fromisoformat(datetime.fromisoformat(self.InputSentISO).astimezone(timezone.utc).isoformat())
+ Sent = Sent.astimezone()
+ if self.Language == "FR": Sent = Sent.strftime("À %Hh%M. ")
+ else: Sent = Sent.strftime("At %H:%M %Z, %B %d, %Y. ")
+ else: Sent = ""
+
+ try: EventType = re.search(r'layer:EC-MSC-SMC:1.0:Alert_Name\s*\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ except:
+ if self.Language == "FR":
+ EventType = re.search(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ EventType = f"alerte {EventType}"
+ else:
+ EventType = re.search(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ if EventSuffix(EventType) is True: pass
+ else: EventType = f"{EventType} alert"
+
+ try:
+ Coverage = re.search(r'layer:EC-MSC-SMC:1.0:Alert_Coverage\s*\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ if self.Language == "FR": Coverage = f"en {Coverage} pour:"
+ else: Coverage = f"in {Coverage} for:"
+ except:
+ if self.Language == "FR": Coverage = "pour:"
+ else: Coverage = "for:"
+
+ try:
+ AreaDesc = re.findall(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ AreaDesc = ', '.join(AreaDesc) + '.'
+ except: AreaDesc = "."
+ try: SenderName = re.search(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ except: SenderName = "an alert issuer"
+ try: Description = re.search(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace('\n', ' ')
+ except: Description = ""
+ try: Instruction = re.search(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace('\n', ' ')
+ except: Instruction = ""
+
+ if self.Language == "FR": BroadcastText = f"{Sent}{SenderName} {MsgPrefix} une {EventType} {Coverage} {AreaDesc} {Description} {Instruction}".replace('###','').replace(' ',' ').replace('..','.')
+ else: BroadcastText = f"{Sent}{SenderName} {MsgPrefix} a {EventType} {Coverage} {AreaDesc} {Description} {Instruction}".replace('###','').replace(' ',' ').replace('..','.')
+
+ return BroadcastText
- try:
- current_time = datetime.now(timezone.utc)
- Expires = re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- Expires = datetime.fromisoformat(datetime.fromisoformat(Expires).astimezone(timezone.utc).isoformat())
- if current_time > Expires:
- print("Alert expired, will not relay.")
- continue
- except: pass
+ def BroadcastAudio(self):
+ resources = re.findall(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ if "audio/mpeg" in str(resources): pass
+ elif "audio/x-ms-wma" in str(resources): pass
+ elif "audio/wave" in str(resources): pass
+ elif "audio/wav" in str(resources): pass
+ elif "audio/x-ipaws-audio-mp3" in str(resources): pass
+ else: raise Exception("Generate TTS instead")
+
+ for BroadcastAudioResource in resources:
+ if "" in BroadcastAudioResource:
+ AudioLink = bytes(re.search(r'\s*(.*?)\s*', BroadcastAudioResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1), 'utf-8')
+ AudioType = re.search(r'\s*(.*?)\s*', BroadcastAudioResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Decode = 1
+ else:
+ AudioLink = re.search(r'\s*(.*?)\s*', BroadcastAudioResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ AudioType = re.search(r'\s*(.*?)\s*', BroadcastAudioResource, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Decode = 0
+
+ AudioGet = False
+ if AudioType == "audio/mpeg":
+ GetMedia(AudioLink,f"{Tmp_Folder}/preaudio.mp3",Decode)
+ ConvertAudioFormat(f"{Tmp_Folder}/preaudio.mp3", f"{Tmp_Folder}/preaudio.wav")
+ os.remove(f"{Tmp_Folder}/preaudio.mp3")
+ AudioGet = True
+
+ elif AudioType == "audio/x-ms-wma":
+ GetMedia(AudioLink,f"{Tmp_Folder}/preaudio.wma",Decode)
+ ConvertAudioFormat(f"{Tmp_Folder}/preaudio.wma", f"{Tmp_Folder}/preaudio.wav")
+ os.remove(f"{Tmp_Folder}/preaudio.wma")
+ AudioGet = True
+
+ elif AudioType == "audio/wave":
+ GetMedia(AudioLink,f"{Tmp_Folder}/preaudio.wav",Decode)
+ AudioGet = True
+
+ elif AudioType == "audio/wav":
+ GetMedia(AudioLink,f"{Tmp_Folder}/preaudio.wav",Decode)
+ AudioGet = True
+
+ elif AudioType == "audio/x-ipaws-audio-mp3":
+ GetMedia(AudioLink,f"{Tmp_Folder}/preaudio.mp3",Decode)
+ ConvertAudioFormat(f"{Tmp_Folder}/preaudio.mp3", f"{Tmp_Folder}/preaudio.wav")
+ os.remove(f"{Tmp_Folder}/preaudio.mp3")
+ AudioGet = True
+ else: AudioGet = False
+
+ if AudioGet is True:
+ LoudenAudio(f"{Tmp_Folder}/preaudio.wav", "./assets/audio.wav")
+ os.remove(f"{Tmp_Folder}/preaudio.wav")
+
+ def HeaderSAME(self):
+ CALLSIGN = self.Config['SAME_callsign']
+ if len(CALLSIGN) > 8: CALLSIGN = "QUANTUM0"; print("[GENERATE]: Your callsign is too long!")
+ elif len(CALLSIGN) < 8: CALLSIGN = "QUANTUM0"; print("[GENERATE]: Your callsign is too short!")
+ elif "-" in CALLSIGN: CALLSIGN = "QUANTUM0"; print("[GENERATE]: Your callsign contains an invalid symbol!")
+
+ try: ORG = re.search(r'\s*EAS-ORG\s*\s*(.*?)\s*\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ except:
+ try: ORG = CapCatToSameOrg[re.search(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)]
+ except: ORG = "CIV"
+
+ try:
+ EVE = re.search(r'\s*SAME\s*\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ if EVE is None or EVE == "": EVE = "CEM"
+ except:
+ try:
+ EVE = re.search(r'\s*profile:CAP-CP:Event:0.4\s*\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ EVE = CapEventToSameEvent[EVE]
+ except: EVE = "CEM"
- Urgency = re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- Severity = re.search(r'\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- try: BroadcastImmediately = re.search(r'layer:SOREM:1.0:Broadcast_Immediately\s*\s*(.*?)\s*', InfoEN, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- except: BroadcastImmediately = "No"
+ try: Effective = datetime.fromisoformat(datetime.fromisoformat(re.search(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)).astimezone(timezone.utc).isoformat()).strftime("%j%H%M")
+ except: Effective = datetime.now().astimezone(timezone.utc).strftime("%j%H%M")
+
+ try:
+ NowTime = datetime.now(timezone.utc)
+ NowTime = NowTime.replace(microsecond=0).isoformat()
+ NowTime = NowTime[:-6]
+ NowTime = datetime.fromisoformat(NowTime)
+ ExpireTime = re.search(r'\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ ExpireTime = datetime.fromisoformat(ExpireTime).astimezone(timezone.utc)
+ ExpireTime = ExpireTime.isoformat()
+ ExpireTime = ExpireTime[:-6]
+ ExpireTime = datetime.fromisoformat(ExpireTime)
+ Purge = ExpireTime - NowTime
+ hours, remainder = divmod(Purge.seconds, 3600)
+ minutes, _ = divmod(remainder, 60)
+ Purge = "{:02}{:02}".format(hours, minutes)
+ except: Purge = "0600"
- if Check.Config(InfoEN, ConfigData, Status, MessageType, Severity, Urgency, BroadcastImmediately) is False: print("No relay: Config filters reject.")
- else:
- print("Generating text products...")
- Gen = Generate(InfoEN, Sent, MessageType, Callsign)
- GeneratedHeader = Gen.SAMEheader()
- print("generated header:", GeneratedHeader)
- BroadcastText = Gen.BroadcastText(lang)
- if ConfigData[f'PlayoutNoSAME'] is False:
- if Check.MatchCLC(ConfigData, GeneratedHeader) is False: print(f"No relay: CLC in generated header ({GeneratedHeader}) did not match config CLC ({ConfigData['AllowedLocations_CLC']})"); continue
- if Check.CheckEventCodeSAME(ConfigData, GeneratedHeader) is False: print("No relay: Config data, SAME event code blocked for CAP."); continue
- if AlertIntro_HasBeenPlayed is True:
- if Check.DuplicateSAME(GeneratedHeader) is True: print("No relay: duplicate SAME header detected from a previous relay."); continue
- alertColor = GetAlertLevelColor(ConfigData, GeneratedHeader)
- else:
- alertColor = GetAlertLevelColor(ConfigData)
-
- if ConfigData["ProduceImages"] is True: AIOMG.OutputAlertImage(InfoEN, alertColor)
+ if "layer:EC-MSC-SMC:1.1:Newly_Active_Areas" in str(self.AlertInfo):
+ try: CLC = re.search(r'layer:EC-MSC-SMC:1.1:Newly_Active_Areas\s*\s*(.*?)\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace(',','-')
+ except: CLC = GeoToCLC(self.AlertInfo)
+ else:
+ CLC = re.findall(r'\s*SAME\s*\s*(.*?)\s*\s*', self.AlertInfo, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ CLC = '-'.join(CLC)
+ if str(CLC) == "": CLC = GeoToCLC(self.AlertInfo)
+ if CLC == "": CLC = "000000"
- print("Generating audio products...")
- logge = Log(ConfigData)
- Gen.Audio(BroadcastText, lang, ConfigData)
- Alert_Playout = True
- Plugins_Run("beforeRelay", GeneratedHeader, BroadcastText, InfoEN)
-
- try:
- if lang == "fr": CGEN_headline = "ALERTE D'URGENCE"
- else: CGEN_headline = "EMERGENCY ALERT"
- CGEN_Dict = {
- "color": alertColor,
- "headline": CGEN_headline,
- "text": BroadcastText,
- "alertStat": True
- }
- #with open("./alert.txt", "w") as f: f.write(Decoded[1])
- with open("AlertText.json", 'w') as json_file: json.dump(CGEN_Dict, json_file, indent=2)
- except: pass
+ GeneratedHeader = f"ZCZC-{ORG}-{EVE}-{CLC}+{Purge}-{Effective}-{CALLSIGN}-"
+ GeneratedHeader = GeneratedHeader.replace("\n", "")
+ return GeneratedHeader
- if ConfigData[f'PlayoutNoSAME'] is False:
- print(f"\n...NEW ALERT TO RELAY...\nSAME: {GeneratedHeader}, \nBroadcast Text: {BroadcastText}\nSending alert...")
- Gen.AudioSAME(GeneratedHeader)
- try:
- if lang == "fr": logge.SendLog("ALERTE D'URGENCE", BroadcastText, GeneratedHeader, "TX", alertColor)
- else: logge.SendLog("EMERGENCY ALERT", BroadcastText, GeneratedHeader, "TX", alertColor)
- except: pass
- try:
- stopPassthrough.set()
- PassthroughThread.join()
- print("Passthrough stopped.")
- except: pass
-
- PlayAlert.AlertIntro()
- PlayAlert.AlertSAME()
- PlayAlert.AlertAttn()
- PlayAlert.AlertAudio()
- PlayAlert.AlertEOM()
- PlayAlert.AlertOutro()
- Plugins_Run("afterRelay", GeneratedHeader, BroadcastText, InfoEN)
- else:
- print(f"\n...NEW ALERT TO RELAY...\nSAME Header is disabled. \nBroadcast Text: {BroadcastText}\nSending alert...")
- try:
- if lang == "fr": logge.SendLog("ALERTE D'URGENCE", BroadcastText, "", "TX", alertColor)
- else: logge.SendLog("EMERGENCY ALERT", BroadcastText, "", "TX", alertColor)
- except: pass
- try:
- stopPassthrough.set()
- PassthroughThread.join()
- print("Passthrough stopped.")
- except: pass
+ def GenerateTextContent(self):
+ BROADCASTTEXT = self.BroadcastText()
+ if self.Config["PlayoutNoSAME"] is False: SAME = self.HeaderSAME()
+ else: SAME = None
+ if self.Language == "FR": HEADLINE = "ALERTE D'URGENCE"
+ else: HEADLINE = "EMERGENCY ALERT"
+ return { "SAME":SAME, "HEADLINE":HEADLINE, "TEXT":BROADCASTTEXT}
+
+ def GenerateAudioVisualContent(self, TextContents, AlertColor="#FF0000"):
+ if self.Config['PlayoutNoSAME'] is False:
+ print("[GENERATE]: Generating S.A.M.E header...")
+ SAMEheader = EASGen.genEAS(header=TextContents['SAME'], attentionTone=False, endOfMessage=False)
+ SAMEeom = EASGen.genEAS(header="NNNN", attentionTone=False, endOfMessage=False)
+ EASGen.export_wav(f"{Assets_Folder}/same.wav", SAMEheader)
+ EASGen.export_wav(f"{Assets_Folder}/eom.wav", SAMEeom)
+
+ try: self.BroadcastAudio()
+ except: GenerateTTS(f"{Assets_Folder}/audio.wav", self.Config, TextContents['TEXT'], self.Language)
- if AlertIntro_HasBeenPlayed is False:
- PlayAlert.AlertIntro()
- PlayAlert.AlertAttn()
- AlertIntro_HasBeenPlayed = True
+ if self.Config['Force120'] is True:
+ try: TrimAudio(f"{Assets_Folder}/audio.wav")
+ except: print("[GENERATE]: Failed to trim broadcast audio.")
+
+ if self.Config["ProduceImages"] is True: AIOMG().OutputAlertImage(self.AlertInfo, AlertColor)
- PlayAlert.AlertAudio()
+class Playout:
+ def __init__(self, ConfigData, AlertRegion=None):
+ self.ZCZC_audio = Assets_Folder + "/same.wav"
+ self.EOM_audio = Assets_Folder + "/eom.wav"
+ self.broadcast_audio = Assets_Folder + "/audio.wav"
+ if ConfigData['Attn_BasedOnCountry'] is True:
+ if AlertRegion == "CANADA": self.attention_audio = f"{Assets_Folder}/AttnCAN.wav"
+ elif AlertRegion == "USA": self.attention_audio = f"{Assets_Folder}/AttnEBS.wav"
+ else: self.attention_audio = f"{Assets_Folder}/{ConfigData['AttentionTone']}"
+ else: self.attention_audio = f"{Assets_Folder}/{ConfigData['AttentionTone']}"
+ self.ConfigData = ConfigData
+ print("[Playout]: Ready for playout!")
+
+ def playout(self, inputFile):
+ UseSpecDevice = self.ConfigData['UseSpecified_AudioOutput']
+ SpecDevice = self.ConfigData['Specified_AudioOutput']
+ time.sleep(0.5)
+ if UseSpecDevice is True:
+ sd.default.reset()
+ sd.default.device = SpecDevice
+ sampling_rate, audio_data = wavfile.read(inputFile)
+ sd.play(audio_data, samplerate=sampling_rate)
+ sd.wait()
+
+ def SAME(self):
+ print("[Playout]: Playing S.A.M.E header")
+ try: self.playout(self.ZCZC_audio)
+ except Exception as e: print("[Playout]: Can't play SAME header! ", e)
+
+ def EOM(self):
+ print("[Playout]: Playing EOM header")
+ try: self.playout(self.EOM_audio)
+ except Exception as e: print("[Playout]: Can't play EOM! ", e)
+
+ def ATTN(self):
+ print("[Playout]: Playing attention tone: ", self.attention_audio)
+ try: self.playout(self.attention_audio)
+ except Exception as e: print("[Playout]: Can't play attention tone! ", e)
+
+ def AUDIO(self):
+ print("[Playout]: Playing broadcast audio")
+ try: self.playout(self.broadcast_audio)
+ except Exception as e: print("[Playout]: Can't play broadcast audio! ", e)
+
+ def LEAD_IN(self):
+ try: self.playout(Assets_Folder + "/LeadIn.wav")
+ except: pass
- if Alert_Playout is True:
- PlayAlert.AlertOutro()
+ def LEAD_OUT(self):
+ try: self.playout(Assets_Folder + "/LeadOut.wav")
+ except: pass
- if ConfigData["PlayoutNoSAME"] is True:
- Plugins_Run("afterRelay", GeneratedHeader, BroadcastText, InfoEN)
+class Logger:
+ def __init__(self, ConfigData):
+ self.ConfigData = ConfigData
+
+ def SendDiscord(self, Title, Description, ZCZC, type="", HookColor=None):
+ Wauthorname = self.ConfigData['webhook_author_name']
+ Wauthorurl = self.ConfigData['webhook_author_URL']
+ Wiconurl = self.ConfigData['webhook_author_iconURL']
+ Wurl = self.ConfigData['webhook_URL']
+ Description = Description.replace("/n", " ")
+ if len(Description) > 2000: Description = f"{Description[:2000]}..."
+ if len(ZCZC) > 1000: ZCZC = f"{ZCZC[:1000]}..."
+ webhook = DiscordWebhook(url=Wurl, rate_limit_retry=True)
+
+ # Send audio and image (if enabled)
+ if type == "TX":
+ if self.ConfigData['webhook_sendAudio'] is True:
+ try:
+ subprocess.run(["ffmpeg", "-y", "-i", f"{Assets_Folder}/audio.wav", "-map", "0:a:0", "-b:a", "64k", f"{Tmp_Folder}/DiskAudio.mp3"], capture_output=True, text=True)
+ with open(f"{Tmp_Folder}/DiskAudio.mp3", "rb") as f: webhook.add_file(file=f.read(), filename="audio.mp3")
+ except: pass
- try:
- if ConfigData["CGEN_ClearAfterAlert"] is True:
- CGEN_Dict = {
- "color": "000000",
- "headline": "Emergency Alert Details",
- "text": "",
- "alertStat": False
- }
- #with open("./alert.txt", "w") as f: f.write(Decoded[1])
- with open("AlertText.json", 'w') as json_file: json.dump(CGEN_Dict, json_file, indent=2)
- except: pass
+ if self.ConfigData["ProduceImages"] is True:
+ try:
+ with open(f"{Assets_Folder}/alertImage.png", "rb") as f: webhook.add_file(file=f.read(), filename="image.png")
+ except: pass
- except Exception as e:
- UpdateStatus("Relay", f"Relay failure.")
- print("[WARNING] Exception in relay! ", e)
- time.sleep(5)
+ if HookColor is None or HookColor == "": Wcolor = "ffffff"
+ else: Wcolor = HookColor
+
+ embed = DiscordEmbed(title=Title, description=Description, color=Wcolor,)
+ if ZCZC == "" or ZCZC is None: pass
+ else:
+ ZCZC = f"```{ZCZC}```"
+ embed.add_embed_field(name="", value=ZCZC, inline=False)
+ embed.set_author(name=Wauthorname, url=Wauthorurl, icon_url=Wiconurl)
+ embed.set_footer(text="Powered by QuantumENDEC")
+ embed.set_timestamp()
+ webhook.add_embed(embed)
+ webhook.execute()
+
+ def SendEmail(self, Title, Description, ZCZC, HookColor=None):
+ Description = Description.replace("\n", " ")
+ ZCZC = ZCZC.replace("\n", "")
+ if len(ZCZC) > 1: ZCZC = f"S.A.M.E: {ZCZC}"
+ if HookColor is None or HookColor == "": HookColor = "101010"
+ date = datetime.now()
+ date = date.astimezone()
+ date = date.strftime("Log: %H:%M%z %d/%m/%Y")
+
+ style = """
+
+ """
+
+ body = f"""
+
+
+
+
+
+ QuantumENDEC Email Log
+ {style}
+
+
+
+
+ {Title}
+ {Description}
+ {ZCZC}
+
+
+
+
+ """
+
+ message = MIMEMultipart()
+ message["From"] = self.ConfigData["email_user"]
+ message["Subject"] = f"QuantumENDEC: {Title} - {date}"
+ if(type(self.ConfigData["email_sendto"]) == list): message['To'] = ",".join(self.ConfigData["email_sendto"])
+ else: message['To'] = self.ConfigData["email_sendto"]
+
+ if self.ConfigData["FancyHTML"] is True:
+ thing = MIMEText(body, 'html')
+ message.attach(thing)
+ else:
+ basic_text = f"QuantumENDEC... {Title}\n{Description}\n{ZCZC}\n\n{date}"
+ thing = MIMEText(basic_text, 'plain')
+ message.attach(thing)
+
+ mail = smtplib.SMTP(self.ConfigData['email_server'], int(self.ConfigData['email_server_port']))
+ mail.ehlo()
+ mail.starttls()
+ mail.login(self.ConfigData["email_user"], self.ConfigData["email_user_pass"])
+ mail.sendmail(self.ConfigData["email_user"], self.ConfigData["email_sendto"], message.as_string())
+ mail.quit()
+
+ def TxtLog(self, Title, Description, ZCZC):
+ dateNow = datetime.now().strftime("%B %d, %Y %H:%M:%S")
+ if ZCZC == "": log = f"{Title}\n{Description}"
+ else: log = f"{Title}\n{Description}\n{ZCZC}"
+ log = f"\n--- {dateNow} ---\n{log}\n"
+ try:
+ with open(f"{Assets_Folder}/alertlog.txt", "a", encoding='utf-8') as f: f.write(log)
except:
- UpdateStatus("Relay", f"Relay failure.")
- print("[WARNING] General exception in relay!")
- time.sleep(5)
+ with open(f"{Assets_Folder}/alertlog.txt", "w", encoding='utf-8') as f: f.write(log)
-def HTTP_CAP(outputFolder, CAP_URL, instance):
- if CAP_URL is None or CAP_URL == "": UpdateStatus(f"HTTPCAPcapture{instance}", f"HTTP CAP capture {instance} disabled.")
- else:
- print(f"[HTTP Capture]: HTTP CAP Capture active! {CAP_URL}")
- while True:
- try:
- UpdateStatus(f"HTTPCAPcapture{instance}", f"HTTP CAP Capture {instance} is active!")
- ReqCAP = Request(url = f'{CAP_URL}')
- CAP = urlopen(ReqCAP).read()
- CAP = CAP.decode('utf-8')
- CAP = re.findall(r'', CAP, re.MULTILINE | re.IGNORECASE | re.DOTALL)
-
- for alert in CAP:
- alert = f""
- CapturedSent = re.search(r'\s*(.*?)\s*', alert, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_")
- CapturedIdent = re.search(r'\s*(.*?)\s*', alert, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1).replace("-", "_").replace("+", "p").replace(":", "_")
- filename = f"{CapturedSent}I{CapturedIdent}.xml"
- with open(f"{outputFolder}/{filename}", 'w', encoding='utf-8') as file: file.write(alert)
- print(f"[HTTP Capture]: I captured an XML, and saved it to: {outputFolder}/{filename} | From: {CAP_URL}")
- time.sleep(30)
- except Exception as e:
- print("[HTTP Capture] Something went wrong.", e)
- UpdateStatus(f"HTTPCAPcapture{instance}", f"HTTP CAP Capture {instance} error.")
- time.sleep(30)
+ def SendLog(self, Title, Description, ZCZC, type="", HookColor=None):
+ if self.ConfigData['enable_discord_webhook'] is True:
+ print("[Logger]: Sending Discord webhook...")
+ try: self.SendDiscord(Title, Description, ZCZC, type, HookColor)
+ except: print("[Logger]: Discord, failed to log.")
-def NWS_CAP(ATOM_LINK):
- # Goddamnit americans, you have to have every single alert source in their own goddamn way!
- # Why can't you use a centerlized TCP server?!!?!
- print("[NWS CAP Capture]: Activating NWS CAP Capture with: ", ATOM_LINK)
- while True:
- UpdateStatus("NWSCAPcapture", "NWS CAP Capture is active.")
- try:
- HistoryFolder = "XMLhistory"
- req1 = Request(url = ATOM_LINK)
- xml = urlopen(req1).read()
- xml = xml.decode('utf-8')
+ if self.ConfigData['enable_LogToTxt'] is True:
+ print(f"[Logger]: Logging to {Assets_Folder}/alertlog.txt...")
+ try: self.TxtLog(Title, Description, ZCZC)
+ except: print("[Logger]: Text file, failed to log.")
- entries = re.findall(r'\s*(.*?)\s*', xml, re.MULTILINE | re.IGNORECASE | re.DOTALL)
- current_time = datetime.now(timezone.utc)
+ if self.ConfigData['enable_email'] is True:
+ print("[Logger]: Logging to email...")
+ try: self.SendEmail(Title, Description, ZCZC, HookColor)
+ except: print("[Logger]: Email, failed to log,")
- for entry in entries:
- try:
- CAP_LINK = re.search(r'', entry, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- expires = re.search(r'\s*(.*?)\s*', entry, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
- expires = datetime.fromisoformat(expires).astimezone(timezone.utc).isoformat()
- expires = datetime.fromisoformat(expires)
-
- if current_time > expires: pass #print("expired")
- else:
- last_slash_index = CAP_LINK.rfind('/')
- if last_slash_index != -1: filename = CAP_LINK[last_slash_index + 1:]
- else: filename = CAP_LINK
- filename = filename.replace("-", "_").replace("+", "p").replace(":", "_").replace("\n", "")
- filename = filename + ".xml"
- if filename in os.listdir(f"{HistoryFolder}"): pass #print("already downloaded")
- elif filename in os.listdir(f"XMLqueue"): pass #print("already downloaded")
- else:
- # print(filename, expires)
- NWSCAP_REQUEST = Request(url = CAP_LINK)
- NWSCAP_XML = urlopen(NWSCAP_REQUEST).read()
- NWSCAP_XML = NWSCAP_XML.decode('utf-8')
- with open(f"XMLqueue/{filename}", "w") as f: f.write(NWSCAP_XML)
- except: pass
- except Exception as e:
- print("[NWS CAP Capture]: An error occured.", e)
- UpdateStatus("NWSCAPcapture", "An error occured.")
- # To put less strain on the network:
- time.sleep(120)
-
-def CheckFolder(folder_path, Clear):
- def ClearFolder(dir):
- for f in os.listdir(dir): os.remove(os.path.join(dir, f))
- if not os.path.exists(folder_path): os.makedirs(folder_path)
- else:
- if Clear is True: ClearFolder(folder_path)
+ print("[Logger]: Finished logging.")
-def createDefaultConfig():
- NewConfig = {
- "WebserverPort": "8050",
- "WebserverHost": "0.0.0.0",
- "ProduceImages": False,
- "SAME_callsign": "QUANTUM0",
- "CGENcolor_warning": "ff2a2a",
- "CGENcolor_watch": "ffcc00",
- "CGENcolor_advisory": "00aa00",
- "CGEN_ClearAfterAlert": False,
- "UseSpecified_AudioOutput": False,
- "Specified_AudioOutput": "",
- "EnablePassThru": False,
- "UseSpecified_Passthrough_AudioInput": False,
- "Passthrough_AudioInput": "",
- "AttentionTone": "AttnCAN.wav",
- "Attn_BasedOnCountry": False,
- "Force120": False,
- "PlayoutNoSAME": False,
- "relay_en": True,
- "relay_fr": False,
- "UseDefaultVoices": True,
- "TTS_Service": "pyttsx3",
- "VoiceEN": "",
- "VoiceFR": "",
- "FliteVoice_EN": "",
- "FliteVoice_FR": "",
- "APIvoice_Key": "",
- "APIvoice_Region": "",
- "APIvoice_EN": "",
- "APIvoice_FR": "",
- "enable_discord_webhook": False,
- "webhook_author_name": "",
- "webhook_author_URL": "",
- "webhook_author_iconURL": "",
- "webhook_URL": "",
- "enable_email": False,
- "email_server": "",
- "email_server_port" : 587,
- "email_user": "",
- "email_user_pass": "",
- "email_sendto": [],
- "FancyHTML": True,
- "enable_LogToTxt": True,
- "statusTest": True,
- "statusActual": True,
- "messagetypeAlert": True,
- "messagetypeUpdate": True,
- "messagetypeCancel": True,
- "messagetypeTest": True,
- "severityExtreme": True,
- "severitySevere": True,
- "severityModerate": True,
- "severityMinor": True,
- "severityUnknown": True,
- "urgencyImmediate": True,
- "urgencyExpected": True,
- "urgencyFuture": True,
- "urgencyPast": True,
- "urgencyUnknown": True,
- "AllowedLocations_Geocodes": [],
- "AllowedLocations_CLC": [],
- "CAP_SAMEevent_Whitelist": [],
- "CAP_SAMEevent_Blocklist": [],
- "TCP": False,
- "TCP1": "streaming1.naad-adna.pelmorex.com:8080",
- "TCP2": "streaming2.naad-adna.pelmorex.com:8080",
- "HTTP_CAP": False,
- "HTTP_CAP_ADDR": "",
- "Enable_NWSCAP": False,
- "NWSCAP_AtomLink": "https://api.weather.gov/alerts/active.atom",
- "SAMEmonitor": False,
- "SAMEmonitor-ORIGINATOR-filter": [],
- "SAMEmonitor-EVENT-filter": [],
- "SAMEmonitor-FIPS-filter": [],
- "SAME-AudioDevice-Monitor": False,
- "SAME-AudioStream-Monitor1": "",
- "SAME-AudioStream-Monitor2": "",
- "SAME-AudioStream-Monitor3": "",
- "SAME-AudioStream-Monitor4": ""
- }
-
- try:
- with open("config.json", 'w') as json_file: json.dump(NewConfig, json_file, indent=2)
- except: return False
- return True
+def RelayLoop():
+ while QEinterrupt() is False:
+ Clear()
+ with open(Config_File, "r") as JCfile: config = JCfile.read()
+ ConfigData = json.loads(config)
+
+ print(f"[RELAY]: Last refreshed: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
+ UpdateStatus("Relay", f"Waiting for alert...")
+ ResultFileName = WatchNotify(XMLqueue_Folder, XMLhistory_Folder)
+ if QEinterrupt() is True: exit()
-def setup():
- try:
- nothingThing = {
- "nothing":True,
- "alertStat": False
- }
- with open("AlertText.json", 'w') as json_file: json.dump(nothingThing, json_file, indent=2)
- #with open(f"alert.txt", "w") as f: f.write("")
- except: pass
- if os.path.isfile("alertlog.txt") is True: pass
- else:
- with open(f"alertlog.txt", "w", encoding='utf-8') as f: f.write("")
- Clear()
- print(f"\nQuantumENDEC\nVersion: {QEversion}\n\nDeveloped by:\nDell ... ApatheticDELL\nAaron ... secludedfox.com :3\nBunnyTub ... bunnytub.com\n")
- with open("SameHistory.txt", "w") as f: f.write(f"ZXZX-STARTER-\n")
- CheckFolder('stats', True)
- CheckFolder('XMLqueue', True)
- CheckFolder('XMLhistory', True)
- CheckFolder('Audio', False)
- CheckFolder('Audio/tmp', True)
- if os.path.isfile("./config.json") is True: pass
- else:
- print("Can't find config file, creating a default one!")
- if createDefaultConfig() is True: pass
- else: print("Error, failed to create default config file, QuantumENDEC can't run without a config file!"); exit()
- if os.path.isfile("./GeoToCLC.csv") is True: pass
- else: print("GeoToCLC is missing! I can't continue without it."); exit()
- time.sleep(1)
+ print(f"[RELAY]: Captured: {ResultFileName}")
+ shutil.move(f"{XMLqueue_Folder}/{ResultFileName}", f"./relay.xml")
+ with open("./relay.xml", "r", encoding='utf-8') as file: RelayXML = file.read()
+ UpdateStatus("Relay", f"Processing alert...")
+
+ if "NAADS-Heartbeat" in RelayXML:
+ print("[RELAY]: NAADS HEARTBEAT DETECTED")
+ References = re.search(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ Heartbeat(References, XMLqueue_Folder, XMLhistory_Folder)
+ else:
+ status = re.search(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ msgType = re.search(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+ sent = re.search(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL).group(1)
+
+ if ConfigData[f"status{status}"] and ConfigData[f"messagetype{msgType}"]:
+ IntroPlayed = False
+ REGION = GetAlertRegion(RelayXML)
+ RelayINFOS = re.findall(r'\s*(.*?)\s*', RelayXML, re.MULTILINE | re.IGNORECASE | re.DOTALL)
+ for InfoXML in RelayINFOS:
+ if FilterCheck_CAP(ConfigData, InfoXML) is True:
+ Gen = Generate(ConfigData, InfoXML, msgType, sent)
+ BroadcastContent = Gen.GenerateTextContent()
+ AlertColor = GetAlertLevelColor(ConfigData, BroadcastContent['SAME'])
+
+ print(f"\n\n[RELAY]: NEW ALERT TO RELAY...\n{BroadcastContent['HEADLINE']}: {BroadcastContent['TEXT']}\n{BroadcastContent['SAME']}\n\n")
+ if QEinterrupt() is True: break
+
+ Gen.GenerateAudioVisualContent(BroadcastContent, f"#{AlertColor}")
+ Logger(ConfigData).SendLog(BroadcastContent['HEADLINE'], BroadcastContent['TEXT'], BroadcastContent['SAME'], "TX", AlertColor)
+ UpdateCGEN(AlertColor, BroadcastContent['HEADLINE'], BroadcastContent['TEXT'], True)
+ UpdateStatus("Relay", f"Transmitting alert...")
+ Plugins_Run("beforeRelay", BroadcastContent['SAME'], BroadcastContent['TEXT'], InfoXML)
+
+ global PlayoutAlerts
+ if PlayoutAlerts:
+ Play = Playout(ConfigData, REGION)
+ if ConfigData['PlayoutNoSAME'] is False:
+ if not FilterCheck_SAME(ConfigData, BroadcastContent['SAME']) and DuplicateSAME(BroadcastContent['SAME']): continue
+ if IntroPlayed is False:
+ Play.LEAD_IN()
+ IntroPlayed = True
+ Play.SAME()
+ Play.ATTN()
+ else:
+ if IntroPlayed is False:
+ Play.LEAD_IN()
+ Play.ATTN()
+ IntroPlayed = True
+ Play.AUDIO()
+ if ConfigData['PlayoutNoSAME'] is False: Play.EOM()
+
+ if IntroPlayed is True:
+ Play.LEAD_OUT()
+ if ConfigData['CGEN_ClearAfterAlert'] is True: UpdateCGEN("000000", "EMERGENCY ALERT DETAILS", "", False)
+ Plugins_Run("afterRelay", BroadcastContent['SAME'], BroadcastContent['TEXT'], InfoXML)
+
+ shutil.move(f"./relay.xml", f"{XMLhistory_Folder}/{ResultFileName}")
+ exit()
+def Clear():
+ global clearScreen
+ if clearScreen is True: os.system('cls' if os.name == 'nt' else 'clear')
if __name__ == "__main__":
- Plugins_Run("startup")
parser = argparse.ArgumentParser(description='QuantumENDEC')
parser.add_argument('-v', '--version', action='store_true', help='Displays QuantumENDECs version and exits.')
- parser.add_argument('-k', '--keepScreen', action='store_true', help='Prevents the terminal screen from clearing.')
parser.add_argument('-H', '--headless', action='store_true', help='Start QuantumENDEC without starting the webserver.')
- args = parser.parse_args()
- if args.keepScreen is True:
- def Clear(): pass
- if args.version is True: print(f"{QEversion}"); exit()
- setup()
- with open("config.json", "r") as JCfile: config = JCfile.read()
- ConfigData = json.loads(config)
-
- if args.headless is False: WebThread = threading.Thread(target=StartWEB, daemon=True, args=(ConfigData['WebserverHost'], ConfigData['WebserverPort']))
- RelayThread = threading.Thread(target=Relay, daemon=True)
-
- if ConfigData["TCP"] is True:
- if ConfigData["TCP1"] == "": UpdateStatus("NAAD1", "TCP CAP Capture is disabled.")
- else:
- UpdateStatus("NAAD1", "Starting TCP capture...")
- TCP1cap = Capture("./XMLqueue", ConfigData["TCP1"], "NAAD1")
- TCP1capture_thread = threading.Thread(target=TCP1cap.start, daemon=True)
+ parser.add_argument('-c', '--clearScreen', action='store_true', help='Will clear the terminal after every alert.')
+ parser.add_argument('-n', '--noPlayout', action='store_true', help='Alerts will not play, for testing.')
+ QEARGS = parser.parse_args()
- if ConfigData["TCP2"] == "": UpdateStatus("NAAD2", "TCP CAP Capture is disabled.")
- else:
- UpdateStatus("NAAD2", "Starting TCP capture...")
- TCP2cap = Capture("./XMLqueue", ConfigData["TCP2"], "NAAD2")
- TCP2capture_thread = threading.Thread(target=TCP2cap.start, daemon=True)
- else:
- UpdateStatus("NAAD1", "TCP CAP Capture is disabled.")
- UpdateStatus("NAAD2", "TCP CAP Capture is disabled.")
- print("[TCP Capture]: TCP CAP capture has been disabled!")
+ if QEARGS.version is True:
+ print(QuantumENDEC_Version)
+ exit()
- if ConfigData["HTTP_CAP"] is True:
- HTTPcaptureThread1 = threading.Thread(target=HTTP_CAP, args=("XMLqueue", ConfigData["HTTP_CAP_ADDR"], "1"))
- HTTPcaptureThread2 = threading.Thread(target=HTTP_CAP, args=("XMLqueue", ConfigData["HTTP_CAP_ADDR1"], "2"))
- HTTPcaptureThread3 = threading.Thread(target=HTTP_CAP, args=("XMLqueue", ConfigData["HTTP_CAP_ADDR2"], "3"))
- HTTPcaptureThread4 = threading.Thread(target=HTTP_CAP, args=("XMLqueue", ConfigData["HTTP_CAP_ADDR3"], "4"))
- HTTPcaptureThread5 = threading.Thread(target=HTTP_CAP, args=("XMLqueue", ConfigData["HTTP_CAP_ADDR4"], "5"))
+ if QEARGS.clearScreen is True: clearScreen = True
+ else: clearScreen = False
- else:
- print("[HTTP Capture]: HTTP CAP Capture is disabled.")
- UpdateStatus("HTTPCAPcapture", "HTTP CAP Capture is disabled.")
-
- if ConfigData['Enable_NWSCAP'] is True: NWSCAPthread = threading.Thread(target=NWS_CAP, args=(ConfigData["NWSCAP_AtomLink"],))
- else: UpdateStatus("NWSCAPcapture", "NWS CAP Capture is disabled.")
-
- if ConfigData[f'SAMEmonitor'] is True:
- print("Starting SAME monitors...")
- from SAMEmonitor import *
- if ConfigData[f'SAME-AudioDevice-Monitor'] is True: SAMEaudiodevMonitorThread = threading.Thread(target=AUDIOmonitor_run, args=("AudioMonitor",))
- if ConfigData[f'SAME-AudioStream-Monitor1'] != "": SAMEaudiostreamThread_Monitor1 = threading.Thread(target=IPmonitor_run, args=("IpMonitor1", ConfigData[f'SAME-AudioStream-Monitor1']))
- if ConfigData[f'SAME-AudioStream-Monitor2'] != "": SAMEaudiostreamThread_Monitor2 = threading.Thread(target=IPmonitor_run, args=("IpMonitor2", ConfigData[f'SAME-AudioStream-Monitor2']))
- if ConfigData[f'SAME-AudioStream-Monitor3'] != "": SAMEaudiostreamThread_Monitor3 = threading.Thread(target=IPmonitor_run, args=("IpMonitor3", ConfigData[f'SAME-AudioStream-Monitor3']))
- if ConfigData[f'SAME-AudioStream-Monitor4'] != "": SAMEaudiostreamThread_Monitor4 = threading.Thread(target=IPmonitor_run, args=("IpMonitor4", ConfigData[f'SAME-AudioStream-Monitor4']))
-
- if args.headless is False: WebThread.start()
- print("Starting QuantumENDEC...")
- RelayThread.start()
-
- try: TCP1capture_thread.start()
- except: pass
- try: TCP2capture_thread.start()
- except: pass
-
- try: HTTPcaptureThread1.start()
- except: pass
- try: HTTPcaptureThread2.start()
- except: pass
- try: HTTPcaptureThread3.start()
- except: pass
- try: HTTPcaptureThread4.start()
- except: pass
- try: HTTPcaptureThread5.start()
- except: pass
+ if QEARGS.noPlayout is True: PlayoutAlerts = False
+ else: PlayoutAlerts = True
- try: NWSCAPthread.start()
- except: pass
+ print(f"-- Welcome to QuantumENDEC --\n{QuantumENDEC_Version}\n\nDevloped by ApatheticDELL alongside Aaron and BunnyTub\n")
- try: SAMEaudiodevMonitorThread.start()
- except: pass
- try: SAMEaudiostreamThread_Monitor1.start()
- except: pass
- try: SAMEaudiostreamThread_Monitor2.start()
- except: pass
- try: SAMEaudiostreamThread_Monitor3.start()
- except: pass
- try: SAMEaudiostreamThread_Monitor4.start()
- except: pass
+ WebserverThread = None
- if args.headless is False: WebThread.join()
- RelayThread.join()
-
- try: TCP1capture_thread.join()
- except: pass
+ while True:
+ print("\n\nStarting QuantumENDEC...")
+ THREADSLIST = []
+ Setup()
+ time.sleep(1)
+ with open(Config_File, "r") as JCfile: config = JCfile.read()
+ ConfigData = json.loads(config)
+ UpdateStatus("QuantumENDEC", "Starting up...")
+ Plugins_Run("startup")
- try: TCP2capture_thread.join()
- except: pass
+ QuantumStatus = 0
+
+ RelayThread = threading.Thread(target=RelayLoop)
+ THREADSLIST.append(RelayThread)
+
+ if QEARGS.headless is False and WebserverThread is None:
+ WebserverThread = threading.Thread(target=Webserver().StartServer, args=(ConfigData['WebserverHost'], int(ConfigData['WebserverPort'])))
+ WebserverThread.start()
+
+ # Start CAP monitors
+ if ConfigData['TCP'] is True:
+ if ConfigData['TCP1'] != "":
+ TCPHOST, TCPPORT = ConfigData['TCP1'].split(":")
+ TCPCAP1Thread = threading.Thread(target=Capture().TCPcapture, args=(TCPHOST, TCPPORT, 1024, "", "TCP1"))
+ THREADSLIST.append(TCPCAP1Thread)
+
+ if ConfigData['TCP2'] != "":
+ TCPHOST, TCPPORT = ConfigData['TCP2'].split(":")
+ TCPCAP2Thread = threading.Thread(target=Capture().TCPcapture, args=(TCPHOST, TCPPORT, 1024, "", "TCP2"))
+ THREADSLIST.append(TCPCAP2Thread)
+
+ if ConfigData['Enable_NWSCAP'] is True:
+ if ConfigData['NWSCAP_AtomLink'] != "":
+ NWSCAPThread = threading.Thread(target=Capture().NWScapture, args=(ConfigData['NWSCAP_AtomLink'],))
+ THREADSLIST.append(NWSCAPThread)
+
+ if ConfigData['HTTP_CAP'] is True:
+ if ConfigData['HTTP_CAP_ADDR'] != "":
+ HTTPCAP1Thread = threading.Thread(target=Capture().HTTPcapture, args=(ConfigData['HTTP_CAP_ADDR'], 1))
+ THREADSLIST.append(HTTPCAP1Thread)
+
+ if ConfigData['HTTP_CAP_ADDR1'] != "":
+ HTTPCAP2Thread = threading.Thread(target=Capture().HTTPcapture, args=(ConfigData['HTTP_CAP_ADDR1'], 2))
+ THREADSLIST.append(HTTPCAP2Thread)
+
+ if ConfigData['HTTP_CAP_ADDR2'] != "":
+ HTTPCAP3Thread = threading.Thread(target=Capture().HTTPcapture, args=(ConfigData['HTTP_CAP_ADDR2'], 3))
+ THREADSLIST.append(HTTPCAP3Thread)
+
+ if ConfigData['HTTP_CAP_ADDR3'] != "":
+ HTTPCAP4Thread = threading.Thread(target=Capture().HTTPcapture, args=(ConfigData['HTTP_CAP_ADDR3'], 4))
+ THREADSLIST.append(HTTPCAP4Thread)
+
+ if ConfigData['HTTP_CAP_ADDR4'] != "":
+ HTTPCAP5Thread = threading.Thread(target=Capture().HTTPcapture, args=(ConfigData['HTTP_CAP_ADDR4'], 5))
+ THREADSLIST.append(HTTPCAP5Thread)
+
+ # Start audio monitors for S.A.M.E
+ if ConfigData['SAME-AudioDevice-Monitor'] is True:
+ DEVmonitorThread = threading.Thread(target=Monitor_Local("LocalMonitor").start)
+ THREADSLIST.append(DEVmonitorThread)
+
+ if ConfigData['SAME_AudioStream_Monitors'] is True:
+ if ConfigData['SAME-AudioStream-Monitor1'] != "":
+ IPmonitor1Thread = threading.Thread(target=Monitor_Stream("IPmonitor1", ConfigData['SAME-AudioStream-Monitor1']).start)
+ THREADSLIST.append(IPmonitor1Thread)
+
+ if ConfigData['SAME-AudioStream-Monitor2'] != "":
+ IPmonitor2Thread = threading.Thread(target=Monitor_Stream("IPmonitor2", ConfigData['SAME-AudioStream-Monitor2']).start)
+ THREADSLIST.append(IPmonitor2Thread)
+
+ if ConfigData['SAME-AudioStream-Monitor3'] != "":
+ IPmonitor3Thread = threading.Thread(target=Monitor_Stream("IPmonitor3", ConfigData['SAME-AudioStream-Monitor3']).start)
+ THREADSLIST.append(IPmonitor3Thread)
+
+ if ConfigData['SAME-AudioStream-Monitor4'] != "":
+ IPmonitor4Thread = threading.Thread(target=Monitor_Stream("IPmonitor4", ConfigData['SAME-AudioStream-Monitor4']).start)
+ THREADSLIST.append(IPmonitor4Thread)
- try: HTTPcaptureThread1.join()
- except: pass
- try: HTTPcaptureThread2.join()
- except: pass
- try: HTTPcaptureThread3.join()
- except: pass
- try: HTTPcaptureThread4.join()
- except: pass
- try: HTTPcaptureThread5.join()
- except: pass
+ for thread in THREADSLIST: thread.start()
+
+ UpdateStatus("QuantumENDEC", "Ready and Running")
- try: NWSCAPthread.join()
- except: pass
+ while QuantumStatus == 0:
+ try: time.sleep(0.5) # keep-alive
+ except KeyboardInterrupt: QuantumStatus = 2
- try: SAMEaudiodevMonitorThread.join()
- except: pass
- try: SAMEaudiostreamThread_Monitor1.join()
- except: pass
- try: SAMEaudiostreamThread_Monitor2.join()
- except: pass
- try: SAMEaudiostreamThread_Monitor3.join()
- except: pass
- try: SAMEaudiostreamThread_Monitor4.join()
- except: pass
+ if QuantumStatus == 1:
+ print("QuantumENDEC is restarting... (please wait)")
+ UpdateStatus("QuantumENDEC", "Restarting... (please wait)")
+ elif QuantumStatus == 2:
+ print("QuantumENDEC is shutting down... (please wait)")
+ UpdateStatus("QuantumENDEC", "Shutting down... (please wait)")
- print("The end of QuantumENDEC")
\ No newline at end of file
+ for thread in THREADSLIST: thread.join()
+
+ if QuantumStatus == 1: continue
+ else:
+ os.kill(os.getpid(), signal.SIGINT) # This is one way to do it
+ exit()
\ No newline at end of file
diff --git a/README.md b/README.md
index 6274c19..947759e 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
ApatheticDELL presents...
-# QuantumENDEC (v5 Public Beta 9)
+# QuantumENDEC v5 Final Beta (Public Beta 10)
### Credits
Developed by...
@@ -25,8 +25,7 @@ You will first require the following...
- Python (3+)
...to be installed on your System
-And then, you need the following required Python modules: EASGen, EAS2Text, discord_webhook, pyttsx3, sounddevice, numpy, scipy, requests, argparse, xmltodict, pydub, ffmpeg-python, flask, soundfile
-You may also need: pyaudio
+All the required python modules are in the 'requirements.txt' text file.
If running on windows: You may also need pythoncom
If you are using any of the SAME monitor functions with QuantumENDEC on linux: You need to install multimon-ng.
diff --git a/SAMEmonitor.py b/SAMEmonitor.py
deleted file mode 100644
index 17ae545..0000000
--- a/SAMEmonitor.py
+++ /dev/null
@@ -1,426 +0,0 @@
-from EAS2Text import EAS2Text
-from datetime import datetime, timezone, timedelta
-import random, string, subprocess, sys, threading, queue, os, wave, contextlib, base64, json, time, ffmpeg, requests
-import sounddevice as sd
-import soundfile as sf
-from pydub import AudioSegment
-from scipy.fft import *
-from scipy.io import wavfile
-import numpy
-assert numpy
-from logger import Log
-
-def UpdateStatus(service, content):
- try:
- statFolder = "stats"
- with open(f"{statFolder}/{service}_status.txt", "w") as f: f.write(content)
- except: pass
-
-def createXML(SAME, audioInput, XMLfolder, monitorName):
- try:
- XMLfolder = XMLfolder.replace("/","")
- sent = datetime.now(timezone.utc).strftime('%Y-%m-%dT%H:%M:%S-00:00')
- sent_rp = sent.replace("-","").replace(":","")
- ident_code = ''.join(random.choices(string.ascii_uppercase + string.digits, k=10))
- ident = f"{sent_rp}{ident_code}"
- output = f"{XMLfolder}/{monitorName}-{sent_rp}I{ident}.xml"
-
- current_time = datetime.strptime(sent, "%Y-%m-%dT%H:%M:%S-00:00")
- try:
- oof = EAS2Text(SAME)
- hours, minutes = map(int, oof.purge)
- except: hours, minutes = map(int, ['01','30'])
- expiry_time = current_time + timedelta(hours=hours, minutes=minutes)
- expiry_timestamp = expiry_time.strftime("%Y-%m-%dT%H:%M:%S-00:00")
- with open(audioInput, 'rb') as wav_file: wav_data = wav_file.read()
- encoded_data = base64.b64encode(wav_data).decode('utf-8')
-
- SAME = SAME.replace("\n", "")
- monitorName = monitorName.replace("\n", "")
-
- XML = f"""
-
- SAME
- {monitorName}
- This is QuantumENDEC's AmericanMode alert
- {ident}
- {sent}
- {expiry_timestamp}
- {SAME}
-
- audio/wav
-
- {encoded_data}
-
-
-
- """
-
- with open(output, "w") as f: f.write(XML)
- print(f"[{monitorName}]: XML creation success")
- except: print(f"[{monitorName}]: XML creation failed.")
-
-def setup(moniName):
- print(f"[Setup][{moniName}] Using Default Audio Input...")
- print(f"[Setup][{moniName}] Cleaning Up Old Files...")
- files = os.listdir('Audio/tmp')
- files_to_del = [f"{moniName}-out.wav", f"{moniName}-rmend0.wav", f"{moniName}-alert.wav"]
- for name in files:
- if name in files_to_del: os.remove(f"Audio/tmp/" + name)
- if sys.platform == "win32": platform = "win"
- else: platform = "other"
- return platform
-
-def clr_dir(moniName):
- files = os.listdir('Audio/tmp')
- for name in files:
- #Make sure to not delete the output (alert)
- if name != f"{moniName}-alert.wav" and moniName in name: os.remove(f"Audio/tmp/" + f"{name}")
- print(f"[{moniName}] Cleaned Up tmp Directory")
-
-def get_len(fname):
- with contextlib.closing(wave.open(fname,'r')) as f:
- frames = f.getnframes()
- rate = f.getframerate()
- duration = frames / float(rate)
- return duration
-
-def freq(file, start_time, end_time):
- sr, data = wavfile.read(file)
- if data.ndim > 1: data = data[:, 0]
- else: pass
- dataToRead = data[int(start_time * sr / 1000) : int(end_time * sr / 1000) + 1]
- N = len(dataToRead)
- yf = rfft(dataToRead)
- xf = rfftfreq(N, 1 / sr)
- # Get the most dominant frequency and return it
- idx = numpy.argmax(numpy.abs(yf))
- freq = xf[idx]
- return freq
-
-def RemoveEOMpATTN(moniName):
- moniName = f"{moniName}-"
- try:
- # Remove END (EOMs)
- audio = AudioSegment.from_file(f"Audio/tmp/{moniName}out.wav")
- lengthaudio = len(audio)
- start = 0
- threshold = lengthaudio - 1200
- end = 0
- counter = 0
- end += threshold
- chunk = audio[start:end]
- filename = f'Audio/tmp/{moniName}rmend{counter}.wav'
- chunk.export(filename, format="wav")
- counter +=1
- start += threshold
- print(f"[{moniName}] Removed Recording EOMs")
- except: print(f"[{moniName}] Failed to remove recording EOMs")
-
- try:
- # Remove attention tone
- timelist = []
- freqlist = []
- ATTNCUT = 0
- file_length = get_len(f"Audio/tmp/{moniName}rmend0.wav")
- if file_length < 23: file_length = round(file_length)
- else: file_length = 80
- cnt = 0
- for e in range(file_length):
- cnt = cnt + 1
- val = 300
- start = e * val
- offset = start + val
- timelist.append(start)
- frequency = freq(f"Audio/tmp/{moniName}rmend0.wav", start, offset)
- freqlist.append(frequency)
- freqlist = list(freqlist)
- mainlen = len(freqlist)
- found = False
- for e in range(len(freqlist)):
- if found == False:
- if 810 < round(int(freqlist[e])) < 1070:
- if 810 < round(int(freqlist[e + 1])) < 1070 and 810 < round(int(freqlist[e + 2])) < 1070:
- found = True
- elif found == True:
- if freqlist[e] < 810 or freqlist[e] > 1070:
- if e + 5 < mainlen:
- if freqlist[e + 1] < 810 or freqlist[e + 1] > 1070 and freqlist[e + 2] < 810 or freqlist[e + 2] > 1070 and freqlist[e + 3] < 810 or freqlist[e + 3] > 1070 and freqlist[e + 4] < 810 or freqlist[e + 4] > 1070 and freqlist[e + 5] < 810 or freqlist[e + 5] > 1070:
- end_point = e
- found = None
- filename = f"Audio/tmp/{moniName}alert.wav"
- if(found == None):
- audio = AudioSegment.from_file(f"Audio/tmp/{moniName}rmend0.wav")
- lengthaudio = len(audio)
- cut = 300 * end_point
- start = cut
- threshold = lengthaudio - cut
- end = lengthaudio
- counter = 0
- while start < len(audio):
- end += threshold
- chunk = audio[start:end]
- chunk.export(filename, format="wav")
- counter +=1
- start += threshold
- else:
- gl = round(get_len(f"Audio/tmp/{moniName}rmend0.wav"))
- if(gl > 4): end_point = 17 #5 seconds
- else: end_point = gl // 2
- audio = AudioSegment.from_file(f"Audio/tmp/{moniName}rmend0.wav")
- lengthaudio = len(audio)
- cut = 300 * end_point
- start = cut
- threshold = lengthaudio - cut
- end = lengthaudio
- counter = 0
- while start < len(audio):
- end += threshold
- chunk = audio[start:end]
- chunk.export(filename, format="wav")
- counter +=1
- start += threshold
- print(f"[{moniName}] Removed ATTN Tone")
- except: print(f"[{moniName}] Failed to remove ATTN Tone")
-
-def ZCZC_test(inp):
- inp = inp.split("-")
- num = len(inp) - 6
- if len(inp[num + 3]) != 7: return False
- elif len(inp[num + 4]) != 8: return False
- elif len(inp[0]) != 4: return False #ZCZC
- elif len(inp[1]) != 3: return False #"EAS"
- elif len(inp[2]) != 3: return False #"DMO"
- if num == 1 and len(inp[3]) == 11: return True
- elif num > 1:
- for e in range(num):
- if (e + 1) == num:
- if len(inp[e+3]) == 11: return True
- else: return False
- elif len(inp[e+3]) != 6: return False
- else: return False
-
-class AUDIODEVmonitor:
- def __init__(self, monitorName):
- self.monitorName = monitorName
- self.record = False
-
- def recordAUDIO(self, SAME):
- while True:
- sd.default.reset()
- samplerate = 8000
- file = f"Audio/tmp/{self.monitorName}-out.wav"
- q = queue.Queue()
-
- def callback(indata, frames, time, status):
- if status: print(status, file=sys.stderr)
- q.put(indata.copy())
-
- with sf.SoundFile(file, mode='x', samplerate=samplerate,channels=2) as file:
- with sd.InputStream(samplerate=samplerate,channels=2,callback=callback):
- print(f"[{self.monitorName}] Recording!")
- last_check_time = time.time()
- while True:
- file.write(q.get())
- current_time = time.time()
- if self.record is False or current_time - last_check_time > 120:
- file.close()
- print(f"[{self.monitorName}] Stopped Recording Thread")
- RemoveEOMpATTN(self.monitorName)
- clr_dir(self.monitorName)
- createXML(SAME, f"Audio/tmp/{self.monitorName}-alert.wav", "XMLqueue", self.monitorName)
- UpdateStatus(self.monitorName, f"Alert sent.")
- print(f"[{self.monitorName}] Alert Sent!\n\n")
- exit()
-
- def start(self):
- while True:
- try:
- platform = setup(self.monitorName)
- last = None
- if platform == "win": source_process = subprocess.Popen(["multimon-ng-WIN32/multimon-ng.exe", "-a", "EAS", "-q"], stdout=subprocess.PIPE)
- else: source_process = subprocess.Popen(["multimon-ng", "-a", "EAS", "-q"], stdout=subprocess.PIPE)
- UpdateStatus(self.monitorName, f"Ready For Alerts.")
- print(f"[{self.monitorName}] Ready For Alerts...\n")
-
- while True:
- line = source_process.stdout.readline().decode("utf-8")
- decode = line.replace("b'EAS: ", "").replace("\n'", "").replace("'bEnabled Demodulators: EAS", "").replace('EAS: ', '').replace('EAS: ', '').replace('Enabled demodulators: EAS', '')
- if "ZCZC-" in decode or "NNNN" in decode: print(f"[{self.monitorName}] Decoder: {decode}")
-
- if 'ZCZC-' in str(line):
- if ZCZC_test(decode) == True:
- SAME = decode.replace("\n", "")
- UpdateStatus(self.monitorName, f"Receiving alert...")
- print(f"[{self.monitorName}] ZCZC Check OK")
- with open("config.json", "r") as JCfile: config = JCfile.read()
- ConfigData = json.loads(config)
- logge = Log(ConfigData)
- dateNow = datetime.now().strftime("%B %d, %Y at %H:%M:%S")
- logge.SendLog("Emergency Alert Received", f"Receipt: Received on {dateNow} from {self.monitorName}", SAME)
- self.record = True
- RecordThread = threading.Thread(target = self.recordAUDIO, args=(decode,))
- RecordThread.start()
- else:
- print(f"[{self.monitorName}] WARNING: ZCZC Check FAILED!")
- line = "NNNN"
-
- elif 'NNNN' not in str(last):
- if 'NNNN' in str(line):
- self.record = False
- try: RecordThread.join()
- except: pass
- UpdateStatus(self.monitorName, f"Ready For Alerts.")
- last = line
- except Exception as e:
- UpdateStatus(self.monitorName, f"Failure")
- print(f"[{self.monitorName}] Monitor failure.", e)
- time.sleep(20)
-
-
-class IPmonitor:
- def __init__(self, monitorName, streamURL):
- self.monitorName = monitorName
- self.streamURL = streamURL
- self.record = False
-
- def is_stream_online(self):
- try:
- response = requests.get(self.streamURL, stream=True, timeout=10)
- return response.status_code == 200
- except requests.RequestException as e:
- print(f"[{self.monitorName}] Error checking stream URL: {e}")
- return False
-
- def RecordIP(self, ZCZC):
- output_file = f"Audio/tmp/{self.monitorName}-out.wav"
- RecordIP = (ffmpeg .input(self.streamURL) .output(output_file, format='wav', ar='8000') .run_async(pipe_stdout=True, pipe_stderr=True))
- seconds = 0
- while True:
- seconds = seconds + 1
- if self.record is False or seconds == 120 or seconds > 120:
- RecordIP.terminate()
- RecordIP.wait()
- # try: shutil.copy(f"Audio/tmp/{self.monitorName}-out.wav", f"{self.monitorName}_alertFullish.wav")
- # except: pass
- print(f"[{self.monitorName}] Stopped Recording Thread")
- RemoveEOMpATTN(self.monitorName)
- clr_dir(self.monitorName)
- createXML(ZCZC, f"Audio/tmp/{self.monitorName}-alert.wav", "XMLqueue", self.monitorName)
- UpdateStatus(self.monitorName, f"Alert sent.")
- print(f"[{self.monitorName}] Alert Sent!\n\n")
- exit()
- time.sleep(1)
-
- def decodeStream(self):
- try:
- # Command to capture audio from IP stream and pipe it to multimon-ng
- ffmpeg_command = [
- 'ffmpeg',
- '-i', self.streamURL, # Input stream URL
- '-f', 'wav', # Output format
- '-ac', '1', # Number of audio channels (1 for mono)
- '-ar', '22050', # Audio sample rate
- '-loglevel', 'quiet', # Suppress ffmpeg output
- '-' ]
-
- platform = setup(self.monitorName)
- last = None
- ffmpeg_process = subprocess.Popen(ffmpeg_command, stdout=subprocess.PIPE)
- if platform == "win": source_process = subprocess.Popen(['multimon-ng-WIN32/multimon-ng.exe', '-a', 'EAS', '-q', '-t', 'raw', '-'], stdin=ffmpeg_process.stdout, stdout=subprocess.PIPE)
- else: source_process = subprocess.Popen(['multimon-ng', '-a', 'EAS', '-q', '-t', 'raw', '-'], stdin=ffmpeg_process.stdout, stdout=subprocess.PIPE)
- UpdateStatus(self.monitorName, f"Ready For Alerts, listening to {self.streamURL}")
- print(f"[{self.monitorName}] Ready For Alerts, listening to {self.streamURL}\n")
-
- while True:
- line = source_process.stdout.readline().decode("utf-8")
- decode = line.replace("b'EAS: ", "").replace("\n'", "").replace("'bEnabled Demodulators: EAS", "").replace('EAS: ', '').replace('EAS: ', '').replace('Enabled demodulators: EAS', '')
- if "ZCZC-" in decode or "NNNN" in decode: print(f"[{self.monitorName}] Decoder: {decode}")
-
- if 'ZCZC-' in str(line):
- if ZCZC_test(decode) == True:
- SAME = decode.replace("\n", "")
- UpdateStatus(self.monitorName, f"Receiving alert...")
- print(f"[{self.monitorName}] ZCZC Check OK")
- with open("config.json", "r") as JCfile: config = JCfile.read()
- ConfigData = json.loads(config)
- logge = Log(ConfigData)
- dateNow = datetime.now().strftime("%B %d, %Y at %H:%M:%S")
- logge.SendLog("Emergency Alert Received", f"Receipt: Received on {dateNow} from {self.monitorName}", decode)
- self.record = True
- RecordThread = threading.Thread(target = self.RecordIP, args=(decode,))
- RecordThread.start()
- else:
- print(f"[{self.monitorName}] WARNING: ZCZC Check FAILED!")
- line = "NNNN"
-
- elif 'NNNN' not in str(last):
- if 'NNNN' in str(line):
- time.sleep(0.5)
- self.record = False
- try: RecordThread.join()
- except: pass
- UpdateStatus(self.monitorName, f"Ready For Alerts, listening to {self.streamURL}")
- last = line
- except:
- try:
- ffmpeg_process.terminate()
- source_process.terminate()
- except: pass
- UpdateStatus(self.monitorName, f"Failure")
- print(f"[{self.monitorName}] Monitor failure.")
-
- def start(self):
- while True:
- if self.is_stream_online() is False:
- print(f"[{self.monitorName}] Stream URL {self.streamURL} is offline or unreachable.")
- UpdateStatus(self.monitorName, f"Stream URL {self.streamURL} is offline or unreachable.")
- time.sleep(30)
- else:
- try:
- decodeThread = threading.Thread(target=self.decodeStream)
- decodeThread.daemon = True
- decodeThread.start()
- while True:
- time.sleep(30)
- if self.is_stream_online() is False:
- print(f"[{self.monitorName}] Stream URL {self.streamURL} is offline or unreachable.")
- UpdateStatus(self.monitorName, f"Stream URL {self.streamURL} is offline or unreachable.")
- time.sleep(30)
- break
- else: pass
- except:
- print(f"[{self.monitorName}] Monitor failure.")
- UpdateStatus(self.monitorName, f"Failure.")
- time.sleep(30)
-
-def IPmonitor_run(name, url):
- i = IPmonitor(name, url)
- i.start()
-
-def AUDIOmonitor_run(name):
- i = AUDIODEVmonitor(name)
- i.start()
-
-if __name__ == "__main__":
-
-
- exit()
- result = IPmonitor("test", "https://icecast.kodicable.net:8443/wcrf").is_stream_online()
- print(result)
-
- print("testing only")
- moni = "Test"
-
- #AudioMonitor = AUDIODEVmonitor(moni).start()
- #AudioMonitor
-
- # Replace with your IP stream URL
- # self.streamURL = "https://archive.secludedfox.com/comcast/getfile.php?v=3zE6dEocEe-_fbwkEa-VhA=="
- # self.streamURL = 'https://icecast.wxstream.org/IP/CWXV'
- streamURL = "http://192.168.2.36:8000/TEST"
- monitorName = "TestMonitorIP"
-
- IPmonitor(monitorName, streamURL).start()
- #StreamMonitor =
- #StreamMonitor.start()
\ No newline at end of file
diff --git a/Audio/AttnCAN.wav b/assets/AttnCAN.wav
similarity index 100%
rename from Audio/AttnCAN.wav
rename to assets/AttnCAN.wav
diff --git a/Audio/AttnEBS.wav b/assets/AttnEBS.wav
similarity index 100%
rename from Audio/AttnEBS.wav
rename to assets/AttnEBS.wav
diff --git a/Audio/AttnEgg.wav b/assets/AttnEgg.wav
similarity index 100%
rename from Audio/AttnEgg.wav
rename to assets/AttnEgg.wav
diff --git a/Audio/AttnRumble.wav b/assets/AttnRumble.wav
similarity index 100%
rename from Audio/AttnRumble.wav
rename to assets/AttnRumble.wav
diff --git a/GeoToCLC.csv b/assets/GeoToCLC.csv
similarity index 97%
rename from GeoToCLC.csv
rename to assets/GeoToCLC.csv
index 9c3b347..e149d83 100644
--- a/GeoToCLC.csv
+++ b/assets/GeoToCLC.csv
@@ -1,5893 +1,5893 @@
-CAPCP Geocodes,EC CLC,UU Scale,UU Name,don't touch this tab
-0,000000,N,All of Canada,(ignore it)
-00,000000,N,All of Canada,
-001,001100,WB,Pacific Waters,
-00111,001110,WBD,Juan de Fuca Strait,
-00112,001120,WBD,Haro Strait,
-00113,001130,WBD,Strait of Georgia,
-00114,001140,WBD,Howe Sound,
-00115,001150,WBD,Johnstone Strait,
-00116,001160,WBD,Queen Charlotte Strait,
-00117,001170,WBD,West Coast Vancouver Island North,
-00118,001180,WBD,West Coast Vancouver Island South,
-00121,001210,WBD,Queen Charlotte Sound,
-00122,001220,WBD,Central Coast from McInnes Island to Pine Island,
-00123,001230,WBD,Douglas Channel,
-00124,001240,WBD,Hecate Strait,
-00125,001250,WBD,Dixon Entrance East,
-00126,001260,WBD,Dixon Entrance West,
-00127,001270,WBD,West Coast Haida Gwaii,
-00128,001280,WBD,North Coast Channels,
-00131,001310,WBD,Bowie,
-00132,001320,WBD,Explorer,
-002,002200,WB,Great Lakes,
-00221,002210,WBD,Lake Erie,
-00231,002310,WBD,Lake St. Clair,
-00241,002410,WBD,Lake Huron,
-00251,002510,WBD,Georgian Bay,
-00261,002610,WBD,North Channel,
-00271,002710,WBD,Whitefish Bay,
-00281,002810,WBD,Lake Superior,
-00291,002910,WBD,Lake Ontario,
-003,003000,WB,Atlantic Waters,
-00311,003110,WBD,Tadoussac to Pointe-des-Monts,
-00312,003120,WBD,Pointe-des-Monts to Anticosti,
-00314,003140,WBD,Anticosti,
-00315,003150,WBD,Chaleur - Miscou,
-00316,003160,WBD,Gulf - Magdalen,
-00317,003170,WBD,Northumberland Strait,
-00321,003210,WBD,Fundy,
-00322,003220,WBD,Grand Manan,
-00323,003230,WBD,Lurcher,
-00324,003240,WBD,Browns Bank,
-00325,003250,WBD,Georges Bank,
-00326,003260,WBD,Southwestern Shore,
-00327,003270,WBD,LaHave Bank,
-00328,003280,WBD,West Scotian Slope,
-00329,003290,WBD,Halifax Harbour and Approaches,
-00331,003310,WBD,Cabot Strait,
-00332,003320,WBD,Fourchu,
-00333,003330,WBD,Eastern Shore,
-00334,003340,WBD,Sable,
-00335,003350,WBD,East Scotian Slope,
-00336,003360,WBD,Southwest Coast,
-00337,003370,WBD,Banquereau,
-00338,003380,WBD,Laurentian Fan,
-00341,003410,WBD,Strait of Belle Isle,
-00342,003420,WBD,Northeast Gulf,
-00343,003430,WBD,Gulf - Port au Port,
-00344,003440,WBD,Northeast Coast,
-00345,003450,WBD,East Coast,
-00346,003460,WBD,South Coast,
-00347,003470,WBD,Southwestern Grand Banks,
-00351,003510,WBD,South Labrador Coast,
-00352,003520,WBD,Belle Isle Bank,
-00353,003530,WBD,Funk Island Bank,
-00354,003540,WBD,Northern Grand Banks,
-00355,003550,WBD,Southeastern Grand Banks,
-00356,003560,WBD,Southeast Labrador Sea,
-00357,003570,WBD,Flemish,
-00358,003580,WBD,Tail of the Grand Banks,
-00361,003610,WBD,North Labrador Coast,
-00362,003620,WBD,Mid Labrador Coast,
-00363,003630,WBD,Northwest Labrador Sea,
-00364,003640,WBD,South Labrador Sea,
-00365,003650,WBD,East Labrador Sea,
-00364,003640,WBD,South Labrador Sea,
-004,004000,WB,Inland Waters (Eastern Canada),
-00411,004110,WBD,Lake Melville,
-00421,004210,WBD,Bras d'Or Lakes,
-00431,004310,WBD,Saguenay to Tadoussac,
-00432,004320,WBD,Lake Saint-Jean,
-00441,004410,WBD,L'Isle-aux-Coudres to Tadoussac,
-00442,004420,WBD,St. Lawrence River - Donnacona to L'Isle-aux-Coudres,
-00443,004430,WBD,St. Lawrence River - Trois-Rivières to Donnacona,
-00444,004440,WBD,St. Lawrence River - Montréal to Trois-Rivières,
-00445,004450,WBD,St. Lawrence River - Cornwall to Montréal,
-00446,004460,WBD,St. Lawrence River - Prescott to Cornwall,
-00447,004470,WBD,St. Lawrence River - Kingston to Prescott,
-00471,004710,WBD,Lake Simcoe,
-00472,004720,WBD,Lake Nipissing,
-00481,004810,WBD,Lake Nipigon,
-00483,004830,WBD,Albany River,
-00484,004840,WBD,Big Trout Lake,
-00485,004850,WBD,Severn River,
-00473,004730,WBD,Lake Abitibi,
-00484,004840,WBD,Big Trout Lake,
-00412,004120,WBD,Meelpaeg Lake,
-00433,004330,WBD,La Grande River,
-00436,004360,WBD,Robert-Bourassa Reservoir,
-00435,004350,WBD,La Grande 3 Reservoir,
-00486,004860,WBD,Seul Lake,
-00413,004130,WBD,Smallwood Reservoir,
-00434,004340,WBD,Caniapiscau Reservoir,
-00437,004370,WBD,Mistassini Lake,
-005,005000,WB,Hudson Bay and Baffin Island Waters,
-00511,005110,WBD,Prince Charles,
-00512,005120,WBD,East Foxe,
-00513,005130,WBD,West Foxe,
-00514,005140,WBD,Igloolik,
-00521,005210,WBD,Nottingham,
-00522,005220,WBD,Resolution,
-00523,005230,WBD,Ungava,
-00531,005310,WBD,Puvirnituq,
-00532,005320,WBD,Belcher,
-00533,005330,WBD,James Bay,
-00541,005410,WBD,South-central Hudson,
-00542,005420,WBD,South Hudson,
-00543,005430,WBD,York,
-00551,005510,WBD,Arviat,
-00552,005520,WBD,Churchill,
-00553,005530,WBD,Central,
-00554,005540,WBD,Coats,
-00561,005610,WBD,Roes Welcome,
-00562,005620,WBD,Rankin,
-00563,005630,WBD,Chesterfield Inlet,
-006,006000,WB,Northeastern Arctic Waters,
-00611,006110,WBD,Robeson,
-00612,006120,WBD,Kane,
-00613,006130,WBD,Clarence,
-00614,006140,WBD,East Baffin,
-00615,006150,WBD,East Clyde,
-00616,006160,WBD,West Clyde,
-00617,006170,WBD,West Baffin,
-00618,006180,WBD,Pond,
-00621,006210,WBD,East Davis,
-00622,006220,WBD,East Brevoort,
-00623,006230,WBD,Central Brevoort,
-00624,006240,WBD,West Brevoort,
-00625,006250,WBD,Frobisher Bay,
-00626,006260,WBD,Cumberland,
-00627,006270,WBD,West Davis,
-00631,006310,WBD,Lancaster,
-00632,006320,WBD,Navy Board,
-00633,006330,WBD,Admiralty,
-00634,006340,WBD,Committee,
-00635,006350,WBD,Boothia,
-00636,006360,WBD,Regent,
-00641,006410,WBD,Barrow,
-00642,006420,WBD,Peel,
-00643,006430,WBD,St. Roch,
-00644,006440,WBD,Maud,
-00645,006450,WBD,Larsen,
-00646,006460,WBD,McClintock,
-00651,006510,WBD,Dease,
-00652,006520,WBD,Bathurst,
-00653,006530,WBD,Coronation,
-00654,006540,WBD,Dolphin,
-00655,006550,WBD,Amundsen,
-00656,006560,WBD,Holman,
-00657,006570,WBD,Prince of Wales,
-00661,006610,WBD,Rae,
-00662,006620,WBD,Melville,
-00663,006630,WBD,McClure,
-00664,006640,WBD,Liddon,
-00665,006650,WBD,Fitzwilliam,
-00666,006660,WBD,Griper,
-00667,006670,WBD,Ballantyne,
-00668,006680,WBD,Wilkins,
-00671,006710,WBD,Peary,
-00672,006720,WBD,Hassel,
-00673,006730,WBD,Maclean,
-00674,006740,WBD,Queens,
-00675,006750,WBD,Byam,
-00676,006760,WBD,Hazen,
-00677,006770,WBD,Gustaf,
-00681,006810,WBD,Greely,
-00682,006820,WBD,Eureka,
-00683,006830,WBD,Jones,
-00684,006840,WBD,Norwegian,
-00685,006850,WBD,Massey,
-00686,006860,WBD,South Sverdrup,
-00687,006870,WBD,North Sverdrup,
-00688,006880,WBD,Nansen,
-007,007000,WB,Western Arctic Waters,
-00711,007110,WBD,CZ1,
-00712,007120,WBD,CY3,
-00713,007130,WBD,CX5,
-00714,007140,WBD,CX4,
-00715,007150,WBD,CX3,
-00716,007160,WBD,CX2,
-00717,007170,WBD,CX1,
-00718,007180,WBD,CY1,
-00719,007190,WBD,CY2,
-00721,007210,WBD,CW6,
-00722,007220,WBD,CV7,
-00723,007230,WBD,CV6,
-00731,007310,WBD,CW5,
-00732,007320,WBD,Alert,
-00733,007330,WBD,Bartlett,
-00734,007340,WBD,Ward Hunt,
-00735,007350,WBD,Ellesmere,
-00736,007360,WBD,South Axel Heiberg,
-00737,007370,WBD,Axel Heiberg,
-00738,007380,WBD,CW4,
-00741,007410,WBD,Prince Patrick,
-00742,007420,WBD,Brock,
-00743,007430,WBD,South Prince Patrick,
-00744,007440,WBD,CT4,
-00745,007450,WBD,CU4,
-00746,007460,WBD,CU3,
-00751,007510,WBD,CW3,
-00752,007520,WBD,CV5,
-00753,007530,WBD,Ellef Ringnes,
-00754,007540,WBD,South Ellef Ringnes,
-00755,007550,WBD,Borden,
-00756,007560,WBD,North Prince Patrick,
-00757,007570,WBD,CV4,
-00758,007580,WBD,CV3,
-00759,007590,WBD,CW2,
-00761,007610,WBD,CW1,
-00762,007620,WBD,CV2,
-00763,007630,WBD,CU2,
-00764,007640,WBD,CT3,
-00765,007650,WBD,CT2,
-00766,007660,WBD,CT1,
-00767,007670,WBD,CU1,
-00768,007680,WBD,CV1,
-00771,007710,WBD,Prince Alfred,
-00772,007720,WBD,Banks,
-00773,007730,WBD,Baillie,
-00781,007810,WBD,West Prince Alfred,
-00782,007820,WBD,North Tuktoyaktuk,
-00783,007830,WBD,Tuktoyaktuk,
-00784,007840,WBD,Yukon Coast,
-00785,007850,WBD,Mackenzie,
-00786,007860,WBD,North Mackenzie,
-00787,007870,WBD,Northwest Beaufort,
-008,008000,WB,Inland Waters (Western Canada),
-00811,008110,WBD,Mackenzie River,
-00821,008210,WBD,Great Bear Lake,
-00822,008220,WBD,Eskimo Lakes,
-00831,008310,WBD,Great Slave Lake,
-00832,008320,WBD,Baker,
-00841,008410,WBD,Lake Athabasca,
-00851,008510,WBD,Reindeer Lake,
-00861,008610,WBD,Cedar Lake,
-00862,008620,WBD,Lake Winnipegosis,
-00863,008630,WBD,Lake Winnipeg,
-00864,008640,WBD,Lake Manitoba,
-00871,008710,WBD,Fraser River Waterways,
-00812,008120,WBD,Anderson River,
-00813,008130,WBD,Horton River,
-00814,008140,WBD,Liard River,
-00815,008150,WBD,Pelly River,
-00816,008160,WBD,Yukon River,
-00842,008420,WBD,Athabasca River,
-00843,008430,WBD,North Saskatchewan River,
-00844,008440,WBD,Peace River,
-00845,008450,WBD,South Saskatchewan River,
-00846,008460,WBD,Old Wives Lake,
-00847,008470,WBD,Big Quill Lake,
-00848,008480,WBD,Lesser Slave Lake,
-00849,008490,WBD,Utikuma Lake,
-00852,008520,WBD,Churchill River,
-00853,008530,WBD,Nelson River,
-00854,008540,WBD,Red River,
-00855,008550,WBD,Saskatchewan River,
-00856,008560,WBD,Lac la Ronge,
-00865,008650,WBD,Dauphin Lake,
-00866,008660,WBD,Swan Lake,
-00867,008670,WBD,Lake St. Martin,
-00868,008680,WBD,Red Deer Lake,
-00872,008720,WBD,Columbia Riverr,
-00873,008730,WBD,Fraser River,
-00874,008740,WBD,Kootenay River,
-00833,008330,WBD,Slave River,
-00881,008810,WBD,Gods Lake,
-00886,008860,WBD,Island Lake,
-00834,008340,WBD,Dubawnt Lake,
-00857,008570,WBD,Wollaston Lake,
-00883,008830,WBD,North Moose Lake,
-00885,008850,WBD,South Moose Lake,
-00869,008690,WBD,Playgreen Lake,
-00882,008820,WBD,Little Playgreen Lake,
-00884,008840,WBD,Pipestone Lake,
-00887,008870,WBD,Cross Lake,
-00888,008880,WBD,Kiskittogisu Lake,
-00889,008890,WBD,Kiskitto Lake,
-59,080000,PT,British Columbia,
-5901,084300-084400-084500-085600,CD,East Kootenay,
-5901022,084510,CSD,Cranbrook,
-5901805,080000,CSD,Cassimayooks (Mayook) 5,
-5901012,080000,CSD,Fernie,
-5901040,080000,CSD,Radium Hot Springs,
-5901006,080000,CSD,Sparwood,
-5901801,080000,CSD,Tobacco Plains 2,
-5901804,085200-085400-085500,CSD,Columbia Lake 3,
-5901039,084520,CSD,Invermere,
-5901003,080000,CSD,Elkford,
-5901028,080000,CSD,Kimberley,
-5901043,080000,CSD,Canal Flats,
-5901037,084300-084400-084500-085600,CSD,East Kootenay E,
-5901035,084300-084400-084500-085600,CSD,East Kootenay C,
-5901019,084300-084400-084500-085600,CSD,East Kootenay B,
-5901048,084300-084400-084500-085600,CSD,East Kootenay G,
-5901046,084300-084400-084500-085600,CSD,East Kootenay F,
-5901803,084300-084400-084500-085600,CSD,Kootenay 1,
-5901802,080000,CSD,Isidore's Ranch 4,
-5901806,083600,CSD,Shuswap,
-5901017,084300-084400-084500-085600,CSD,East Kootenay A,
-5903,084300-084400-084500-085600,CD,Central Kootenay,
-5903019,080000,CSD,Slocan,
-5903010,084300-084400-084500-085600,CSD,Central Kootenay A,
-5903011,080000,CSD,Salmo,
-5903017,084300-084400-084500-085600,CSD,Central Kootenay C,
-5903052,084300-084400-084500-085600,CSD,Central Kootenay H,
-5903032,080000,CSD,New Denver,
-5903015,080000,CSD,Nelson,
-5903013,084300-084400-084500-085600,CSD,Central Kootenay B,
-5903058,084300-084400-084500-085600,CSD,Central Kootenay J,
-5903004,080000,CSD,Creston,
-5903047,084300-084400-084500-085600,CSD,Central Kootenay G,
-5903023,080000,CSD,Kaslo,
-5903041,084300-084400-084500-085600,CSD,Central Kootenay E,
-5903056,084300-084400-084500-085600,CSD,Central Kootenay I,
-5903039,084300-084400-084500-085600,CSD,Central Kootenay D,
-5903050,080000,CSD,Nakusp,
-5903027,080000,CSD,Silverton,
-5903045,080000,CSD,Castlegar,
-5903807,080000,CSD,Creston 1,
-5903060,084300-084400-084500-085600,CSD,Central Kootenay K,
-5903043,084300-084400-084500-085600,CSD,Central Kootenay F,
-5905,084200-084300-084400-084500-085600,CD,Kootenay Boundary,
-5905037,080000,CSD,Midway,
-5905042,080000,CSD,Greenwood,
-5905018,080000,CSD,Warfield,
-5905052,084200-084300-084400-084500-085600,CSD,Kootenay Boundary D,
-5905050,084200-084300-084400-084500-085600,CSD,Kootenay Boundary C,
-5905023,080000,CSD,Rossland,
-5905030,084200-084300-084400-084500-085600,CSD,Kootenay Boundary B,
-5905014,080000,CSD,Trail,
-5905026,084200-084300-084400-084500-085600,CSD,Kootenay Boundary A,
-5905054,084200-084300-084400-084500-085600,CSD,Kootenay Boundary E,
-5905005,080000,CSD,Fruitvale,
-5905009,080000,CSD,Montrose,
-5905032,080000,CSD,Grand Forks,
-5907,083400-083500,CD,Okanagan-Similkameen,
-5907807,080000,CSD,Chuchuwayha 2,
-5907041,083530,CSD,Penticton,
-5907049,083400-083500,CSD,Okanagan-Similkameen E,
-5907809,080000,CSD,Ashnola 10,
-5907028,083400-083500,CSD,Okanagan-Similkameen C,
-5907802,080000,CSD,Osoyoos 1,
-5907053,083400-083500,CSD,Okanagan-Similkameen G,
-5907024,080000,CSD,Princeton,
-5907805,080000,CSD,Chopaka 7 & 8,
-5907035,080000,CSD,Summerland,
-5907801,083400,CSD,Lower Similkameen 2,
-5907803,083530,CSD,Penticton 1,
-5907047,083400-083500,CSD,Okanagan-Similkameen D,
-5907806,080000,CSD,Blind Creek 6,
-5907051,083400-083500,CSD,Okanagan-Similkameen F,
-5907009,080000,CSD,Keremeos,
-5907808,080000,CSD,Alexis 9,
-5907026,083400-083500,CSD,Okanagan-Similkameen B,
-5907014,080000,CSD,Oliver,
-5907055,083400-083500,CSD,Okanagan-Similkameen H,
-5907022,083400-083500,CSD,Okanagan-Similkameen A,
-5907005,080000,CSD,Osoyoos,
-5909,082710-082720,CD,Fraser Valley,
-5909804,080000,CSD,Chawathil 4,
-5909814,080000,CSD,Skawahlook 1,
-5909834,080000,CSD,Tseatah 2,
-5909823,080000,CSD,Skowkale 11,
-5909848,080000,CSD,Tipella 7,
-5909852,080000,CSD,Baptiste Smith 1A,
-5909855,080000,CSD,Sachteen 2,
-5909817,080000,CSD,Tuckkwiowhum 1,
-5909833,080000,CSD,Scowlitz 1,
-5909832,080000,CSD,Seabird Island,
-5909837,080000,CSD,Cheam 1,
-5909881,080000,CSD,Skweahm 10,
-5909843,080000,CSD,Peters 1,
-5909826,080000,CSD,Skway 5,
-5909877,080000,CSD,Upper Sumas 6,
-5909822,080000,CSD,Skowkale 10,
-5909831,080000,CSD,Yakweakwioose 12,
-5909860,080000,CSD,Sachteen 2A,
-5909805,080000,CSD,Inkahtsaph 6,
-5909836,080000,CSD,Boston Bar 1A,
-5909809,080000,CSD,Saddle Rock 9,
-5909062,082710-082720,CSD,Fraser Valley G,
-5909879,080000,CSD,Holachten 8,
-5909064,082710-082720,CSD,Fraser Valley H,
-5909821,080000,CSD,Kwawkwawapilt 6,
-5909875,080000,CSD,Baptiste Smith 1B,
-5909815,080000,CSD,Speyum 3,
-5909806,080000,CSD,Kopchitchin 2,
-5909812,080000,CSD,Schkam 2,
-5909828,080000,CSD,Squiaala 7,
-5909827,080000,CSD,Soowahlie 14,
-5909048,082710-082720,CSD,Fraser Valley C,
-5909845,080000,CSD,Skookumchuck 4,
-5909847,080000,CSD,Bucktum 4,
-5909056,080000,CSD,Mission,
-5909818,080000,CSD,Yale Town 1,
-5909876,080000,CSD,Albert Flat 5,
-5909808,080000,CSD,Puckatholetchin 11,
-5909009,080000,CSD,Hope,
-5909810,080000,CSD,Lukseetsissum 9,
-5909880,080000,CSD,Lakahahmen 11,
-5909016,082710-082720,CSD,Fraser Valley B,
-5909825,080000,CSD,Skwali 3,
-5909824,080000,CSD,Skwah 4,
-5909849,080000,CSD,Skwahla 2,
-5909807,080000,CSD,Ohamil 1,
-5909841,080000,CSD,Stullawheets 8,
-5909842,080000,CSD,Douglas 8,
-5909819,080000,CSD,Kahmoose 4,
-5909839,080000,CSD,Chehalis 5,
-5909882,080000,CSD,Squawkum Creek 3,
-5909027,080000,CSD,Harrison Hot Springs,
-5909844,080000,CSD,Popkum 1,
-5909830,080000,CSD,Tzeachten 13,
-5909036,082710-082720,CSD,Fraser Valley E,
-5909838,080000,CSD,Schelowat 1,
-5909034,082710-082720,CSD,Fraser Valley D,
-5909835,080000,CSD,Aitchelitch 9,
-5909014,082710-082720,CSD,Fraser Valley A,
-5909816,080000,CSD,Spuzzum 1,
-5909020,082720,CSD,Chilliwack,
-5909032,080000,CSD,Kent,
-5909878,080000,CSD,Matsqui Main 2,
-5909829,080000,CSD,Squiaala 8,
-5909060,082710-082720,CSD,Fraser Valley F,
-5909052,082710,CSD,Abbotsford,
-5915,081200-081300-081400-081500-082600,CD,Greater Vancouver,
-5915051,081200,CSD,North Vancouver,
-5915816,080000,CSD,McMillan Island 6,
-5915811,080000,CSD,Seymour Creek 2,
-5915034,080000,CSD,Coquitlam,
-5915809,080000,CSD,Barnston Island 3,
-5915840,080000,CSD,Whonnock 1,
-5915825,080000,CSD,Matsqui 4,
-5915029,080000,CSD,New Westminster,
-5915039,080000,CSD,Port Coquitlam,
-5915055,081400,CSD,West Vancouver,
-5915808,080000,CSD,Capilano 5,
-5915807,080000,CSD,Mission 1,
-5915803,080000,CSD,Musqueam 2,
-5915810,080000,CSD,Musqueam 4,
-5915802,080000,CSD,Tsawwassen,
-5915002,080000,CSD,Langley,
-5915801,080000,CSD,Semiahmoo,
-5915025,080000,CSD,Burnaby,
-5915004,080000,CSD,Surrey,
-5915015,080000,CSD,Richmond,
-5915043,080000,CSD,Port Moody,
-5915075,080000,CSD,Maple Ridge,
-5915804,080000,CSD,Coquitlam 2,
-5915835,080000,CSD,Langley 5,
-5915036,080000,CSD,Belcarra,
-5915830,080000,CSD,Katzie 1,
-5915020,080000,CSD,Greater Vancouver A,
-5915070,080000,CSD,Pitt Meadows,
-5915805,080000,CSD,Coquitlam 1,
-5915001,080000,CSD,Langley,
-5915007,080000,CSD,White Rock,
-5915011,080000,CSD,Delta,
-5915046,081200,CSD,North Vancouver,
-5915022,082600,CSD,Vancouver,
-5915038,080000,CSD,Anmore,
-5915806,080000,CSD,Burrard Inlet 3,
-5915813,080000,CSD,Katzie 2,
-5915065,080000,CSD,Lions Bay,
-5915062,080000,CSD,Bowen Island,
-5917,080000,CD,Capital,
-5917817,080000,CSD,T'Sou-ke 1 (Sooke 1),
-5917815,080000,CSD,Gordon River 2,
-5917010,080000,CSD,Sidney,
-5917015,080000,CSD,Central Saanich,
-5917040,080000,CSD,Esquimalt,
-5917005,080000,CSD,North Saanich,
-5917042,080000,CSD,Metchosin,
-5917809,080000,CSD,Becher Bay 1,
-5917041,080000,CSD,Colwood,
-5917056,080000,CSD,Capital H (Part 2),
-5917803,080000,CSD,East Saanich 2,
-5917044,080000,CSD,Langford,
-5917818,080000,CSD,T'Sou-ke 2 (Sooke 2),
-5917805,080000,CSD,Galiano Island 9,
-5917029,080000,CSD,Capital G,
-5917021,080000,CSD,Saanich,
-5917811,080000,CSD,Esquimalt,
-5917027,080000,CSD,Capital F,
-5917804,080000,CSD,South Saanich 1,
-5917052,080000,CSD,Sooke,
-5917049,080000,CSD,Highlands,
-5917812,080000,CSD,New Songhees 1A,
-5917054,080000,CSD,Capital H (Part 1),
-5917034,081600,CSD,Victoria,
-5917802,080000,CSD,Union Bay 4,
-5917801,080000,CSD,Cole Bay 3,
-5917047,080000,CSD,View Royal,
-5917030,080000,CSD,Oak Bay,
-5919,080000,CD,Cowichan Valley,
-5919814,080000,CSD,Malachan 11,
-5919807,080000,CSD,Cowichan 1,
-5919809,080000,CSD,Kuper Island 7,
-5919051,080000,CSD,Cowichan Valley E,
-5919820,080000,CSD,Est-Patrolas 4,
-5919043,080000,CSD,Cowichan Valley A,
-5919815,080000,CSD,Malahat 11,
-5919033,080000,CSD,Cowichan Valley F,
-5919804,080000,CSD,Chemainus 13,
-5919812,080000,CSD,Cowichan Lake,
-5919035,080000,CSD,Cowichan Valley I,
-5919015,080000,CSD,Cowichan Valley G,
-5919802,080000,CSD,Squaw-hay-one 11,
-5919803,080000,CSD,Tsussie 6,
-5919816,080000,CSD,Oyster Bay 12,
-5919801,080000,CSD,Halalt 2,
-5919021,080000,CSD,Ladysmith,
-5919811,080000,CSD,Shingle Point 4,
-5919817,080000,CSD,Portier Pass 5,
-5919013,080000,CSD,Cowichan Valley D,
-5919046,080000,CSD,Cowichan Valley B,
-5919818,080000,CSD,Theik 2,
-5919808,080000,CSD,Kil-pah-las 3,
-5919049,080000,CSD,Cowichan Valley C,
-5919016,080000,CSD,Lake Cowichan,
-5919017,080000,CSD,Cowichan Valley H,
-5919806,080000,CSD,Cowichan 9,
-5919821,080000,CSD,Tzart-Lam 5,
-5919012,080000,CSD,Duncan,
-5919008,080000,CSD,North Cowichan,
-5921,080000,CD,Nanaimo,
-5921014,080000,CSD,Nanaimo B,
-5921806,080000,CSD,Qualicum,
-5921032,080000,CSD,Nanaimo F,
-5921007,080000,CSD,Nanaimo,
-5921010,080000,CSD,Nanaimo A,
-5921016,080000,CSD,Nanaimo C,
-5921018,080000,CSD,Parksville,
-5921805,080000,CSD,Nanoose,
-5921804,080000,CSD,Nanaimo Town 1,
-5921801,080000,CSD,Nanaimo River 3,
-5921023,080000,CSD,Qualicum Beach,
-5921034,080000,CSD,Nanaimo G,
-5921036,080000,CSD,Nanaimo H,
-5921030,080000,CSD,Nanaimo E,
-5921802,080000,CSD,Nanaimo River 2,
-5921803,080000,CSD,Nanaimo River 4,
-5921008,080000,CSD,Lantzville,
-5923,080000,CD,Alberni-Clayoquot,
-5923049,080000,CSD,Alberni-Clayoquot C,
-5923806,080000,CSD,Hesquiat 1,
-5923808,080000,CSD,Marktosis 15,
-5923824,080000,CSD,Refuge Cove 6,
-5923825,080000,CSD,Tin Wis 11,
-5923822,080000,CSD,Klehkoot 2,
-5923810,080000,CSD,Macoah 1,
-5923816,080000,CSD,Tsahaheh 1,
-5923047,080000,CSD,Alberni-Clayoquot A,
-5923813,080000,CSD,Opitsat 1,
-5923025,080000,CSD,Tofino,
-5923033,080000,CSD,Alberni-Clayoquot B,
-5923019,080000,CSD,Ucluelet,
-5923802,080000,CSD,Alberni 2,
-5923801,080000,CSD,Ahahswinis 1,
-5923804,080000,CSD,Clakamucus 2,
-5923803,080000,CSD,Anacla 12,
-5923809,080000,CSD,Numukamis 1,
-5923805,080000,CSD,Elhlateese 2,
-5923008,080000,CSD,Port Alberni,
-5923814,080000,CSD,Sachsa 4,
-5923035,080000,CSD,Alberni-Clayoquot D,
-5923823,080000,CSD,Esowista 3,
-5923037,080000,CSD,Alberni-Clayoquot E,
-5923039,080000,CSD,Alberni-Clayoquot F,
-5923807,080000,CSD,Ittatsoo 1,
-5924,080000,CD,Strathcona,
-5924806,080000,CSD,Houpsitas 6,
-5924805,080000,CSD,Chenahkint 12,
-5924052,080000,CSD,Strathcona B,
-5924025,080000,CSD,Gold River,
-5924812,080000,CSD,Quinsam 12,
-5924813,080000,CSD,Village Island 1,
-5924835,080000,CSD,Tsa Xana 18,
-5924804,080000,CSD,Campbell River 11,
-5924034,080000,CSD,Campbell River,
-5924048,080000,CSD,Strathcona A,
-5924042,080000,CSD,Strathcona D (Oyster Bay - Buttle Lake),
-5924840,080000,CSD,Homalco 9,
-5924814,080000,CSD,Yuquot 1,
-5924817,080000,CSD,Cape Mudge 10,
-5924030,080000,CSD,Tahsis,
-5924803,080000,CSD,Ahaminaquus 12,
-5924054,080000,CSD,Strathcona C,
-5924833,080000,CSD,Oclucje 7,
-5924039,080000,CSD,Sayward,
-5924836,080000,CSD,Ehatis 11,
-5924029,080000,CSD,Zeballos,
-5924818,080000,CSD,Squirrel Cove 8,
-5924820,080000,CSD,Tork 7,
-5926,080000,CD,Comox Valley,
-5926022,080000,CSD,Comox Valley B (Lazo North),
-5926801,080000,CSD,Comox 1,
-5926014,080000,CSD,Cumberland,
-5926021,080000,CSD,Comox Valley A,
-5926024,080000,CSD,Comox Valley C (Puntledge - Black Creek),
-5926010,080000,CSD,Courtenay,
-5926802,080000,CSD,Pentledge 2,
-5926005,080000,CSD,Comox,
-5927,080000,CD,Powell River,
-5927018,080000,CSD,Powell River D,
-5927806,080000,CSD,Sechelt (Part),
-5927012,080000,CSD,Powell River B,
-5927020,080000,CSD,Powell River E,
-5927008,080000,CSD,Powell River,
-5927016,080000,CSD,Powell River C,
-5927802,080000,CSD,Sliammon 1,
-5927010,080000,CSD,Powell River A,
-5929,082300,CD,Sunshine Coast,
-5929005,080000,CSD,Gibsons,
-5929801,080000,CSD,Chekwelp 26,
-5929011,080000,CSD,Sechelt,
-5929803,080000,CSD,Sechelt (Part),
-5929018,082300,CSD,Sunshine Coast A,
-5929028,082300,CSD,Sunshine Coast F,
-5929026,082300,CSD,Sunshine Coast E,
-5929022,082300,CSD,Sunshine Coast B,
-5929024,082300,CSD,Sunshine Coast D,
-5931,080000,CD,Squamish-Lillooet,
-5931826,080000,CSD,Necait 6,
-5931026,080000,CSD,Lillooet,
-5931823,080000,CSD,McCartney's Flat 4,
-5931832,080000,CSD,Towinock 2,
-5931806,080000,CSD,Seaichem 16,
-5931807,080000,CSD,Stawamus 24,
-5931816,080000,CSD,Fountain 1,
-5931840,080000,CSD,Nequatque 2,
-5931034,080000,CSD,Squamish-Lillooet B,
-5931837,080000,CSD,Mount Currie 8,
-5931813,080000,CSD,Bridge River 1,
-5931817,080000,CSD,Fountain 3,
-5931809,080000,CSD,Yekwaupsum 18,
-5931842,080000,CSD,Fountain 1B,
-5931811,080000,CSD,Mount Currie 2,
-5931021,080000,CSD,Squamish-Lillooet D,
-5931829,080000,CSD,Pavilion 1,
-5931818,080000,CSD,Fountain 10,
-5931827,080000,CSD,Nesikep 6,
-5931801,080000,CSD,Cheakamus 11,
-5931006,080000,CSD,Squamish,
-5931824,080000,CSD,Seton Lake 5,
-5931032,080000,CSD,Squamish-Lillooet A,
-5931821,080000,CSD,Lillooet 1,
-5931810,080000,CSD,Nequatque 3A,
-5931822,080000,CSD,Fountain Creek 8,
-5931804,080000,CSD,Mount Currie 10,
-5931017,080000,CSD,Squamish-Lillooet C,
-5931805,080000,CSD,Nequatque 1,
-5931820,080000,CSD,Fountain 12,
-5931812,080000,CSD,Nesuch 3,
-5931020,082400,CSD,Whistler,
-5931808,080000,CSD,Waiwakum 14,
-5931802,080000,CSD,Kowtain 17,
-5931819,080000,CSD,Fountain 11,
-5931815,080000,CSD,Chilhil 6,
-5931838,080000,CSD,Mount Currie 6,
-5931012,080000,CSD,Pemberton,
-5931803,080000,CSD,Mount Currie 1,
-5931831,080000,CSD,Slosh 1,
-5931833,080000,CSD,Mission 5,
-5931814,080000,CSD,Cayoosh Creek 1,
-5931828,080000,CSD,Pashilqua 2,
-5933,083200-085100-083300,CD,Thompson-Nicola,
-5933836,080000,CSD,Lower Hat Creek 2,
-5933042,080000,CSD,Kamloops,
-5933822,080000,CSD,Chuchhriaschin 5A,
-5933894,080000,CSD,Inkluckcheen 21B,
-5933879,080000,CSD,Zacht 5,
-5933817,080000,CSD,Skeetchestn,
-5933068,083200-085100-083300,CSD,Thompson-Nicola A (Wells Gray Country),
-5933819,080000,CSD,High Bar 1,
-5933845,080000,CSD,105 Mile Post 2,
-5933037,083200-085100-083300,CSD,Thompson-Nicola I (Blue Sky Country),
-5933880,080000,CSD,Kamloops 1,
-5933842,080000,CSD,Lytton 9B,
-5933852,080000,CSD,Nohomeen 23,
-5933896,080000,CSD,Nekliptum 1,
-5933897,080000,CSD,Boothroyd 8A (Part),
-5933805,080000,CSD,Joeyaska 2,
-5933809,080000,CSD,Paul's Basin 2,
-5933015,080000,CSD,Lytton,
-5933865,080000,CSD,Skuppah 4,
-5933814,080000,CSD,Canoe Creek 1,
-5933821,080000,CSD,Canoe Creek 2,
-5933887,083200-085100-083300,CSD,North Thompson 1,
-5933812,080000,CSD,Bonaparte 3,
-5933876,080000,CSD,Upper Nepa 6,
-5933840,080000,CSD,Lytton 4E,
-5933861,080000,CSD,Kloklowuck 7,
-5933060,083200-085100-083300,CSD,Thompson-Nicola L,
-5933883,080000,CSD,Neskonlith 1 (Neskainlith 1),
-5933864,080000,CSD,Siska Flat 8,
-5933802,080000,CSD,Douglas Lake 3,
-5933072,083200-085100-083300,CSD,Thompson-Nicola O (Lower North Thompson),
-5933860,080000,CSD,Siska Flat 3,
-5933878,080000,CSD,Yawaucht 11,
-5933070,083200-085100-083300,CSD,Thompson-Nicola B (Thompson Headwaters),
-5933889,080000,CSD,Squaam 2,
-5933054,080000,CSD,Chase,
-5933870,080000,CSD,Nkaih 10,
-5933895,080000,CSD,Shawniken 4B,
-5933820,080000,CSD,Inkluckcheen 21,
-5933853,080000,CSD,Nuuautin 2,
-5933855,080000,CSD,Papyum 27,
-5933006,080000,CSD,Merritt,
-5933806,080000,CSD,Nicola Lake 1,
-5933801,080000,CSD,Coldwater 1,
-5933867,080000,CSD,Spences Bridge 4,
-5933829,080000,CSD,Klahkamich 17,
-5933872,080000,CSD,Marble Canyon 3,
-5933886,080000,CSD,Nekalliston 2,
-5933858,080000,CSD,Seah 5,
-5933848,080000,CSD,Nickel Palm 4,
-5933839,080000,CSD,Lytton 4A,
-5933874,080000,CSD,Tsaukan 12,
-5933868,080000,CSD,Spintlum Flat 3,
-5933826,080000,CSD,Kanaka Bar 1A,
-5933808,080000,CSD,Nooaitch 10,
-5933008,083200-085100-083300,CSD,Thompson-Nicola M,
-5933039,083200-085100-083300,CSD,Thompson-Nicola J (Copper Desert Country),
-5933024,080000,CSD,Cache Creek,
-5933844,080000,CSD,Ashcroft 4,
-5933877,080000,CSD,Whispering Pines 4,
-5933828,080000,CSD,Basque 18,
-5933837,080000,CSD,Peq-Paq 22,
-5933834,080000,CSD,Kumcheen 1,
-5933841,080000,CSD,Lytton 9A,
-5933873,080000,CSD,Stryen 9,
-5933815,080000,CSD,Halhalaeden 14A,
-5933832,080000,CSD,Klickkumcheen 18,
-5933850,080000,CSD,Nickeyeah 25,
-5933824,080000,CSD,Skuppah 2A,
-5933825,080000,CSD,Inklyuhkinatko 2,
-5933827,080000,CSD,Kanaka Bar 2,
-5933019,080000,CSD,Ashcroft,
-5933032,083200-085100-083300,CSD,Thompson-Nicola E (Bonaparte Plateau),
-5933067,080000,CSD,Clearwater,
-5933028,080000,CSD,Clinton,
-5933875,080000,CSD,Upper Hat Creek 1,
-5933044,083200-085100-083300,CSD,Thompson-Nicola P (Rivers and the Peaks),
-5933888,080000,CSD,Louis Creek 4,
-5933854,080000,CSD,Paska Island 3,
-5933857,080000,CSD,Pemynoos 9,
-5933871,080000,CSD,Spences Bridge 4C,
-5933818,080000,CSD,Halhalaeden 14,
-5933884,080000,CSD,Sahhaltkum 4,
-5933823,080000,CSD,Kitzowit 20,
-5933803,080000,CSD,Hamilton Creek 2,
-5933012,083200-085100-083300,CSD,Thompson-Nicola N,
-5933811,080000,CSD,Zoht 4,
-5933830,080000,CSD,Klahkowit 5,
-5933035,080000,CSD,Logan Lake,
-5933816,080000,CSD,Chuchhriaschin 5,
-5933831,080000,CSD,Kleetlekut 22,
-5933851,080000,CSD,Nicomen 1,
-5933859,080000,CSD,Shackan 11,
-5933885,080000,CSD,Neskonlith 2,
-5933866,080000,CSD,Skwayaynope 26,
-5933807,080000,CSD,Nicola Mameet 1,
-5933846,080000,CSD,Oregon Jack Creek 5,
-5933074,080000,CSD,Barriere,
-5935,083520,CD,Central Okanagan,
-5935016,080000,CSD,Lake Country,
-5935802,080000,CSD,Tsinstikeptum 9,
-5935010,083520,CSD,Kelowna,
-5935803,080000,CSD,Tsinstikeptum 10,
-5935029,083520,CSD,West Kelowna,
-5935020,083520,CSD,Central Okanagan J,
-5935018,080000,CSD,Peachland,
-5935012,083520,CSD,Central Okanagan,
-5935801,080000,CSD,Duck Lake 7,
-5937,083510,CD,North Okanagan,
-5937802,080000,CSD,Enderby 2,
-5937805,080000,CSD,Harris 3,
-5937014,083510,CSD,Vernon,
-5937005,080000,CSD,Lumby,
-5937801,083500,CSD,Okanagan (Part) 1,
-5937024,080000,CSD,Spallumcheen,
-5937017,083510,CSD,North Okanagan B,
-5937033,080000,CSD,Enderby,
-5937010,080000,CSD,Coldstream,
-5937022,083510,CSD,North Okanagan D,
-5937028,080000,CSD,Armstrong,
-5937803,080000,CSD,Priest's Valley 6,
-5937041,083510,CSD,North Okanagan F,
-5937021,083510,CSD,North Okanagan C,
-5937023,083510,CSD,North Okanagan E,
-5939,083600-085200-085400-085500,CD,Columbia-Shuswap,
-5939804,083500,CSD,Okanagan (Part) 1,
-5939809,080000,CSD,Switsemalph 6,
-5939019,080000,CSD,Revelstoke,
-5939023,083600-085200-085400-085500,CSD,Columbia-Shuswap B,
-5939807,080000,CSD,Scotch Creek 4,
-5939801,080000,CSD,Chum Creek 2,
-5939803,080000,CSD,North Bay 5,
-5939007,080000,CSD,Golden,
-5939044,083600-085200-085400-085500,CSD,Columbia-Shuswap F,
-5939037,083600-085200-085400-085500,CSD,Columbia-Shuswap C,
-5939032,080000,CSD,Salmon Arm,
-5939808,080000,CSD,Switsemalph 3,
-5939011,083600-085200-085400-085500,CSD,Columbia-Shuswap A,
-5939802,080000,CSD,Hustalen 1,
-5939805,080000,CSD,Quaaout 1,
-5939806,080000,CSD,Salmon River 1,
-5939810,080000,CSD,Switsemalph 7,
-5939043,083600-085200-085400-085500,CSD,Columbia-Shuswap E,
-5939039,083600-085200-085400-085500,CSD,Columbia-Shuswap D,
-5939045,080000,CSD,Sicamous,
-5941,086210-086220,CD,Cariboo,
-5941835,080000,CSD,Coglistiko River 29,
-5941881,080000,CSD,Baezaeko River 27,
-5941871,080000,CSD,Fishtrap 19,
-5941827,080000,CSD,Charley Boy's Meadow 3,
-5941818,080000,CSD,Alexis Creek 16,
-5941822,080000,CSD,Anahim's Meadow 2,
-5941810,080000,CSD,Soda Creek 1,
-5941831,080000,CSD,Tanakut 4,
-5941872,080000,CSD,Swan Lake 3,
-5941807,080000,CSD,Dog Creek 2,
-5941864,080000,CSD,Sundayman's Meadow 3,
-5941010,086210-086220,CSD,Cariboo D,
-5941834,080000,CSD,Louis Squinas Ranch 14,
-5941852,080000,CSD,Trout Lake Alec 16,
-5941837,080000,CSD,Nazco 20,
-5941821,080000,CSD,Anahim's Flat 1,
-5941841,080000,CSD,Stone 1,
-5941832,080000,CSD,Garden 2A,
-5941808,080000,CSD,Lohbiee 3,
-5941850,080000,CSD,Toosey 1,
-5941868,080000,CSD,Sandy Harry 4,
-5941803,080000,CSD,Canim Lake 4,
-5941861,080000,CSD,Betty Creek 18,
-5941801,080000,CSD,Alkali Lake 1,
-5941858,080000,CSD,Cahoose 10,
-5941854,080000,CSD,Ulkatcho 13,
-5941846,080000,CSD,Toby's Meadow 4,
-5941014,086210-086220,CSD,Cariboo F,
-5941815,080000,CSD,Alexandria 1,
-5941849,080000,CSD,Baptiste Meadow 2,
-5941813,080000,CSD,Canim Lake 2,
-5941005,080000,CSD,One Hundred Mile House,
-5941880,080000,CSD,Ulkatcho 14A,
-5941811,080000,CSD,Johny Sticks 2,
-5941865,080000,CSD,Tatelkus Lake 28,
-5941866,080000,CSD,Euchinico Creek 17,
-5941856,080000,CSD,Alexis Creek 34,
-5941019,086210-086220,CSD,Cariboo A,
-5941820,080000,CSD,Alexis Creek 25,
-5941819,080000,CSD,Alexis Creek 24,
-5941009,086220,CSD,Williams Lake,
-5941812,086220,CSD,Williams Lake 1,
-5941874,080000,CSD,Little Springs 8,
-5941855,080000,CSD,Windy Mouth 7,
-5941806,080000,CSD,Dog Creek 1,
-5941017,086210-086220,CSD,Cariboo L,
-5941860,080000,CSD,Cahoose 12,
-5941840,080000,CSD,Squinas 2,
-5941026,086210-086220,CSD,Cariboo C,
-5941870,080000,CSD,Alexandria 1A,
-5941823,080000,CSD,Anahim's Meadow 2A,
-5941876,080000,CSD,Lezbye 6,
-5941804,080000,CSD,Canoe Creek 3,
-5941802,080000,CSD,Canim Lake 1,
-5941027,086210-086220,CSD,Cariboo I,
-5941859,080000,CSD,Blackwater Meadow 11,
-5941845,080000,CSD,Thomas Squinas Ranch 2A,
-5941851,080000,CSD,Towdystan Lake 3,
-5941843,080000,CSD,Seymour Meadows 19,
-5941844,080000,CSD,Agats Meadow 8,
-5941012,086210-086220,CSD,Cariboo E,
-5941830,080000,CSD,Garden 2,
-5941015,086210-086220,CSD,Cariboo G,
-5941875,080000,CSD,Little Springs 18,
-5941809,086210,CSD,Quesnel 1,
-5941863,080000,CSD,Tzetzi Lake 11,
-5941833,080000,CSD,Kluskus 1,
-5941847,080000,CSD,Alexis Creek 6,
-5941879,080000,CSD,Michel Gardens 36,
-5941816,080000,CSD,Alexandria 3,
-5941873,080000,CSD,Alkali Lake 4A,
-5941039,086210-086220,CSD,Cariboo J,
-5941862,080000,CSD,Salmon River Meadow 7,
-5941021,086210-086220,CSD,Cariboo B,
-5941013,086210,CSD,Quesnel,
-5941041,086210-086220,CSD,Cariboo K,
-5941817,080000,CSD,Alexis Creek 14,
-5941838,080000,CSD,Puntzi Lake 2,
-5941839,080000,CSD,Redstone Flat 1,
-5941805,080000,CSD,Deep Creek 2,
-5941829,080000,CSD,Chilco Lake 1A,
-5941016,086210-086220,CSD,Cariboo H,
-5941025,080000,CSD,Wells,
-5941814,080000,CSD,Alexandria 3A,
-5941828,080000,CSD,Chilco Lake 1,
-5941842,080000,CSD,Alexis Creek 17,
-5941848,080000,CSD,Alexis Creek 21,
-5943,080000,CD,Mount Waddington,
-5943023,080000,CSD,Port Hardy,
-5943017,080000,CSD,Port Alice,
-5943801,080000,CSD,Alert Bay 1,
-5943008,080000,CSD,Alert Bay,
-5943807,080000,CSD,Dead Point 5,
-5943836,080000,CSD,Hope Island 1,
-5943809,080000,CSD,Hopetown 10A,
-5943802,080000,CSD,Alert Bay 1A,
-5943817,080000,CSD,Thomas Point 5,
-5943012,080000,CSD,Port McNeill,
-5943033,080000,CSD,Mount Waddington D,
-5943031,080000,CSD,Mount Waddington C,
-5943808,080000,CSD,Gwayasdums 1,
-5943806,080000,CSD,Tsulquate 4,
-5943813,080000,CSD,Quaee 7,
-5943037,080000,CSD,Mount Waddington A,
-5943027,080000,CSD,Mount Waddington B,
-5943804,080000,CSD,Fort Rupert 1,
-5943815,080000,CSD,Kippase 2,
-5943816,080000,CSD,Quatsino Subdivision 18,
-5945,082100-082200,CD,Central Coast,
-5945012,082100-082200,CSD,Central Coast D,
-5945006,082100-082200,CSD,Central Coast A,
-5945802,080000,CSD,Bella Coola 1,
-5945801,080000,CSD,Bella Bella 1,
-5945014,082100-082200,CSD,Central Coast E,
-5945803,080000,CSD,Katit 1,
-5945010,082100-082200,CSD,Central Coast C,
-5947,080000,CD,Skeena-Queen Charlotte,
-5947809,080000,CSD,Lax Kw'alaams 1,
-5947810,080000,CSD,S1/2 Tsimpsean 2,
-5947021,080000,CSD,Skeena-Queen Charlotte C,
-5947030,080000,CSD,Port Clements,
-5947027,080000,CSD,Skeena-Queen Charlotte D,
-5947007,080000,CSD,Port Edward,
-5947807,080000,CSD,Dolphin Island 1,
-5947023,080000,CSD,Masset,
-5947012,080000,CSD,Prince Rupert,
-5947026,080000,CSD,Queen Charlotte,
-5947032,080000,CSD,Skeena-Queen Charlotte E,
-5947806,080000,CSD,Kulkayu (Hartley Bay) 4,
-5947016,080000,CSD,Skeena-Queen Charlotte A,
-5947803,080000,CSD,Masset 1,
-5947804,080000,CSD,Skidegate 1,
-5949,080000,CD,Kitimat-Stikine,
-5949845,089300,CSD,Dease Lake 9,
-5949840,080000,CSD,Laxgalts'ap,
-5949024,080000,CSD,New Hazelton,
-5949804,080000,CSD,Kitsumkaylum 1,
-5949020,080000,CSD,Kitimat-Stikine C (Part 2),
-5949830,080000,CSD,Kluachon Lake 1,
-5949032,080000,CSD,Stewart,
-5949844,080000,CSD,Kitselas 1,
-5949842,080000,CSD,Gingolx,
-5949838,080000,CSD,Gitwinksihlkw,
-5949811,080000,CSD,Hagwilget 1,
-5949807,080000,CSD,Kulspai 6,
-5949826,080000,CSD,Telegraph Creek 6,
-5949846,080000,CSD,Tahltan 1,
-5949013,080000,CSD,Kitimat-Stikine C (Part 1),
-5949812,080000,CSD,Gitanmaax 1,
-5949028,080000,CSD,Kitimat-Stikine B,
-5949041,080000,CSD,Kitimat-Stikine D,
-5949832,080000,CSD,Iskut 6,
-5949022,080000,CSD,Hazelton,
-5949817,080000,CSD,Moricetown 1,
-5949816,080000,CSD,Gitwangak 1,
-5949802,080000,CSD,Kitasoo 1,
-5949843,080000,CSD,Guhthe Tah 12,
-5949815,080000,CSD,Gitanyow 1,
-5949820,087110-087120,CSD,Bulkley River 19,
-5949805,080000,CSD,Kshish 4,
-5949039,080000,CSD,Kitimat-Stikine A,
-5949035,080000,CSD,Nisga'a,
-5949818,080000,CSD,Sik-e-dakh 2,
-5949810,080000,CSD,Coryatsaqua (Moricetown) 2,
-5949005,080000,CSD,Kitimat,
-5949018,080000,CSD,Kitimat-Stikine E,
-5949011,080000,CSD,Terrace,
-5949803,080000,CSD,Kitamaat 2,
-5949038,080000,CSD,Kitimat-Stikine F,
-5949827,080000,CSD,Telegraph Creek 6A,
-5949836,080000,CSD,Aiyansh (Kitladamas) 1,
-5949834,080000,CSD,New Aiyansh,
-5949814,080000,CSD,Gitsegukla 1,
-5949819,080000,CSD,Babine 17,
-5949813,080000,CSD,Kispiox 1,
-5951,087110-087120,CD,Bulkley-Nechako,
-5951053,087110-087120,CSD,Bulkley-Nechako G,
-5951051,087110-087120,CSD,Bulkley-Nechako A,
-5951845,080000,CSD,Tadinlay 15,
-5951034,080000,CSD,Houston,
-5951805,080000,CSD,Binche 2 (Pinchie 2),
-5951013,080000,CSD,Fort St. James,
-5951009,080000,CSD,Fraser Lake,
-5951032,080000,CSD,Granisle,
-5951043,087110,CSD,Smithers,
-5951801,080000,CSD,Ye Koo Che 3,
-5951815,087120,CSD,Burns Lake 18,
-5951818,080000,CSD,Cheslatta 1,
-5951804,080000,CSD,Sowchea 3,
-5951007,080000,CSD,Vanderhoof,
-5951015,087110-087120,CSD,Bulkley-Nechako C,
-5951830,080000,CSD,Jean Baptiste 28,
-5951031,087110-087120,CSD,Bulkley-Nechako E,
-5951812,080000,CSD,North Tacla Lake 7,
-5951846,080000,CSD,Nedoats 11,
-5951814,080000,CSD,Dzitline Lee 9,
-5951824,080000,CSD,Skins Lake 16B,
-5951019,087110-087120,CSD,Bulkley-Nechako F,
-5951822,080000,CSD,Francois Lake 7,
-5951823,080000,CSD,Skins Lake 16A,
-5951819,080000,CSD,Omineca 1,
-5951840,080000,CSD,Williams Prairie Meadow 1A,
-5951833,080000,CSD,Tatla't East 2,
-5951803,080000,CSD,Nak'azdli (Necoslie 1),
-5951841,080000,CSD,North Tacla Lake 7A,
-5951811,080000,CSD,Tacla Lake (Ferry Landing) 9,
-5951821,080000,CSD,Duncan Lake 2,
-5951847,080000,CSD,Babine Lake 21B,
-5951810,080000,CSD,Tache 1,
-5951825,080000,CSD,Tatla West 11,
-5951022,087120,CSD,Burns Lake,
-5951826,080000,CSD,Uncha Lake 13A,
-5951813,080000,CSD,Laketown 3,
-5951038,080000,CSD,Telkwa,
-5951844,080000,CSD,Poison Creek 17A,
-5951809,080000,CSD,Stony Creek 1,
-5951828,080000,CSD,Babine 6,
-5951820,080000,CSD,Palling 1,
-5951827,080000,CSD,Woyenne 27,
-5951829,080000,CSD,Babine 25,
-5951028,087110-087120,CSD,Bulkley-Nechako B,
-5951017,087110-087120,CSD,Bulkley-Nechako D,
-5951806,080000,CSD,Seaspunkut 4,
-5951802,080000,CSD,Nautley (Fort Fraser) 1,
-5951807,080000,CSD,Stellaquo (Stella) 1,
-5953,080000,CD,Fraser-Fort George,
-5953044,080000,CSD,Fraser-Fort George D,
-5953019,080000,CSD,Fraser-Fort George H,
-5953042,080000,CSD,Fraser-Fort George C,
-5953007,080000,CSD,Valemount,
-5953023,087400,CSD,Prince George,
-5953012,080000,CSD,McBride,
-5953050,080000,CSD,Fraser-Fort George G,
-5953033,080000,CSD,Mackenzie,
-5953048,080000,CSD,Fraser-Fort George F,
-5953801,080000,CSD,Fort George (Shelley) 2,
-5953046,080000,CSD,Fraser-Fort George E,
-5953038,080000,CSD,Fraser-Fort George A,
-5953802,080000,CSD,McLeod Lake 1,
-5955,087310-087320,CD,Peace River,
-5955034,080000,CSD,Fort St. John,
-5955812,080000,CSD,Ingenika Point,
-5955005,080000,CSD,Pouce Coupe,
-5955040,087310-087320,CSD,Peace River B,
-5955807,080000,CSD,Fort Ware 1,
-5955808,080000,CSD,Halfway River 168,
-5955010,080000,CSD,Chetwynd,
-5955014,080000,CSD,Dawson Creek,
-5955042,087310-087320,CSD,Peace River C,
-5955802,080000,CSD,West Moberly Lake 168A,
-5955803,080000,CSD,Blueberry River 205,
-5955804,080000,CSD,Doig River 206,
-5955003,080000,CSD,Tumbler Ridge,
-5955023,087310-087320,CSD,Peace River E,
-5955025,080000,CSD,Hudson's Hope,
-5955021,087310-087320,CSD,Peace River D,
-5955801,080000,CSD,East Moberly Lake 169,
-5955030,080000,CSD,Taylor,
-5957,080000,CD,Stikine,
-5957814,080000,CSD,Liard River 3,
-5957022,080000,CSD,Stikine Region,
-5957802,080000,CSD,Unnamed 10,
-5957813,080000,CSD,Lower Post,
-5957804,080000,CSD,Good Hope Lake,
-5957803,080000,CSD,Five Mile Point 3,
-5959,080000,CD,Northern Rockies,
-5959810,080000,CSD,Prophet River 4,
-5959805,080000,CSD,Fontas 1,
-5959806,088100,CSD,Fort Nelson 2,
-5959809,080000,CSD,Kahntah 3,
-5959007,080000,CSD,Northern Rockies,
-48,070000,PT,Alberta,
-4801,074200,CD,Division No. 1,
-4801018,074242,CSD,Redcliff,
-4801009,074310,CSD,Foremost,
-4801003,074211-074212-074241-074242-074251-074252-074253-074261-074262-074340-074360,CSD,Cypress County,
-4801008,073350-074280-074310-074320-074330-074350,CSD,Forty Mile County No. 8,
-4801006,074270,CSD,Medicine Hat,
-4801014,074280,CSD,Bow Island,
-4802,073300,CD,Division No. 2,
-4802032,074232,CSD,Tilley,
-4802011,073311-073312-073313,CSD,Lethbridge County,
-4802008,070000,CSD,Raymond,
-4802016,073311,CSD,Barons,
-4802018,073312,CSD,Picture Butte,
-4802006,073341,CSD,Warner,
-4802002,073342,CSD,Coutts,
-4802036,072653,CSD,Duchess,
-4802034,072600,CSD,Brooks,
-4802012,073314,CSD,Lethbridge,
-4802014,073311,CSD,Nobleford,
-4802013,073311,CSD,Coalhurst,
-4802001,073331-073332-073341-073342-073343,CSD,Warner County No. 5,
-4802029,073321,CSD,Vauxhall,
-4802031,072651-072652-072653-072654-074231-074232,CSD,Newell County No. 4,
-4802004,073342,CSD,Milk River,
-4802038,072653,CSD,Rosemary,
-4802023,073322,CSD,Barnwell,
-4802022,073321-073322-073323,CSD,Taber,
-4802039,072651,CSD,Bassano,
-4802009,072240,CSD,Stirling,
-4802019,073313,CSD,Coaldale,
-4802021,073321-073322-073323,CSD,Taber,
-4803,072500,CD,Division No. 3,
-4803011,073150-073160,CSD,Pincher Creek No. 9,
-4803003,073170,CSD,Improvement District No. 4 Waterton,
-4803801,073130,CSD,Piikani 147,
-4803022,072542,CSD,Claresholm,
-4803004,073242,CSD,Cardston,
-4803021,073211,CSD,Granum,
-4803019,073212,CSD,Fort Macleod,
-4803026,072541,CSD,Nanton,
-4803803,073170-073221,CSD,Blood 148A,
-4803024,072542,CSD,Stavely,
-4803008,073222,CSD,Hill Spring,
-4803002,073222,CSD,Magrath,
-4803006,073222,CSD,Glenwood,
-4803014,073160,CSD,Pincher Creek,
-4803001,073222-073231-073232-073241-073242,CSD,Cardston County,
-4803016,073120,CSD,Cowley,
-4803802,073170-073221,CSD,Blood 148,
-4803018,072541-072542-073211-073212,CSD,Willow Creek No. 26,
-4804,074100,CD,Division No. 4,
-4804014,074144,CSD,Oyen,
-4804001,074160,CSD,Acadia No. 34,
-4804006,074224,CSD,Empress,
-4804016,074144,CSD,Cereal,
-4804020,070000,CSD,Special Area No. 4,
-4804021,074131,CSD,Veteran,
-4804011,074122,CSD,Hanna,
-4804022,074131,CSD,Consort,
-4804012,070000,CSD,Special Area No. 3,
-4804019,074141,CSD,Youngstown,
-4804004,070000,CSD,Special Area No. 2,
-4805,072600,CD,Division No. 5,
-4805021,072632,CSD,Standard,
-4805004,072643,CSD,Champion,
-4805009,072645,CSD,Milo,
-4805802,072633,CSD,Siksika 146,
-4805042,072322,CSD,Carbon,
-4805022,072341,CSD,Rockyford,
-4805012,072341-072342-072631-072632-072634,CSD,Wheatland County,
-4805044,072321,CSD,Acme,
-4805026,072350,CSD,Drumheller,
-4805001,072641-072642-072643-072644-072645,CSD,Vulcan County,
-4805006,072642,CSD,Vulcan,
-4805011,072641,CSD,Arrowwood,
-4805002,072643,CSD,Carmangay,
-4805008,072644,CSD,Lomond,
-4805019,072634,CSD,Hussar,
-4805018,072631,CSD,Strathmore,
-4805046,072321,CSD,Linden,
-4805048,072313,CSD,Three Hills,
-4805036,072332,CSD,Munson,
-4805049,070000,CSD,Trochu,
-4805034,072333,CSD,Delia,
-4805038,072332,CSD,Morrin,
-4805041,072311-072312-072313-072321-072322,CSD,Kneehill County,
-4805031,072331-072332-072333,CSD,Starland County,
-4806,072400,CD,Division No. 6,
-4806014,072250-072260-072270-072360-072510-072610,CSD,Rocky View County,
-4806804,072510,CSD,Tsuu T'ina Nation 145 (Sarcee 145),
-4806019,072270,CSD,Cochrane,
-4806017,072610,CSD,Chestermere,
-4806803,072523,CSD,Eden Valley 216,
-4806006,072532,CSD,High River,
-4806001,072521-072522-072523-072531-072532-072533-072620,CSD,Foothills No. 31,
-4806011,072522,CSD,Black Diamond,
-4806021,072250,CSD,Airdrie,
-4806012,072531,CSD,Okotoks,
-4806009,072522,CSD,Turner Valley,
-4806022,072360,CSD,Irricana,
-4806026,072250,CSD,Crossfield,
-4806008,072523,CSD,Longview,
-4806016,072400,CSD,Calgary,
-4806024,072360,CSD,Beiseker,
-4806031,072230,CSD,Cremona,
-4806036,072210,CSD,Sundre,
-4806034,072220,CSD,Olds,
-4806029,072240,CSD,Carstairs,
-4806032,072220,CSD,Didsbury,
-4806028,072210-072220-072230-072240,CSD,Mountain View County,
-4807,075200,CD,Division No. 7,
-4807006,075281,CSD,Hughenden,
-4807052,075273,CSD,Edgerton,
-4807048,075242,CSD,Hardisty,
-4807044,075241,CSD,Sedgewick,
-4807038,076660,CSD,Heisler,
-4807036,072160,CSD,Forestburg,
-4807001,075281-075282-075283,CSD,Provost No. 52,
-4807008,075281,CSD,Amisk,
-4807046,075242,CSD,Lougheed,
-4807034,072160,CSD,Galahad,
-4807012,074113,CSD,Coronation,
-4807026,072131-072132-072133-072134-072135,CSD,Stettler,
-4807004,075282,CSD,Czar,
-4807042,075241,CSD,Killam,
-4807032,075243,CSD,Alliance,
-4807029,072133,CSD,Donalda,
-4807022,072134,CSD,Gadsby,
-4807014,074111,CSD,Castor,
-4807011,074111-074112-074113,CSD,Paintearth County No. 18,
-4807021,072132,CSD,Big Valley,
-4807051,075274,CSD,Chauvin,
-4807039,076660,CSD,Daysland,
-4807027,070000,CSD,White Sands,
-4807041,076660,CSD,Strome,
-4807054,075272,CSD,Wainwright,
-4807002,075283,CSD,Provost,
-4807016,072150,CSD,Halkirk,
-4807028,072131,CSD,Rochon Sands,
-4807024,072134,CSD,Botha,
-4807031,072160-075241-075242-075243-076660,CSD,Flagstaff County,
-4807019,072131-072132-072133-072134-072135,CSD,Stettler County No. 6,
-4807056,075271,CSD,Irma,
-4807049,075271-075272-075273-075274,CSD,Wainwright No. 61,
-4808,072100,CD,Division No. 8,
-4808042,072541,CSD,Parkland Beach,
-4808012,072121,CSD,Sylvan Lake,
-4808004,072125,CSD,Delburne,
-4808032,072113,CSD,Clive,
-4808013,070000,CSD,Norglenwold,
-4808008,072100,CSD,Innisfail,
-4808026,072112,CSD,Bentley,
-4808023,070000,CSD,Birchcliff,
-4808028,070000,CSD,Gull Lake,
-4808029,072112,CSD,Blackfalds,
-4808027,070000,CSD,Sunbreaker Cove,
-4808024,072111,CSD,Eckville,
-4808031,072111-072112-072113,CSD,Lacombe,
-4808011,072140,CSD,Red Deer,
-4808034,070000,CSD,Alix,
-4808038,072180-076560-076570,CSD,Ponoka County,
-4808813,070000,CSD,Montana 139,
-4808001,072121-072122-072123-072124-072125,CSD,Red Deer County,
-4808022,072111-072112-072113,CSD,Lacombe County,
-4808812,070000,CSD,Samson 137A,
-4808006,072123,CSD,Bowden,
-4808811,070000,CSD,Samson 137,
-4808039,072180,CSD,Ponoka,
-4808025,070000,CSD,Half Moon Bay,
-4808005,070000,CSD,Jarvis Bay,
-4808002,072125,CSD,Elnora,
-4808044,076560,CSD,Rimbey,
-4808009,072123,CSD,Penhold,
-4809,071300,CD,Division No. 9,
-4809809,071330,CSD,Sunchild 202,
-4809005,070000,CSD,Burnstick Lake,
-4809010,071360,CSD,Caroline,
-4809015,071350,CSD,Rocky Mountain House,
-4809806,071330,CSD,O'Chiese 203,
-4809810,071230,CSD,Big Horn 144A,
-4809002,071220-071230-071240-071330-071350-071360-071410,CSD,Clearwater County,
-4810,075200,CD,Division No. 10,
-4810021,076642,CSD,Holden,
-4810031,075221,CSD,Innisfree,
-4810016,075230-076641-076642,CSD,Beaver County,
-4810038,070000,CSD,Paradise Valley,
-4810002,072170,CSD,Bashaw,
-4810034,075222,CSD,Mannville,
-4810003,076654,CSD,Rosalind,
-4810018,076641,CSD,Tofield,
-4810061,076333,CSD,Mundare,
-4810011,072170-076652,CSD,Camrose,
-4810059,076332,CSD,Andrew,
-4810056,076350,CSD,Willingdon,
-4810012,076652,CSD,Bittern Lake,
-4810001,072170-076651-076652-076653-076654,CSD,Camrose County,
-4810004,076653,CSD,Ferintosh,
-4810051,075212,CSD,Myrnam,
-4810041,075255,CSD,Kitscoty,
-4810046,075253,CSD,Dewberry,
-4810028,076380,CSD,Vegreville,
-4810039,075260,CSD,Lloydminster (Part),
-4810019,076642,CSD,Ryley,
-4810032,075222,CSD,Minburn,
-4810036,075251-075252-075253-075254-075255-075256,CSD,Vermilion River County,
-4810042,075251,CSD,Vermilion,
-4810062,076333,CSD,Chipman,
-4810044,075255,CSD,Marwayne,
-4810058,076331-076332-076333,CSD,Lamont County,
-4810006,076653,CSD,Edberg,
-4810008,076653,CSD,New Norway,
-4810048,075211-075212-076350,CSD,Two Hills County No. 21,
-4810066,076331,CSD,Bruderheim,
-4810805,070000,CSD,Makaoo (Part) 120,
-4810052,075211,CSD,Two Hills,
-4810026,075221-075222-076380,CSD,Minburn County No. 27,
-4810022,075230,CSD,Viking,
-4810014,076651,CSD,Hay Lakes,
-4810064,076331,CSD,Lamont,
-4810068,076370,CSD,Improvement District No. 13 Elk Island,
-4810009,076654,CSD,Bawlf,
-4811,076400,CD,Division No. 11,
-4811052,076400,CSD,Sherwood Park,
-4811023,070000,CSD,Golden Days,
-4811042,070000,CSD,Lakeview,
-4811056,076360,CSD,Fort Saskatchewan,
-4811002,076620,CSD,Wetaskiwin,
-4811059,076241-076242-076243-076321-076322,CSD,Sturgeon County,
-4811024,076510,CSD,Warburg,
-4811803,070000,CSD,Louis Bull 138B,
-4811805,070000,CSD,Alexander 134,
-4811048,076233,CSD,Stony Plain,
-4811011,076620,CSD,Millet,
-4811804,076233,CSD,Stony Plain 135,
-4811013,076611,CSD,Beaumont,
-4811032,071310-071340-076530,CSD,Brazeau County,
-4811065,076321,CSD,Redwater,
-4811018,076520,CSD,Devon,
-4811068,076243,CSD,Morinville,
-4811066,076321,CSD,Bon Accord,
-4811016,076611,CSD,Leduc,
-4811034,072541-076231-076232-076233,CSD,Parkland County,
-4811039,070000,CSD,Betula Beach,
-4811031,076530,CSD,Drayton Valley,
-4811806,076232,CSD,Wabamun 133A,
-4811026,076530,CSD,Breton,
-4811003,070000,CSD,Argentia Beach,
-4811007,070000,CSD,Norris Beach,
-4811001,076540-076550-076620,CSD,Wetaskiwin County No. 10,
-4811006,070000,CSD,Crystal Springs,
-4811064,076321,CSD,Gibbons,
-4811009,070000,CSD,Silver Beach,
-4811061,076400,CSD,Edmonton,
-4811008,070000,CSD,Ma-Me-O Beach,
-4811022,070000,CSD,Itaska Beach,
-4811045,076232,CSD,Wabamun,
-4811044,070000,CSD,Kapasiwin,
-4811019,076520,CSD,Calmar,
-4811801,070000,CSD,Ermineskin 138,
-4811046,070000,CSD,Spring Lake,
-4811004,070000,CSD,Grandview,
-4811052,076360-076630,CSD,Strathcona County,
-4811038,070000,CSD,Seba Beach,
-4811041,070000,CSD,Point Alison,
-4811062,076400,CSD,St. Albert,
-4811020,070000,CSD,Sundance Beach,
-4811005,070000,CSD,Poplar Bay,
-4811802,076510-076540,CSD,Pigeon Lake 138A,
-4811021,076510,CSD,Thorsby,
-4811069,076242,CSD,Legal,
-4811012,076510-076520-076611-076612,CSD,Leduc County,
-4811049,076233,CSD,Spruce Grove,
-4811807,076232,CSD,Wabamun 133B,
-4812,075100,CD,Division No. 12,
-4812020,070000,CSD,Horseshoe Bay,
-4812806,070000,CSD,Saddle Lake 125,
-4812016,075133,CSD,Elk Point,
-4812815,075116-075144,CSD,Cold Lake 149B,
-4812004,075141-075142-075143-075144-075145-075146,CSD,Bonnyville No. 87,
-4812024,075122,CSD,Vilna,
-4812009,075143,CSD,Bonnyville,
-4812012,075142,CSD,Glendon,
-4812810,075116-075144,CSD,Cold Lake 149,
-4812811,075143,CSD,Kehewin 123,
-4812813,075116-075144,CSD,Cold Lake 149A,
-4812011,075141-075142-075143-075144-075145-075146,CSD,Bonnyville Beach,
-4812840,075112,CSD,Heart Lake 167,
-4812026,076340,CSD,Waskatenau,
-4812018,075132,CSD,St. Paul,
-4812014,075131-075132-075133-075134,CSD,St. Paul County No. 19,
-4812804,070000,CSD,Puskiakiwenin 122,
-4812029,076340,CSD,Smoky Lake,
-4812037,075111-075112-075113-075114-075115-075116-079241,CSD,Lac la Biche County,
-4812037,070000,CSD,Improvement District No. 349,
-4812828,070000,CSD,Beaver Lake 131,
-4812802,070000,CSD,Unipouheos 121,
-4812808,070000,CSD,White Fish Lake 128,
-4812022,075121-075122-076340,CSD,Smoky Lake County,
-4812002,075116-075144,CSD,Cold Lake,
-4812013,070000,CSD,Pelican Narrows,
-4812022,075121,CSD,Buffalo Lake Metis Settlement,
-4812022,075121,CSD,Kikino Metis Settlement,
-4812004,070000,CSD,Elizabeth Metis Settlement,
-4812004,075146,CSD,Fishing Lake Metis Settlement,
-4813,077400,CD,Division No. 13,
-4813047,070000,CSD,Sunset Beach,
-4813005,070000,CSD,Val Quentin,
-4813036,076160-076310,CSD,Thorhild County No. 7,
-4813019,076123,CSD,Barrhead,
-4813002,076221,CSD,Mayerthorpe,
-4813030,077434,CSD,Whitecourt,
-4813044,076151-076152-076153-076154-077340,CSD,Athabasca County,
-4813008,070000,CSD,Ross Haven,
-4813031,076142,CSD,Westlock,
-4813051,070000,CSD,Island Lake South,
-4813028,076141-076142,CSD,Westlock County,
-4813009,070000,CSD,Castle Island,
-4813015,070000,CSD,South View,
-4813016,070000,CSD,Sandy Beach,
-4813013,070000,CSD,Birch Cove,
-4813014,076223,CSD,Onoway,
-4813006,070000,CSD,West Cove,
-4813029,076110-077431-077432-077433-077434,CSD,Woodlands County,
-4813055,070000,CSD,South Baptiste,
-4813011,070000,CSD,Sunset Point,
-4813046,076154,CSD,Boyle,
-4813018,076121-076122-076123,CSD,Barrhead County No. 11,
-4813061,070000,CSD,Whispering Hills,
-4813811,070000,CSD,Alexis 133,
-4813001,076221-076222-076223,CSD,Lac Ste. Anne County,
-4813045,070000,CSD,Mewatha Beach,
-4813003,070000,CSD,Nakamun Park,
-4813048,076151,CSD,Athabasca,
-4813032,076142,CSD,Clyde,
-4813033,070000,CSD,Larkspur,
-4813017,070000,CSD,Sunrise Beach,
-4813057,070000,CSD,West Baptiste,
-4813012,070000,CSD,Alberta Beach,
-4813010,070000,CSD,Silver Sands,
-4813049,076151,CSD,Island Lake,
-4813007,070000,CSD,Yellowstone,
-4813053,070000,CSD,Bondiss,
-4814,077200,CD,Division No. 14,
-4814028,077250,CSD,Improvement District No. 25 Willmore Wilderness,
-4814024,077421,CSD,Edson,
-4814003,071210-071320-076210-077230-077240-077260-077421-077422,CSD,Yellowhead County,
-4814019,077260,CSD,Hinton,
-4815,071500,CD,Division No. 15,
-4815027,071520,CSD,Ghost Lake,
-4815007,073140,CSD,Crowsnest Pass,
-4815045,073110,CSD,Ranchland No. 66,
-4815035,071400-071420-071430-071440,CSD,Banff,
-4815802,070000,CSD,"Stoney 142, 143, 144",
-4815013,071530-071540,CSD,Kananaskis,
-4815023,071520,CSD,Canmore,
-4815030,070000,CSD,Waiparous,
-4815033,071100,CSD,Jasper,
-4815037,071100,CSD,Improvement District No. 12 Jasper Park,
-4815032,071400-071420-071430-071440,CSD,Improvement District No. 9 Banff,
-4815015,071510-071520,CSD,Bighorn No. 8,
-4816,079200,CD,Division No. 16,
-4816037,079221,CSD,Fort McMurray,
-4816856,079210,CSD,Fort Mackay,
-4816857,079121,CSD,Namur River 174A,
-4816821,070000,CSD,Gregoire Lake 176,
-4816831,079133,CSD,Chipewyan 201A,
-4816051,079121-079122-079123-079131-079132-079133-079210-079221-079222-079223-079231-079232-079242-079243,CSD,Improvement District No. 24 Wood Buffalo,
-4816849,070000,CSD,Old Fort 217,
-4816037,079111-079112-079113-079114,CSD,Wood Buffalo,
-4816817,079243,CSD,Janvier 194,
-4816822,070000,CSD,Gregoire Lake 176A,
-4816860,070000,CSD,Thebathi 196,
-4816858,079121,CSD,Namur Lake 174B,
-4816856,070000,CSD,Fort McKay 174,
-4816850,070000,CSD,Allison Bay 219,
-4816855,070000,CSD,Charles Lake 225,
-4816852,070000,CSD,Dog Head 218,
-4816861,070000,CSD,Thabacha Náre 196A,
-4817,077300,CD,Division No. 17,
-4817027,076243-077311-077312-077313-077440-078280-078320,CSD,Big Lakes,
-4817031,077330-078331-078332-078333-078334,CSD,Opportunity No. 17,
-4817833,070000,CSD,Sawridge 150H,
-4817856,070000,CSD,Woodland Cree 226,
-4817860,078332,CSD,Loon Lake 235,
-4817039,078262,CSD,Nampa,
-4817838,070000,CSD,Tall Cree 173,
-4817033,076130-077321-077322-077323,CSD,Lesser Slave River No.124,
-4817855,078333,CSD,Desmarais,
-4817817,070000,CSD,Jean Baptiste Gambler 183,
-4817848,078116,CSD,Bushe River 207,
-4817830,070000,CSD,Kapawe'no First Nation (Pakashan 150D),
-4817078,078241,CSD,Manning,
-4817858,070000,CSD,Kapawe'no First Nation (Grouard 230),
-4817841,070000,CSD,Beaver Ranch 163,
-4817076,078241-078242,CSD,Northern Lights County,
-4817821,078333,CSD,Wabasca 166B,
-4817842,070000,CSD,Boyer 164,
-4817840,070000,CSD,Tall Cree 173A,
-4817062,078211-078212-078213,CSD,Clear Hills,
-4817093,078116,CSD,High Level,
-4817029,077321,CSD,Slave Lake,
-4817823,078333,CSD,Wabasca 166D,
-4817843,070000,CSD,Child Lake 164A,
-4817824,078313,CSD,Utikoomak Lake 155,
-4817835,078133,CSD,Fox Lake 162,
-4817828,077313,CSD,Drift Pile River 150,
-4817837,078133,CSD,John d'Or Prairie 215,
-4817857,070000,CSD,Woodland Cree 228,
-4817097,078112,CSD,Rainbow Lake,
-4817064,078213,CSD,Hines Creek,
-4817832,070000,CSD,Sawridge 150G,
-4817849,070000,CSD,Upper Hay River 212,
-4817845,070000,CSD,Hay Lake 209,
-4817021,078280,CSD,High Prairie,
-4817026,078261-078262-078311-078312-078313,CSD,Northern Sunrise County,
-4817829,070000,CSD,Sucker Creek 150A,
-4817825,078211-078212-078213,CSD,Clear Hills 152C,
-4817852,070000,CSD,Kapawe'no First Nation (Halcro 150C),
-4817836,070000,CSD,Kapawe'no First Nation (Freeman 150B),
-4817819,078333,CSD,Wabasca 166A,
-4817853,070000,CSD,Little Buffalo,
-4817024,077440,CSD,Swan Hills,
-4817095,078111-078112-078113-078114-078115-078116-078131-078132-078133-078134-078135,CSD,Mackenzie County,
-4817827,078313,CSD,Utikoomak Lake 155A,
-4817831,077440,CSD,Swan River 150E,
-4817818,078333,CSD,Wabasca 166,
-4817822,078333,CSD,Wabasca 166C,
-4817859,078132,CSD,Fort Vermilion 173B,
-4817854,070000,CSD,Carcajou 187,
-4817027,078320,CSD,Peavine Metis Settlement,
-4817027,078320,CSD,Gift Lake Metis Settlement,
-4817076,078120,CSD,Paddle Prairie Metis Settlement,
-4817027,070000,CSD,East Prairie Metis Settlement,
-4818,077200,CD,Division No. 18,
-4818002,077410,CSD,Fox Creek,
-4818015,077121-077122-077123-077124-077125-077126-077210-077220-077410,CSD,Greenview No. 16,
-4818005,077210,CSD,Grande Cache,
-4818818,077125,CSD,Sturgeon Lake 154A,
-4818816,077125,CSD,Sturgeon Lake 154,
-4818018,077126,CSD,Valleyview,
-4819,077100,CD,Division No. 19,
-4819826,070000,CSD,Duncan's 151A,
-4819066,078232,CSD,Fairview No. 136,
-4819038,078210-078220-078262,CSD,Peace River,
-4819042,078270,CSD,McLennan,
-4819044,070000,CSD,Donnelly,
-4819071,078233,CSD,Peace No. 135,
-4819058,078231,CSD,Spirit River,
-4819068,078232,CSD,Fairview,
-4819012,077113,CSD,Grande Prairie,
-4819072,070000,CSD,Berwyn,
-4819054,078231,CSD,Spirit River No. 133,
-4819059,078221-078222-078223,CSD,Saddle Hills County,
-4819046,078270,CSD,Falher,
-4819008,077111,CSD,Hythe,
-4819009,077111,CSD,Beaverlodge,
-4819014,077112,CSD,Sexsmith,
-4819048,070000,CSD,Girouxville,
-4819011,077113,CSD,Wembley,
-4819074,078233,CSD,Grimshaw,
-4819815,070000,CSD,Horse Lakes 152B,
-4819041,078270,CSD,Smoky River No. 130,
-4819056,078231,CSD,Rycroft,
-4819049,078251-078252,CSD,Birch Hills County,
-4819006,077111-077112-077113,CSD,Grande Prairie County No. 1,
-47,060000,PT,Saskatchewan,
-4701,060000,CD,Division No. 1,
-4701811,060000,CSD,Ocean Man 69B,
-4701816,060000,CSD,Ocean Man 69I,
-4701814,060000,CSD,Ocean Man 69F,
-4701067,060000,CSD,Heward,
-4701072,060000,CSD,Hazelwood No. 94,
-4701808,060000,CSD,White Bear 70,
-4701054,060000,CSD,Manor,
-4701036,060000,CSD,Moose Creek No. 33,
-4701006,060000,CSD,Mount Pleasant No. 2,
-4701817,060000,CSD,Ocean Man 69H,
-4701053,060000,CSD,Moose Mountain No. 63,
-4701094,060000,CSD,Maryfield No. 91,
-4701809,060000,CSD,Ocean Man 69,
-4701058,060000,CSD,Brock No. 64,
-4701044,060000,CSD,Storthoaks,
-4701016,060000,CSD,Coalfields No. 4,
-4701014,060000,CSD,Oxbow,
-4701001,060000,CSD,Argyle No. 1,
-4701018,060000,CSD,North Portal,
-4701079,060000,CSD,Kenosee Lake,
-4701078,060000,CSD,Wawota,
-4701048,060000,CSD,Antler,
-4701032,060000,CSD,Lampman,
-4701037,060000,CSD,Alameda,
-4701063,060000,CSD,Tecumseh No. 65,
-4701091,060000,CSD,Walpole No. 92,
-4701011,060000,CSD,Enniskillen No. 3,
-4701818,060000,CSD,Ocean Man 69D,
-4701819,060000,CSD,Pheasant Rump 68,
-4701069,060000,CSD,Golden West No. 95,
-4701098,060000,CSD,Fairlight,
-4701043,060000,CSD,Storthoaks No. 31,
-4701004,060000,CSD,Carievale,
-4701076,060000,CSD,Wawken No. 93,
-4701077,060000,CSD,Kennedy,
-4701066,060000,CSD,Stoughton,
-4701019,060000,CSD,Roche Percee,
-4701041,060000,CSD,Alida,
-4701810,060000,CSD,Ocean Man 69A,
-4701815,060000,CSD,Ocean Man 69G,
-4701096,060000,CSD,Maryfield,
-4701047,060000,CSD,Antler No. 61,
-4701049,060000,CSD,Redvers,
-4701021,060000,CSD,Bienfait,
-4701012,060000,CSD,Glen Ewen,
-4701008,060000,CSD,Carnduff,
-4701812,060000,CSD,Ocean Man 69C,
-4701813,060000,CSD,Ocean Man 69E,
-4701064,060000,CSD,Forget,
-4701061,060000,CSD,Kisbey,
-4701059,060000,CSD,Arcola,
-4701056,060000,CSD,Carlyle,
-4701027,060000,CSD,Benson No. 35,
-4701031,060000,CSD,Browning No. 34,
-4701039,060000,CSD,Reciprocity No. 32,
-4701022,060000,CSD,Estevan No. 5,
-4701024,060000,CSD,Estevan,
-4701017,060000,CSD,Frobisher,
-4701002,060000,CSD,Gainsborough,
-4702,060000,CD,Division No. 2,
-4702069,060000,CSD,Scott No. 98,
-4702052,060000,CSD,Norton No. 69,
-4702048,060000,CSD,McTaggart,
-4702058,060000,CSD,Ogema,
-4702026,060000,CSD,The Gap No. 39,
-4702011,060000,CSD,Lake Alma No. 8,
-4702016,060000,CSD,Minton,
-4702078,060000,CSD,Fillmore,
-4702051,060000,CSD,Brokenshell No. 68,
-4702024,060000,CSD,Bengough No. 40,
-4702028,060000,CSD,Ceylon,
-4702038,060000,CSD,Halbrite,
-4702039,060000,CSD,Midale,
-4702800,060000,CSD,Piapot Cree First Nation 75H,
-4702057,060000,CSD,Key West No. 70,
-4702054,060000,CSD,Pangman,
-4702031,060000,CSD,Radville,
-4702036,060000,CSD,Goodwater,
-4702041,060000,CSD,Macoun,
-4702072,060000,CSD,Yellow Grass,
-4702062,060000,CSD,Avonlea,
-4702073,060000,CSD,Wellington No. 97,
-4702042,060000,CSD,Griffin No. 66,
-4702047,060000,CSD,Weyburn,
-4702029,060000,CSD,Laurier No. 38,
-4702012,060000,CSD,Lake Alma,
-4702076,060000,CSD,Fillmore No. 96,
-4702023,060000,CSD,Bengough,
-4702018,060000,CSD,Happy Valley No. 10,
-4702014,060000,CSD,Surprise Valley No. 9,
-4702015,060000,CSD,Gladmar,
-4702066,060000,CSD,Caledonia No. 99,
-4702061,060000,CSD,Elmsthorpe No. 100,
-4702071,060000,CSD,Lang,
-4702067,060000,CSD,Milestone,
-4702077,060000,CSD,Osage,
-4702044,060000,CSD,Weyburn No. 67,
-4702079,060000,CSD,Creelman,
-4702033,060000,CSD,Lomond No. 37,
-4702006,060000,CSD,Souris Valley No. 7,
-4702001,060000,CSD,Cambria No. 6,
-4702037,060000,CSD,Cymri No. 36,
-4702008,060000,CSD,Tribune,
-4702002,060000,CSD,Torquay,
-4703,060000,CD,Division No. 3,
-4703052,060000,CSD,Hazenmore,
-4703011,060000,CSD,Old Post No. 43,
-4703028,060000,CSD,Willow Bunch,
-4703036,060000,CSD,Assiniboia,
-4703009,060000,CSD,Rockglen,
-4703064,060000,CSD,Glen Bain No. 105,
-4703074,060000,CSD,Sutton No. 103,
-4703048,060000,CSD,Pinto Creek No. 75,
-4703026,060000,CSD,Willow Bunch No. 42,
-4703068,060000,CSD,Gravelbourg No. 104,
-4703061,060000,CSD,Neville,
-4703092,060000,CSD,Mossbank,
-4703042,060000,CSD,Wood River No. 74,
-4703034,060000,CSD,Lake of the Rivers No. 72,
-4703016,060000,CSD,Glen McPherson No. 46,
-4703018,060000,CSD,Mankota No. 45,
-4703019,060000,CSD,Mankota,
-4703001,060000,CSD,Hart Butte No. 11,
-4703059,060000,CSD,Whiska Creek No. 106,
-4703071,060000,CSD,Gravelbourg,
-4703029,060000,CSD,Excel No. 71,
-4703006,060000,CSD,Poplar Valley No. 12,
-4703004,060000,CSD,Coronach,
-4703058,060000,CSD,Ponteix,
-4703038,060000,CSD,Stonehenge No. 73,
-4703051,060000,CSD,Kincaid,
-4703044,060000,CSD,Lafleche,
-4703801,060000,CSD,Wood Mountain 160,
-4703062,060000,CSD,Vanguard,
-4703093,060000,CSD,Lake Johnston No. 102,
-4703054,060000,CSD,Auvergne No. 76,
-4703096,060000,CSD,Terrell No. 101,
-4703041,060000,CSD,Limerick,
-4703022,060000,CSD,Waverley No. 44,
-4703012,060000,CSD,Wood Mountain,
-4704,060000,CD,Division No. 4,
-4704048,060000,CSD,Maple Creek,
-4704058,060000,CSD,Bone Creek No. 108,
-4704003,060000,CSD,Val Marie No. 17,
-4704050,060000,CSD,Piapot No. 110,
-4704038,060000,CSD,Arlington No. 79,
-4704028,060000,CSD,Wise Creek No. 77,
-4704006,060000,CSD,Lone Tree No. 18,
-4704026,060000,CSD,Eastend,
-4704011,060000,CSD,Frontier No. 19,
-4704061,060000,CSD,Lac Pelletier No. 107,
-4704019,060000,CSD,Reno No. 51,
-4704021,060000,CSD,Consul,
-4704002,060000,CSD,Val Marie,
-4704045,060000,CSD,Maple Creek No. 111,
-4704056,060000,CSD,Carmichael,
-4704024,060000,CSD,White Valley No. 49,
-4704036,060000,CSD,Shaunavon,
-4704012,060000,CSD,Frontier,
-4704802,060000,CSD,Nekaneet Cree Nation,
-4704034,060000,CSD,Grassy Creek No. 78,
-4704054,060000,CSD,Carmichael No. 109,
-4704008,060000,CSD,Bracken,
-4704009,060000,CSD,Climax,
-4704029,060000,CSD,Cadillac,
-4705,060000,CD,Division No. 5,
-4705093,060000,CSD,Churchbridge No. 211,
-4705094,060000,CSD,Churchbridge,
-4705803,060000,CSD,Cowessess 73,
-4705052,060000,CSD,Esterhazy,
-4705037,060000,CSD,Rocanville No. 151,
-4705042,060000,CSD,Tantallon,
-4705021,060000,CSD,Glenavon,
-4705009,060000,CSD,Wapella,
-4705804,060000,CSD,Kahkewistahaw 72,
-4705808,060000,CSD,Little Bone 74B,
-4705068,060000,CSD,Duff,
-4705061,060000,CSD,Waldron,
-4705044,060000,CSD,Gerald,
-4705050,060000,CSD,West End,
-4705806,060000,CSD,Ochapowace 71,
-4705024,060000,CSD,Wolseley,
-4705029,060000,CSD,Grenfell,
-4705014,060000,CSD,Kingsley No. 124,
-4705011,060000,CSD,Silverwood No. 123,
-4705016,060000,CSD,Kipling,
-4705825,060000,CSD,Ochapowace 71-51,
-4705027,060000,CSD,Wolseley No. 155,
-4705060,060000,CSD,Melville Beach,
-4705033,060000,CSD,Willowdale No. 153,
-4705031,060000,CSD,Broadview,
-4705059,060000,CSD,Grayson,
-4705028,060000,CSD,Elcapo No. 154,
-4705814,060000,CSD,Ochapowace 71-10,
-4705038,060000,CSD,Rocanville,
-4705006,060000,CSD,Welwyn,
-4705821,060000,CSD,Ochapowace 71-26,
-4705822,060000,CSD,Ochapowace 71-70,
-4705019,060000,CSD,Windthorst,
-4705004,060000,CSD,Moosomin,
-4705043,060000,CSD,Spy Hill,
-4705077,060000,CSD,Saltcoats No. 213,
-4705071,060000,CSD,Fenwood,
-4705063,060000,CSD,McLeod No. 185,
-4705823,060000,CSD,Ochapowace 71-7,
-4705818,060000,CSD,Ochapowace 71-54,
-4705066,060000,CSD,Lemberg,
-4705067,060000,CSD,Stanley No. 215,
-4705073,060000,CSD,Cana No. 214,
-4705078,060000,CSD,Saltcoats,
-4705079,060000,CSD,Bredenbury,
-4705051,060000,CSD,Fertile Belt No. 183,
-4705062,060000,CSD,Killaly,
-4705826,060000,CSD,Ochapowace 71-44,
-4705041,060000,CSD,Spy Hill No. 152,
-4705002,060000,CSD,Fleming,
-4705057,060000,CSD,Grayson No. 184,
-4705054,060000,CSD,Bangor,
-4705058,060000,CSD,Dubuc,
-4705805,060000,CSD,Sakimay 74,
-4705055,060000,CSD,Bird's Point,
-4705069,060000,CSD,Goodeve,
-4705096,060000,CSD,MacNutt,
-4705047,060000,CSD,Langenburg No. 181,
-4705824,060000,CSD,Ochapowace 71-18,
-4705064,060000,CSD,Neudorf,
-4705048,060000,CSD,Langenburg,
-4705053,060000,CSD,Atwater,
-4705807,060000,CSD,Shesheep 74A,
-4705049,060000,CSD,Yarbo,
-4705018,060000,CSD,Chester No. 125,
-4705034,060000,CSD,Whitewood,
-4705007,060000,CSD,Martin No. 122,
-4705074,060000,CSD,Melville,
-4705056,060000,CSD,Stockholm,
-4705001,060000,CSD,Moosomin No. 121,
-4706,060000,CD,Division No. 6,
-4706070,060000,CSD,Longlaketon No. 219,
-4706096,060000,CSD,Lipton No. 217,
-4706828,060000,CSD,Star Blanket 83C,
-4706042,060000,CSD,Abernethy No. 186,
-4706820,060000,CSD,Wa-Pii Moos-Toosis (White Calf) 83A,
-4706030,060000,CSD,White City,
-4706014,060000,CSD,Wilcox,
-4706060,060000,CSD,Wee Too Beach,
-4706048,060000,CSD,North Qu'Appelle No. 187,
-4706056,062313,CSD,Lumsden,
-4706034,060000,CSD,South Qu'Appelle No. 157,
-4706026,060000,CSD,Sherwood No. 159,
-4706032,060000,CSD,Balgonie,
-4706016,060000,CSD,Redburn No. 130,
-4706007,060000,CSD,Vibank,
-4706017,060000,CSD,Rouleau,
-4706080,060000,CSD,Glen Harbour,
-4706023,060000,CSD,Pense,
-4706073,060000,CSD,Bulyea,
-4706076,060000,CSD,Sunset Cove,
-4706091,060000,CSD,Cupar No. 218,
-4706065,060000,CSD,Alice Beach,
-4706815,060000,CSD,Okanese 82,
-4706811,060000,CSD,Standing Buffalo 78,
-4706047,060000,CSD,Balcarres,
-4706049,060000,CSD,Lebret,
-4706004,060000,CSD,Francis No. 127,
-4706039,060000,CSD,Indian Head,
-4706067,060000,CSD,Holdfast,
-4706021,060000,CSD,Pense No. 160,
-4706027,062100,CSD,Regina,
-4706003,060000,CSD,Kendal,
-4706009,060000,CSD,Francis,
-4706081,060000,CSD,North Grove,
-4706054,060000,CSD,Disley,
-4706074,060000,CSD,Strasbourg,
-4706059,060000,CSD,Dufferin No. 190,
-4706068,060000,CSD,Dilke,
-4706055,060000,CSD,Buena Vista,
-4706098,060000,CSD,Lipton,
-4706057,060000,CSD,Lumsden Beach,
-4706813,060000,CSD,Muscowpetung 80,
-4706812,060000,CSD,Pasqua 79,
-4706045,060000,CSD,Fort San,
-4706022,060000,CSD,Belle Plaine,
-4706031,060000,CSD,Pilot Butte,
-4706013,060000,CSD,Bratt's Lake No. 129,
-4706011,060000,CSD,Lajord No. 128,
-4706001,060000,CSD,Montmartre No. 126,
-4706810,060000,CSD,Assiniboine 76,
-4706018,060000,CSD,Briercrest,
-4706002,060000,CSD,Montmartre,
-4706046,060000,CSD,Abernethy,
-4706079,060000,CSD,Earl Grey,
-4706063,060000,CSD,Sarnia No. 221,
-4706085,060000,CSD,Island View,
-4706099,060000,CSD,Tullymet No. 216,
-4706093,060000,CSD,Markinch,
-4706072,060000,CSD,Saskatchewan Beach,
-4706809,060000,CSD,Piapot 75,
-4706829,060000,CSD,Treaty Four Reserve Grounds 77,
-4706033,060000,CSD,Edenwold,
-4706036,060000,CSD,Qu'Appelle,
-4706028,060000,CSD,Grand Coulee,
-4706019,060000,CSD,Drinkwater,
-4706041,060000,CSD,Sintaluta,
-4706064,060000,CSD,Chamberlain,
-4706094,060000,CSD,Cupar,
-4706814,060000,CSD,Little Black Bear 84,
-4706097,060000,CSD,Dysart,
-4706053,062313,CSD,Lumsden No. 189,
-4706077,060000,CSD,Silton,
-4706058,062313,CSD,Regina Beach,
-4706075,060000,CSD,Kannata Valley,
-4706051,060000,CSD,Fort Qu'Appelle,
-4706050,060000,CSD,Katepwa,
-4706038,060000,CSD,Indian Head No. 156,
-4706008,060000,CSD,Sedley,
-4706029,060000,CSD,Edenwold No. 158,
-4706082,060000,CSD,Pelican Pointe,
-4706061,060000,CSD,Bethune,
-4706071,060000,CSD,McKillop No. 220,
-4706069,060000,CSD,Grandview Beach,
-4706092,060000,CSD,Southey,
-4706818,060000,CSD,Star Blanket 83,
-4706078,062313,CSD,Craven,
-4706052,060000,CSD,B-Say-Tah,
-4706037,060000,CSD,McLean,
-4706006,060000,CSD,Odessa,
-4706816,060000,CSD,Peepeekisis 81,
-4706062,060000,CSD,Findlater,
-4707,060000,CD,Division No. 7,
-4707093,060000,CSD,Aylesbury,
-4707045,060000,CSD,Sun Valley,
-4707028,060000,CSD,Ernfold,
-4707016,060000,CSD,Hodgeville,
-4707012,060000,CSD,Shamrock,
-4707036,060000,CSD,Caron No. 162,
-4707021,060000,CSD,Excelsior No. 166,
-4707077,060000,CSD,Tugaske,
-4707020,060000,CSD,Beaver Flat,
-4707044,060000,CSD,Marquis,
-4707043,060000,CSD,Tuxford,
-4707014,060000,CSD,Lawtonia No. 135,
-4707066,060000,CSD,King George No. 256,
-4707091,060000,CSD,Craik No. 222,
-4707031,060000,CSD,Chaplin,
-4707034,060000,CSD,Mortlach,
-4707037,060000,CSD,Caronport,
-4707011,060000,CSD,Shamrock No. 134,
-4707006,060000,CSD,Rodgers No. 133,
-4707071,060000,CSD,Maple Bush No. 224,
-4707076,060000,CSD,Huron No. 223,
-4707053,060000,CSD,Enfield No. 194,
-4707029,060000,CSD,Chaplin No. 164,
-4707046,060000,CSD,Keeler,
-4707026,060000,CSD,Herbert,
-4707039,060000,CSD,Moose Jaw,
-4707054,060000,CSD,Central Butte,
-4707049,060000,CSD,Eyebrow,
-4707022,060000,CSD,Waldeck,
-4707027,060000,CSD,Morse,
-4707008,060000,CSD,Coderre,
-4707004,060000,CSD,Hillsborough No. 132,
-4707068,060000,CSD,Coteau Beach,
-4707063,060000,CSD,Victory No. 226,
-4707059,060000,CSD,Lucky Lake,
-4707074,060000,CSD,Mistusinne,
-4707048,060000,CSD,Brownlee,
-4707051,060000,CSD,South Lake,
-4707038,060000,CSD,Moose Jaw No. 161,
-4707058,060000,CSD,Canaan No. 225,
-4707092,060000,CSD,Craik,
-4707024,060000,CSD,Morse No. 165,
-4707023,060000,CSD,Rush Lake,
-4707018,060000,CSD,Coulee No. 136,
-4707067,060000,CSD,Coteau No. 255,
-4707062,060000,CSD,Beechy,
-4707072,060000,CSD,Riverhurst,
-4707047,060000,CSD,Eyebrow No. 193,
-4707042,060000,CSD,Marquis No. 191,
-4707032,060000,CSD,Wheatlands No. 163,
-4707001,060000,CSD,Baildon No. 131,
-4708,060000,CD,Division No. 8,
-4708076,060000,CSD,Eston,
-4708034,060000,CSD,Pennant,
-4708042,060000,CSD,Lacadena No. 228,
-4708071,060000,CSD,Newcombe No. 260,
-4708068,060000,CSD,Eatonia,
-4708046,060000,CSD,Miry Creek No. 229,
-4708057,060000,CSD,Prelate,
-4708059,060000,CSD,Mendham,
-4708021,060000,CSD,Enterprise No. 142,
-4708038,060000,CSD,Saskatchewan Landing No. 167,
-4708008,060000,CSD,Webb,
-4708053,060000,CSD,Clinworth No. 230,
-4708058,060000,CSD,Leader,
-4708054,060000,CSD,Sceptre,
-4708039,060000,CSD,Stewart Valley,
-4708018,060000,CSD,Golden Prairie,
-4708006,060000,CSD,Webb No. 138,
-4708032,060000,CSD,Cabri,
-4708009,060000,CSD,Gull Lake No. 139,
-4708001,060000,CSD,Swift Current No. 137,
-4708065,060000,CSD,Chesterfield No. 261,
-4708092,060000,CSD,Monet No. 257,
-4708049,060000,CSD,Lancer,
-4708028,060000,CSD,Pittville No. 169,
-4708029,060000,CSD,Hazlet,
-4708036,060000,CSD,Success,
-4708004,060000,CSD,Swift Current,
-4708094,060000,CSD,Elrose,
-4708024,060000,CSD,Fox Valley No. 171,
-4708047,060000,CSD,Shackleton,
-4708061,060000,CSD,Deer Forks No. 232,
-4708062,060000,CSD,Burstall,
-4708012,060000,CSD,Tompkins,
-4708031,060000,CSD,Riverside No. 168,
-4708048,060000,CSD,Abbey,
-4708044,060000,CSD,Kyle,
-4708022,060000,CSD,Richmound,
-4708026,060000,CSD,Fox Valley,
-4708016,060000,CSD,Big Stick No. 141,
-4708011,060000,CSD,Gull Lake,
-4708074,060000,CSD,Snipe Lake No. 259,
-4708056,060000,CSD,Happyland No. 231,
-4709,060000,CD,Division No. 9,
-4709062,060000,CSD,Preeceville No. 334,
-4709065,060000,CSD,Endeavour,
-4709056,060000,CSD,Rama,
-4709076,060000,CSD,Arran,
-4709029,060000,CSD,Good Lake No. 274,
-4709039,060000,CSD,Kamsack,
-4709824,060000,CSD,Keeseekoose 66-CA-04,
-4709060,060000,CSD,Hazel Dell No. 335,
-4709049,060000,CSD,Buchanan No. 304,
-4709067,060000,CSD,Clayton No. 333,
-4709023,060000,CSD,Insinger No. 275,
-4709006,060000,CSD,Wallace No. 243,
-4709032,060000,CSD,Canora,
-4709071,060000,CSD,Hyas,
-4709024,060000,CSD,Sheho,
-4709012,060000,CSD,Yorkton,
-4709002,060000,CSD,Calder,
-4709075,060000,CSD,Livingston No. 331,
-4709058,060000,CSD,Invermay,
-4709072,060000,CSD,Norquay,
-4709042,060000,CSD,St. Philips No. 301,
-4709820,060000,CSD,Keeseekoose 66,
-4709001,060000,CSD,Calder No. 241,
-4709054,060000,CSD,Invermay No. 305,
-4709066,060000,CSD,Sturgis,
-4709028,060000,CSD,Theodore,
-4709016,060000,CSD,Springside,
-4709828,060000,CSD,Keeseekoose 66-CA-06,
-4709011,060000,CSD,Orkney No. 244,
-4709009,060000,CSD,Rhein,
-4709061,060000,CSD,Lintlaw,
-4709046,060000,CSD,Keys No. 303,
-4709044,060000,CSD,Pelly,
-4709819,060000,CSD,Cote 64,
-4709019,060000,CSD,Garry No. 245,
-4709038,060000,CSD,Togo,
-4709826,060000,CSD,Keeseekoose 66-CA-05,
-4709037,060000,CSD,Cote No. 271,
-4709064,060000,CSD,Preeceville,
-4709821,060000,CSD,The Key 65,
-4709832,060000,CSD,Keeseekoose 66-KE-05,
-4709822,060000,CSD,Keeseekoose 66A,
-4709033,060000,CSD,Sliding Hills No. 273,
-4709069,060000,CSD,Stenen,
-4709830,060000,CSD,Keeseekoose 66-KE-04,
-4709014,060000,CSD,Ebenezer,
-4709053,060000,CSD,Buchanan,
-4710,060000,CD,Division No. 10,
-4710826,060000,CSD,Fishing Lake 89,
-4710847,060000,CSD,Muskowekwan 85-10,
-4710848,060000,CSD,Muskowekwan 85-1,
-4710047,060000,CSD,Wynyard,
-4710043,060000,CSD,Elfros,
-4710031,060000,CSD,Emerald No. 277,
-4710825,060000,CSD,Poorman 88,
-4710008,060000,CSD,Kellross No. 247,
-4710849,060000,CSD,Muskowekwan 85-8,
-4710014,060000,CSD,Touchwood No. 248,
-4710011,060000,CSD,Leross,
-4710846,060000,CSD,Muskowekwan 85-27,
-4710056,060000,CSD,Leroy No. 339,
-4710054,060000,CSD,Jansen,
-4710051,060000,CSD,Dafoe,
-4710036,060000,CSD,Foam Lake No. 276,
-4710828,060000,CSD,Beardy's and Okemasis 96 and 97A,
-4710012,060000,CSD,Lestock,
-4710842,060000,CSD,Muskowekwan 85-23,
-4710035,060000,CSD,Leslie Beach,
-4710824,060000,CSD,Day Star 87,
-4710061,060000,CSD,Lakeside No. 338,
-4710071,060000,CSD,Sasman No. 336,
-4710854,060000,CSD,Fishing Lake 89A,
-4710852,060000,CSD,Muskowekwan 85-31,
-4710823,060000,CSD,Gordon 86,
-4710845,060000,CSD,Muskowekwan 85-22,
-4710844,060000,CSD,Muskowekwan 85-24,
-4710836,060000,CSD,Muskowekwan 85-33,
-4710003,060000,CSD,Ituna Bon Accord No. 246,
-4710834,060000,CSD,Muskowekwan 85-26,
-4710840,060000,CSD,Muskowekwan 85-29,
-4710068,060000,CSD,Wadena,
-4710027,060000,CSD,Raymore,
-4710028,060000,CSD,Quinton,
-4710850,060000,CSD,Muskowekwan 85-15,
-4710066,060000,CSD,Lakeview No. 337,
-4710072,060000,CSD,Margo,
-4710024,060000,CSD,Mount Hope No. 279,
-4710029,060000,CSD,Punnichy,
-4710838,060000,CSD,Muskowekwan 85-28,
-4710832,060000,CSD,Muskowekwan 85-17,
-4710004,060000,CSD,Ituna,
-4710052,060000,CSD,Prairie Rose No. 309,
-4710062,060000,CSD,Watson,
-4710058,060000,CSD,Leroy,
-4710843,060000,CSD,Muskowekwan 85-12,
-4710009,060000,CSD,Kelliher,
-4710002,060000,CSD,Hubbard,
-4710022,060000,CSD,Semans,
-4710064,060000,CSD,Quill Lake,
-4710041,060000,CSD,Elfros No. 307,
-4710034,060000,CSD,Chorney Beach,
-4710046,060000,CSD,Big Quill No. 308,
-4710038,060000,CSD,Foam Lake,
-4710822,060000,CSD,Muskowekwan 85,
-4710851,060000,CSD,Muskowekwan 85-2A,
-4711,060000,CD,Division No. 11,
-4711061,065521,CSD,Dundurn No. 314,
-4711039,060000,CSD,Wood Creek No. 281,
-4711022,060000,CSD,Strongfield,
-4711016,065542,CSD,Willner No. 253,
-4711008,065543,CSD,Imperial,
-4711014,065541,CSD,Davidson,
-4711065,065432,CSD,Corman Park No. 344,
-4711066,065100,CSD,Saskatoon,
-4711069,065453,CSD,Blucher No. 343,
-4711079,065451,CSD,Colonsay,
-4711041,060000,CSD,Simpson,
-4711021,065524,CSD,Loreburn,
-4711067,065432,CSD,Langham,
-4711068,065432,CSD,Warman,
-4711076,065451,CSD,Colonsay No. 342,
-4711074,065453,CSD,Elstow,
-4711046,060000,CSD,Usborne No. 310,
-4711027,060000,CSD,Outlook,
-4711054,060000,CSD,Manitou Beach,
-4711029,060000,CSD,Glenside,
-4711003,060000,CSD,Last Mountain Valley No. 250,
-4711009,060000,CSD,Liberty,
-4711073,060000,CSD,Dalmeny,
-4711070,065432,CSD,Martensville,
-4711091,060000,CSD,Viscount No. 341,
-4711072,065453,CSD,Allan,
-4711048,060000,CSD,Drake,
-4711036,060000,CSD,Kenaston,
-4711031,060000,CSD,Rosedale No. 283,
-4711028,060000,CSD,Broderick,
-4711024,065524,CSD,Hawarden,
-4711002,060000,CSD,Duval,
-4711092,060000,CSD,Viscount,
-4711078,060000,CSD,Meacham,
-4711064,060000,CSD,Shields,
-4711063,060000,CSD,Dundurn,
-4711060,060000,CSD,Thode,
-4711018,065524,CSD,Loreburn No. 254,
-4711042,060000,CSD,Wreford No. 280,
-4711019,065524,CSD,Elbow,
-4711004,060000,CSD,Govan,
-4711007,060000,CSD,Etters Beach,
-4711044,060000,CSD,Nokomis,
-4711096,060000,CSD,Wolverine No. 340,
-4711077,065453,CSD,Clavet,
-4711828,060000,CSD,Whitecap,
-4711071,065453,CSD,Bradwell,
-4711058,060000,CSD,Zelma,
-4711032,060000,CSD,Hanley,
-4711034,060000,CSD,McCraney No. 282,
-4711006,060000,CSD,Big Arm No. 251,
-4711053,060000,CSD,Watrous,
-4711075,060000,CSD,Osler,
-4711059,060000,CSD,Lost River No. 313,
-4711052,060000,CSD,Morris No. 312,
-4711094,060000,CSD,Plunkett,
-4711026,060000,CSD,Rudy No. 284,
-4711056,060000,CSD,Young,
-4711049,060000,CSD,Lanigan,
-4711038,060000,CSD,Bladworth,
-4711011,060000,CSD,Arm River No. 252,
-4712,060000,CD,Division No. 12,
-4712833,060000,CSD,Sweet Grass 113,
-4712050,060000,CSD,Perdue No. 346,
-4712059,065434,CSD,Asquith,
-4712072,060000,CSD,Rosemount No. 378,
-4712031,060000,CSD,Tessier,
-4712032,060000,CSD,Harris,
-4712006,066364,CSD,Rosetown,
-4712079,066260,CSD,Battleford,
-4712034,060000,CSD,Marriott No. 317,
-4712056,065434,CSD,Delisle,
-4712020,060000,CSD,Fertile Valley No. 285,
-4712014,060000,CSD,Wiseton,
-4712001,060000,CSD,Pleasant Valley No. 288,
-4712830,060000,CSD,Mosquito 109,
-4712058,065434,CSD,Vanscoy,
-4712008,060000,CSD,Zealandia,
-4712042,060000,CSD,Biggar No. 347,
-4712837,060000,CSD,Sweet Grass 113-M16,
-4712829,060000,CSD,Red Pheasant 108,
-4712054,060000,CSD,Vanscoy No. 345,
-4712051,060000,CSD,Perdue,
-4712011,060000,CSD,Milden No. 286,
-4712012,060000,CSD,Milden,
-4712022,060000,CSD,Conquest,
-4712016,060000,CSD,Dinsmore,
-4712078,060000,CSD,Battle River No. 438,
-4712832,060000,CSD,Grizzly Bear's Head 110 and Lean Man 111,
-4712046,060000,CSD,Biggar,
-4712029,060000,CSD,Harris No. 316,
-4712026,060000,CSD,Montrose No. 315,
-4712019,060000,CSD,Macrorie,
-4712064,060000,CSD,Eagle Creek No. 376,
-4712038,060000,CSD,Mountain View No. 318,
-4712004,060000,CSD,St. Andrews No. 287,
-4712069,060000,CSD,Glenside No. 377,
-4712052,060000,CSD,Kinley,
-4713,060000,CD,Division No. 13,
-4713079,060000,CSD,Manitou Lake No. 442,
-4713096,060000,CSD,Cut Knife No. 439,
-4713049,060000,CSD,Eye Hill No. 382,
-4713038,060000,CSD,Mariposa No. 350,
-4713011,060000,CSD,Milton No. 292,
-4713004,060000,CSD,Netherhill,
-4713835,060000,CSD,Poundmaker 114,
-4713069,060000,CSD,Wilkie,
-4713028,060000,CSD,Winslow No. 319,
-4713006,060000,CSD,Kindersley No. 290,
-4713836,060000,CSD,Little Pine 116,
-4713044,060000,CSD,Luseland,
-4713021,060000,CSD,Major,
-4713042,060000,CSD,Kerrobert,
-4713002,060000,CSD,Brock,
-4713091,060000,CSD,Marsden,
-4713098,060000,CSD,Cut Knife,
-4713059,060000,CSD,Tramping Lake No. 380,
-4713062,060000,CSD,Scott,
-4713054,060000,CSD,Denzil,
-4713009,060000,CSD,Flaxcombe,
-4713051,060000,CSD,Macklin,
-4713056,060000,CSD,Grass Lake No. 381,
-4713074,060000,CSD,Unity,
-4713033,060000,CSD,Ruthilda,
-4713041,060000,CSD,Progress No. 351,
-4713064,060000,CSD,Reford No. 379,
-4713046,060000,CSD,Heart's Hill No. 352,
-4713032,060000,CSD,Grandview No. 349,
-4713019,060000,CSD,Prairiedale No. 321,
-4713029,060000,CSD,Dodsland,
-4713022,060000,CSD,Smiley,
-4713008,060000,CSD,Kindersley,
-4713026,060000,CSD,Coleville,
-4713094,060000,CSD,Neilburg,
-4713068,060000,CSD,Buffalo No. 409,
-4713078,060000,CSD,Senlac,
-4713014,060000,CSD,Marengo,
-4713039,060000,CSD,Tramping Lake,
-4713076,060000,CSD,Senlac No. 411,
-4713072,060000,CSD,Round Valley No. 410,
-4713053,060000,CSD,Primate,
-4713067,060000,CSD,Landis,
-4713016,060000,CSD,Antelope Park No. 322,
-4713031,060000,CSD,Plenty,
-4713092,060000,CSD,Hillsdale No. 440,
-4713024,060000,CSD,Oakdale No. 320,
-4714,060000,CD,Division No. 14,
-4714068,060000,CSD,Tobin Lake,
-4714043,060000,CSD,Tisdale No. 427,
-4714030,060000,CSD,Pleasantdale,
-4714007,060000,CSD,Porcupine Plain,
-4714026,060000,CSD,Spalding No. 368,
-4714036,060000,CSD,Archerwill,
-4714092,060000,CSD,Choiceland,
-4714839,060000,CSD,Shoal Lake 28A,
-4714056,060000,CSD,Connaught No. 457,
-4714041,060000,CSD,Bjorkdale,
-4714023,060000,CSD,Ponass Lake No. 367,
-4714840,060000,CSD,Red Earth 29,
-4714077,060000,CSD,Torch River No. 488,
-4714001,060000,CSD,Hudson Bay No. 394,
-4714079,060000,CSD,White Fox,
-4714076,060000,CSD,Nipawin,
-4714074,060000,CSD,Codette,
-4714053,060000,CSD,Willow Creek No. 458,
-4714062,060000,CSD,Arborfield,
-4714038,060000,CSD,Bjorkdale No. 426,
-4714842,060000,CSD,Kinistin 91,
-4714047,060000,CSD,Star City No. 428,
-4714039,060000,CSD,Mistatim,
-4714032,060000,CSD,Naicam,
-4714021,060000,CSD,Kelvington No. 366,
-4714067,060000,CSD,Moose Range No. 486,
-4714846,060000,CSD,Opaskwayak Cree Nation 27A (Carrot River),
-4714069,060000,CSD,Carrot River,
-4714049,060000,CSD,Star City,
-4714004,060000,CSD,Hudson Bay,
-4714072,060000,CSD,Nipawin No. 487,
-4714073,060000,CSD,Aylsham,
-4714841,060000,CSD,Yellowquill 90,
-4714022,060000,CSD,Kelvington,
-4714059,060000,CSD,Arborfield No. 456,
-4714058,060000,CSD,Ridgedale,
-4714061,060000,CSD,Zenon Park,
-4714048,060000,CSD,Valparaiso,
-4714006,060000,CSD,Porcupine No. 395,
-4714028,060000,CSD,Spalding,
-4714025,060000,CSD,Fosston,
-4714009,060000,CSD,Weekes,
-4714093,060000,CSD,Smeaton,
-4714091,060000,CSD,Love,
-4714845,060000,CSD,Carrot River 29A,
-4714051,060000,CSD,Melfort,
-4714044,060000,CSD,Tisdale,
-4714034,060000,CSD,Barrier Valley No. 397,
-4714024,060000,CSD,Rose Valley,
-4714035,060000,CSD,Pleasantdale No. 398,
-4715,060000,CD,Division No. 15,
-4715099,060000,CSD,Paddockwood No. 520,
-4715847,060000,CSD,Muskoday First Nation,
-4715845,060000,CSD,Beardy's 97 and Okemasis 96,
-4715861,060000,CSD,One Arrow 95-1D,
-4715018,065441,CSD,Aberdeen No. 373,
-4715041,060000,CSD,Cudworth,
-4715006,060000,CSD,Lake Lenore,
-4715012,060000,CSD,Bruno,
-4715085,060000,CSD,Albertville,
-4715092,060000,CSD,Meath Park,
-4715064,060000,CSD,Prince Albert No. 461,
-4715071,060000,CSD,Kinistino No. 459,
-4715067,060000,CSD,Birch Hills No. 460,
-4715029,060000,CSD,Laird,
-4715038,060000,CSD,Alvena,
-4715002,060000,CSD,Englefeld,
-4715859,060000,CSD,Beardy's and Okemasis 96 and 97B,
-4715036,060000,CSD,Fish Creek No. 402,
-4715072,060000,CSD,Weldon,
-4715052,060000,CSD,Beatty,
-4715848,060000,CSD,Wahpaton 94A,
-4715057,060000,CSD,St. Louis No. 431,
-4715039,060000,CSD,Hoodoo No. 401,
-4715028,060000,CSD,Waldheim,
-4715048,060000,CSD,Lake Lenore No. 399,
-4715017,060000,CSD,Vonda,
-4715045,060000,CSD,Pilger,
-4715004,060000,CSD,Muenster,
-4715862,060000,CSD,One Arrow 95-1A,
-4715850,060000,CSD,Cumberland 100A,
-4715849,060000,CSD,James Smith 100,
-4715091,060000,CSD,Weirdale,
-4715066,060000,CSD,Prince Albert,
-4715068,060000,CSD,Birch Hills,
-4715042,060000,CSD,Wakaw,
-4715003,060000,CSD,St. Gregor,
-4715070,060000,CSD,Candle Lake,
-4715853,060000,CSD,Montreal Lake 106B,
-4715076,060000,CSD,Christopher Lake,
-4715846,060000,CSD,Opawakoscikan,
-4715061,060000,CSD,Duck Lake No. 463,
-4715026,060000,CSD,Laird No. 404,
-4715043,060000,CSD,Wakaw Lake,
-4715857,060000,CSD,One Arrow 95-1C,
-4715047,060000,CSD,Middle Lake,
-4715007,060000,CSD,Humboldt No. 370,
-4715005,060000,CSD,Annaheim,
-4715098,060000,CSD,Paddockwood,
-4715075,060000,CSD,Lakeland No. 521,
-4715054,060000,CSD,Invergordon No. 430,
-4715062,060000,CSD,Duck Lake,
-4715034,060000,CSD,Hague,
-4715014,060000,CSD,Grant No. 372,
-4715049,060000,CSD,St. Brieux,
-4715008,060000,CSD,Humboldt,
-4715079,060000,CSD,Garden River No. 490,
-4715031,060000,CSD,Rosthern No. 403,
-4715051,060000,CSD,Flett's Springs No. 429,
-4715844,060000,CSD,One Arrow 95,
-4715001,060000,CSD,St. Peter No. 369,
-4715094,060000,CSD,Buckland No. 491,
-4715059,060000,CSD,St. Louis,
-4715074,060000,CSD,Kinistino,
-4715032,060000,CSD,Rosthern,
-4715027,060000,CSD,Hepburn,
-4715044,060000,CSD,Three Lakes No. 400,
-4715046,060000,CSD,St. Benedict,
-4715019,065441,CSD,Aberdeen,
-4715016,060000,CSD,Prud'Homme,
-4715851,060000,CSD,Little Red River 106C,
-4715011,060000,CSD,Bayne No. 371,
-4716,060000,CD,Division No. 16,
-4716863,060000,CSD,Chitek Lake 191,
-4716894,060000,CSD,Pelican Lake 191A,
-4716856,060000,CSD,Sturgeon Lake 101,
-4716047,060000,CSD,Shellbrook,
-4716023,060000,CSD,Douglas No. 436,
-4716891,060000,CSD,Muskeg Lake 102D,
-4716016,060000,CSD,Blaine Lake,
-4716003,060000,CSD,Ruddell,
-4716008,060000,CSD,Great Bend No. 405,
-4716880,060000,CSD,Pelican Lake 191B,
-4716063,060000,CSD,Medstead,
-4716002,060000,CSD,Denholm,
-4716855,060000,CSD,Mistawasis 103,
-4716890,060000,CSD,Muskeg Lake 102G,
-4716029,066260,CSD,North Battleford,
-4716005,060000,CSD,Mayfield No. 406,
-4716053,060000,CSD,Prince Albert National Park,
-4716077,060000,CSD,Chitek Lake,
-4716056,060000,CSD,Spiritwood No. 496,
-4716862,060000,CSD,Witchekan Lake 117,
-4716860,060000,CSD,Ahtahkakoop 104,
-4716051,060000,CSD,Canwood No. 494,
-4716043,060000,CSD,Pebble Baye,
-4716870,060000,CSD,Lucky Man,
-4716886,060000,CSD,Muskeg Lake 102E,
-4716042,060000,CSD,Leask,
-4716024,060000,CSD,Speers,
-4716857,060000,CSD,Little Red River 106D,
-4716057,060000,CSD,Shell Lake,
-4716041,060000,CSD,Leask No. 464,
-4716027,066260,CSD,North Battleford,
-4716026,060000,CSD,Richard,
-4716892,060000,CSD,Sweet Grass 113-L6,
-4716011,060000,CSD,Borden,
-4716061,060000,CSD,Leoville,
-4716054,060000,CSD,Debden,
-4716034,060000,CSD,Rabbit Lake,
-4716059,060000,CSD,Big Shell,
-4716044,060000,CSD,Parkside,
-4716854,060000,CSD,Muskeg Lake Cree Nation 102,
-4716013,060000,CSD,Blaine Lake No. 434,
-4716022,060000,CSD,Hafford,
-4716072,060000,CSD,Big River,
-4716882,060000,CSD,Witchekan Lake 117D,
-4716058,060000,CSD,Spiritwood,
-4716038,060000,CSD,Meeting Lake No. 466,
-4716052,060000,CSD,Canwood,
-4716075,060000,CSD,Big River No. 555,
-4716858,060000,CSD,Big River 118,
-4716861,060000,CSD,Saulteaux 159A,
-4716046,060000,CSD,Shellbrook No. 493,
-4716033,060000,CSD,Round Hill No. 467,
-4716028,066271,CSD,North Battleford No. 437,
-4716872,060000,CSD,Muskeg Lake 102B,
-4716018,060000,CSD,Redberry No. 435,
-4716014,060000,CSD,Marcelin,
-4716004,060000,CSD,Maymont,
-4716062,060000,CSD,Medstead No. 497,
-4716888,060000,CSD,Muskeg Lake 102F,
-4716019,060000,CSD,Krydor,
-4716009,060000,CSD,Radisson,
-4716060,060000,CSD,Echo Bay,
-4717,060000,CD,Division No. 17,
-4717062,060000,CSD,Beaver River No. 622,
-4717810,060000,CSD,Ministikwan 161A,
-4717808,060000,CSD,Makwa Lake 129,
-4717819,060000,CSD,Meadow Lake 105A,
-4717801,060000,CSD,Seekaskootch 119,
-4717022,060000,CSD,Wilton No. 472,
-4717048,060000,CSD,Glaslyn,
-4717018,060000,CSD,Maidstone,
-4717813,060000,CSD,Saulteaux 159,
-4717004,060000,CSD,Metinota,
-4717039,060000,CSD,Mervin,
-4717809,060000,CSD,Ministikwan 161,
-4717805,060000,CSD,Flying Dust First Nation 105 (Meadow Lake 105),
-4717052,060000,CSD,Meadow Lake,
-4717028,060000,CSD,Britannia No. 502,
-4717011,060000,CSD,Edam,
-4717008,060000,CSD,Turtle River No. 469,
-4717811,060000,CSD,Big Island Lake Cree Territory,
-4717055,060000,CSD,Dorintosh,
-4717820,060000,CSD,Onion Lake 119-1,
-4717058,060000,CSD,Loon Lake,
-4717013,060000,CSD,Paynton No. 470,
-4717024,060000,CSD,Lashburn,
-4717067,060000,CSD,Pierceland,
-4717032,060000,CSD,Frenchman Butte No. 501,
-4717045,060000,CSD,Mervin No. 499,
-4717006,060000,CSD,Meota,
-4717825,060000,CSD,Min-A-He-Quo-Sis 116C,
-4717054,060000,CSD,Meadow Lake No. 588,
-4717066,060000,CSD,Goodsoil,
-4717057,060000,CSD,Makwa,
-4717802,060000,CSD,Makaoo (Part) 120,
-4717036,060000,CSD,St. Walburg,
-4717047,060000,CSD,Parkdale No. 498,
-4717005,060000,CSD,Aquadeo,
-4717019,060000,CSD,Waseca,
-4717053,060000,CSD,Greig Lake,
-4717807,060000,CSD,Makwa Lake 129B,
-4717815,060000,CSD,Makwa Lake 129C,
-4717042,060000,CSD,Kivimaa-Moonlight Bay,
-4717803,060000,CSD,Thunderchild First Nation 115B,
-4717029,060000,CSD,Lloydminster (Part),
-4717816,060000,CSD,Eagles Lake 165C,
-4717034,060000,CSD,Paradise Hill,
-4717804,060000,CSD,Thunderchild First Nation 115C,
-4717041,060000,CSD,Turtleford,
-4717001,060000,CSD,Meota No. 468,
-4717056,060000,CSD,Loon Lake No. 561,
-4717806,060000,CSD,Waterhen 130,
-4717017,060000,CSD,Eldon No. 471,
-4717026,060000,CSD,Marshall,
-4717812,060000,CSD,Moosomin 112B,
-4717002,060000,CSD,Cochin,
-4717014,060000,CSD,Paynton,
-4718,060000,CD,Division No. 18,
-4718824,060000,CSD,Fond du Lac 227,
-4718846,060000,CSD,Fond du Lac 232,
-4718072,060000,CSD,Michel Village,
-4718822,060000,CSD,Southend 200,
-4718033,060000,CSD,Beauval,
-4718844,060000,CSD,Little Hills 158,
-4718849,060000,CSD,Little Hills 158B,
-4718055,060000,CSD,Pelican Narrows,
-4718051,060000,CSD,Creighton,
-4718828,060000,CSD,Chicken 224,
-4718854,060000,CSD,Kinoosao-Thomas Clark 204,
-4718817,060000,CSD,Canoe Lake 165,
-4718823,060000,CSD,Chicken 225,
-4718100,060000,CSD,Stony Rapids,
-4718818,060000,CSD,Buffalo River Dene Nation 193 (Peter Pond Lake 193),
-4718030,060000,CSD,Jans Bay,
-4718808,060000,CSD,Morin Lake 217,
-4718069,060000,CSD,Patuanak,
-4718807,060000,CSD,La Plonge 192,
-4718062,060000,CSD,Missinipe,
-4718813,060000,CSD,Four Portages 157C,
-4718812,060000,CSD,Kitsakie 156B,
-4718023,060000,CSD,Dore Lake,
-4718021,060000,CSD,Green Lake,
-4718802,060000,CSD,Montreal Lake 106,
-4718067,060000,CSD,Île-à-la-Crosse,
-4718832,060000,CSD,Lac La Hache 220,
-4718090,060000,CSD,"Division No. 18, Unorganized",
-4718819,060000,CSD,Turnor Lake 193B,
-4718829,060000,CSD,Clearwater River Dene Band 223,
-4718028,060000,CSD,Cole Bay,
-4718809,060000,CSD,Lac La Ronge 156,
-4718074,060000,CSD,La Loche,
-4718070,060000,CSD,Buffalo Narrows,
-4718058,060000,CSD,Sandy Bay,
-4718015,060000,CSD,Weyakwin,
-4718049,060000,CSD,Denare Beach,
-4718821,060000,CSD,Sturgeon Weir 184F,
-4718065,060000,CSD,Pinehouse,
-4718075,060000,CSD,Turnor Lake,
-4718071,060000,CSD,St. George's Hill,
-4718803,060000,CSD,Stanley 157,
-4718041,060000,CSD,La Ronge,
-4718052,060000,CSD,Flin Flon (Part),
-4718801,060000,CSD,Cumberland House Cree Nation 20,
-4718839,060000,CSD,Clearwater River Dene 222,
-4718833,060000,CSD,Fond du Lac 229,
-4718847,060000,CSD,Fond du Lac 231,
-4718814,060000,CSD,Wapachewunak 192D,
-4718825,060000,CSD,Brabant Lake,
-4718831,060000,CSD,Grandmother's Bay 219,
-4718811,060000,CSD,Sucker River 156C (Nemebien River 156C),
-4718042,060000,CSD,Air Ronge,
-4718810,060000,CSD,Potato River 156A,
-4718820,060000,CSD,Pelican Narrows 184B,
-4718852,060000,CSD,Kimosom Pwatinahk 203 (Deschambault Lake),
-4718012,060000,CSD,Timber Bay,
-4718005,060000,CSD,Cumberland House,
-46,050000,PT,Manitoba,
-4601,052600-053300-053200-053100,CD,Division No. 1,
-4601057,053211,CSD,Lac du Bonnet,
-4601051,053221,CSD,Pinawa,
-4601035,052652,CSD,Stuartburn,
-4601075,053140,CSD,Powerview-Pine Falls,
-4601078,052432,CSD,Victoria Beach,
-4601039,053320-053330,CSD,Piney,
-4601043,053212-053241-053242,CSD,Reynolds,
-4601079,053243-055241,CSD,Shoal Lake (Part) 40,
-4601060,053211,CSD,Lac du Bonnet,
-4601082,053243-055241,CSD,Shoal Lake (Part) 39A,
-4601094,052600-053300-053200-053100,CSD,"Division No. 1, Unorganized",
-4601046,053222,CSD,Whitemouth,
-4601071,051140-052411-053140-053150,CSD,Alexander,
-4601070,053310,CSD,Buffalo Point 36,
-4602,052500-052300-052200-052400,CD,Division No. 2,
-4602044,052630,CSD,Steinbach,
-4602057,052641,CSD,Ste. Anne,
-4602053,052642,CSD,La Broquerie,
-4602061,052641,CSD,Ste. Anne,
-4602037,052620,CSD,St-Pierre-Jolys,
-4602027,052651,CSD,Roseau River 2,
-4602041,052630,CSD,Hanover,
-4602075,052611,CSD,Ritchot,
-4602046,052630,CSD,Niverville,
-4602032,052620,CSD,De Salaberry,
-4602069,052612,CSD,Taché,
-4602025,052651,CSD,Franklin,
-4602026,050000,CSD,Roseau Rapids 2A,
-4603,052500-052300,CD,Division No. 3,
-4603072,052332,CSD,Dufferin,
-4603047,052560,CSD,Stanley,
-4603050,052560,CSD,Winkler,
-4603065,052510,CSD,Morris,
-4603058,052520,CSD,Thompson,
-4603040,052550,CSD,Altona,
-4603033,050000,CSD,Emerson,
-4603067,052510,CSD,Morris,
-4603062,052530,CSD,Roland,
-4603030,052540,CSD,Montcalm,
-4603038,052550,CSD,Gretna,
-4603053,052560,CSD,Morden,
-4603074,052332,CSD,Carman,
-4603042,052550,CSD,Plum Coulee,
-4603036,052550,CSD,Rhineland,
-4604,051400-052500,CD,Division No. 4,
-4604039,051432,CSD,Louise,
-4604053,051431,CSD,Cartwright,
-4604046,051432,CSD,Crystal City,
-4604035,051442,CSD,Manitou,
-4604044,051432,CSD,Pilot Mound,
-4604063,051441,CSD,Lorne,
-4604068,051441,CSD,Swan Lake 7,
-4604066,051441,CSD,Somerset,
-4604057,051422,CSD,Argyle,
-4604033,051442,CSD,Pembina,
-4604051,051431,CSD,Roblin,
-4605,051300-051400,CD,Division No. 5,
-4605063,051312,CSD,Hartney,
-4605033,051340,CSD,Boissevain,
-4605047,051331,CSD,Waskada,
-4605070,051411-052252,CSD,Riverside,
-4605061,051312,CSD,Cameron,
-4605058,051311,CSD,Albert,
-4605050,051322,CSD,Arthur,
-4605037,051332,CSD,Winchester,
-4605031,051340,CSD,Morton,
-4605055,051321,CSD,Edward,
-4605043,051331,CSD,Brenda,
-4605025,051412,CSD,Killarney - Turtle Mountain,
-4605067,051313,CSD,Whitewater,
-4605076,051421,CSD,Strathcona,
-4605052,051322,CSD,Melita,
-4605039,051332,CSD,Deloraine,
-4606,051100,CD,Division No. 6,
-4606023,051160,CSD,Pipestone,
-4606028,051110,CSD,Wallace,
-4606040,051120,CSD,Sioux Valley Dakota Nation,
-4606034,051110,CSD,Virden,
-4606037,051120,CSD,Woodworth,
-4606018,051150,CSD,Oak Lake,
-4606030,051110,CSD,Elkhorn,
-4606029,051160,CSD,Canupawakpa Dakota First Nation (Oak Lake 59),
-4606015,051150-055121,CSD,Sifton,
-4607,051100-051200,CD,Division No. 7,
-4607062,051220,CSD,Brandon,
-4607041,051232,CSD,Glenboro,
-4607077,051130,CSD,Rivers,
-4607057,051140,CSD,Whitehead,
-4607071,051211,CSD,Elton,
-4607065,051231,CSD,North Cypress,
-4607075,051130,CSD,Daly,
-4607045,051213,CSD,Oakland,
-4607068,051231,CSD,Carberry,
-4607051,051170,CSD,Glenwood,
-4607053,051170,CSD,Souris,
-4607047,051213,CSD,Wawanesa,
-4607060,051212,CSD,Cornwallis,
-4607038,051232,CSD,South Cypress,
-4608,051200,CD,Division No. 8,
-4608054,055351,CSD,Lansdowne,
-4608031,051242,CSD,South Norfolk,
-4608061,055352,CSD,Gladstone,
-4608045,051241,CSD,North Norfolk,
-4608038,051242,CSD,Treherne,
-4608033,051242,CSD,Notre Dame de Lourdes,
-4608059,055352,CSD,Westbourne,
-4608069,055332,CSD,Sandy Bay 5,
-4608066,055353,CSD,Lakeview,
-4608042,051243,CSD,Victoria,
-4608048,051241,CSD,MacGregor,
-4608072,055340,CSD,Glenella,
-4609,052300,CD,Division No. 9,
-4609026,050000,CSD,Dakota Plains 6A,
-4609029,052311-052312,CSD,Portage la Prairie,
-4609024,052311-052312,CSD,Portage la Prairie,
-4609020,050000,CSD,St. Claude,
-4609025,050000,CSD,Long Plain (Part) 6,
-4609027,050000,CSD,Dakota Tipi 1,
-4609017,052331,CSD,Grey,
-4610,052200-053200-052400,CD,Division No. 10,
-4610052,052321,CSD,St. François Xavier,
-4610035,052340,CSD,Macdonald,
-4610043,052322,CSD,Cartier,
-4611,052100,CD,Division No. 11,
-4611042,052323,CSD,Headingley,
-4611040,052100,CSD,Winnipeg,
-4612,050000,CD,Division No. 12,
-4612054,052412-052422,CSD,Brokenhead,
-4612047,052431,CSD,Springfield,
-4612056,050000,CSD,Beausejour,
-4613,050000,CD,Division No. 13,
-4613062,052412-052422,CSD,Brokenhead 4,
-4613056,052412-052421,CSD,St. Clements,
-4613043,052242-052244,CSD,St. Andrews,
-4613032,052433,CSD,East St. Paul,
-4613037,052252,CSD,West St. Paul,
-4613049,050000,CSD,Dunnottar,
-4613047,052244,CSD,Selkirk,
-4614,052200,CD,Division No. 14,
-4614042,052241,CSD,Teulon,
-4614015,052251,CSD,Rosser,
-4614036,052241-052243,CSD,Rockwood,
-4614031,052232,CSD,Woodlands,
-4614039,052243,CSD,Stonewall,
-4615,055200,CD,Division No. 15,
-4615095,055111-055223,CSD,Park (South),
-4615071,050000,CSD,Rolling River 67,
-4615046,055233,CSD,Archie,
-4615041,055234,CSD,Miniota,
-4615038,055243,CSD,Hamiota,
-4615020,055261,CSD,Neepawa,
-4615078,055262,CSD,Rosedale,
-4615075,055254,CSD,Minnedosa,
-4615049,055211,CSD,Gambler 63 (Part),
-4615091,055253-055254,CSD,Clanwilliam,
-4615093,055253,CSD,Erickson,
-4615042,055234,CSD,Birdtail Creek 57,
-4615060,053243-055241,CSD,Shoal Lake,
-4615067,050000,CSD,Keeseekoowenin 61,
-4615057,055232,CSD,Birtle,
-4615033,055244,CSD,Blanshard,
-4615069,055251,CSD,Harrison,
-4615072,050000,CSD,Rolling River 67B,
-4615064,055242,CSD,Strathclair,
-4615023,055255,CSD,Odanah,
-4615029,055252,CSD,Rapid City,
-4615073,051313-055254,CSD,Minto,
-4615051,055231,CSD,St-Lazare,
-4615062,053243-055241,CSD,Shoal Lake,
-4615036,055243,CSD,Hamiota,
-4615018,055261,CSD,Langford,
-4615048,055231,CSD,Ellice,
-4615055,055232,CSD,Birtle,
-4615027,055252,CSD,Saskatchewan,
-4616,055100,CD,Division No. 16,
-4616046,055121-055132,CSD,Valley River 63A,
-4616019,055212,CSD,Silver Creek,
-4616025,055211,CSD,Gambler 63 (Part),
-4616049,055112,CSD,Shell River,
-4616052,055112,CSD,Roblin,
-4616017,055221,CSD,Waywayseecappo First Nation,
-4616032,055211,CSD,Russell,
-4616045,055113,CSD,Hillsburg,
-4616038,055114,CSD,Shellmouth-Boulton,
-4616024,055211,CSD,Russell,
-4616029,050000,CSD,Binscarth,
-4616002,055221,CSD,Rossburn,
-4616007,055221,CSD,Rossburn,
-4617,055100,CD,Division No. 17,
-4617050,055121,CSD,Dauphin,
-4617048,055121,CSD,Dauphin,
-4617076,055311,CSD,Lawrence,
-4617092,055100,CSD,"Division No. 17, Unorganized",
-4617067,055122,CSD,Ethelbert,
-4617057,055132,CSD,Grandview,
-4617053,055123,CSD,Gilbert Plains,
-4617071,055131,CSD,Mossey River,
-4617060,055132,CSD,Grandview,
-4617029,055322,CSD,Ebb and Flow 52,
-4617042,055321,CSD,Ste. Rose du Lac,
-4617073,055131,CSD,Winnipegosis,
-4617045,055133,CSD,Ochre River,
-4617040,055321,CSD,Ste. Rose,
-4617036,055331,CSD,McCreary,
-4617063,055122,CSD,Ethelbert,
-4617026,055312-055322-055332,CSD,Alonsa,
-4617034,055331,CSD,McCreary,
-4617055,055123,CSD,Gilbert Plains,
-4618,052200,CD,Division No. 18,
-4618077,054242,CSD,Riverton,
-4618068,054222-054241,CSD,Fisher,
-4618091,052200,CSD,"Division No. 18, Unorganized, East Part",
-4618074,054242,CSD,Arborg,
-4618067,054211,CSD,Fairford (Part) 50,
-4618057,054231,CSD,Siglunes,
-4618034,052223,CSD,Winnipeg Beach,
-4618071,054242,CSD,Bifrost,
-4618044,052212,CSD,Coldwell,
-4618060,054211-054212-054232,CSD,Grahamdale,
-4618063,050000,CSD,Little Saskatchewan 48,
-4618093,052200,CSD,"Division No. 18, Unorganized, West Part",
-4618052,052211,CSD,Eriksdale,
-4618037,052221-052222,CSD,Armstrong,
-4618031,052223,CSD,Gimli,
-4618055,052211,CSD,Dog Creek 46,
-4618040,052231,CSD,St. Laurent,
-4619,056100,CD,Division No. 19,
-4619072,056222,CSD,Shoal River Indian Reserve 65A,
-4619079,050000,CSD,Pauingassi First Nation,
-4619060,054211,CSD,Fairford (Part) 50,
-4619077,057310,CSD,Berens River 13,
-4619062,055121,CSD,Dauphin River 48A,
-4619052,057330,CSD,Bloodvein 12,
-4619068,055312,CSD,Crane River 51,
-4619056,050000,CSD,Fisher River 44,
-4619050,050000,CSD,Fort Alexander 3,
-4619082,050000,CSD,Chemawawin 3,
-4619059,054222,CSD,Peguis 1B,
-4619045,056100,CSD,"Division No. 19, Unorganized",
-4619070,050000,CSD,Pine Creek 66A,
-4619069,054120,CSD,Waterhen 45,
-4619051,054110-057320,CSD,Little Grand Rapids 14,
-4619058,050000,CSD,Fisher River 44A,
-4619054,050000,CSD,Black River 9,
-4619075,057200,CSD,Poplar River 16,
-4619065,050000,CSD,The Narrows 49,
-4619071,050000,CSD,Swan Lake 65C,
-4619061,054221,CSD,Jackhead 43,
-4619053,050000,CSD,Hole or Hollow Water 10,
-4620,056200,CD,Division No. 20,
-4620032,056221-056242,CSD,Mountain (South),
-4620048,056231,CSD,Swan River,
-4620039,056232,CSD,Minitonas,
-4620055,056221-056242,CSD,Mountain (North),
-4620069,056200,CSD,"Division No. 20, Unorganized, North Part",
-4620052,056231,CSD,Bowsman,
-4620066,056200,CSD,"Division No. 20, Unorganized, South Part",
-4620043,056231,CSD,Benito,
-4620041,056231,CSD,Swan River,
-4620037,056232,CSD,Minitonas,
-4621,056100,CD,Division No. 21,
-4621071,058510,CSD,Snow Lake,
-4621043,050000,CSD,Opaskwayak Cree Nation 21E,
-4621027,054110,CSD,Grand Rapids 33,
-4621078,056100,CSD,"Division No. 21, Unorganized",
-4621034,050000,CSD,Opaskwayak Cree Nation 21B,
-4621025,054110,CSD,Grand Rapids,
-4621052,050000,CSD,Kelsey,
-4621033,050000,CSD,Opaskwayak Cree Nation 21A,
-4621040,050000,CSD,Opaskwayak Cree Nation 21I,
-4621058,056120,CSD,Moose Lake 31A,
-4621029,050000,CSD,Chemawawin 2,
-4621035,050000,CSD,Opaskwayak Cree Nation 21C,
-4621064,058520,CSD,Flin Flon (Part),
-4621045,056110,CSD,The Pas,
-4622,058400,CD,Division No. 22,
-4622050,059510,CSD,Oxford House 24,
-4622055,050000,CSD,God's River 86A,
-4622064,050000,CSD,Ilford,
-4622801,050000,CSD,St. Theresa Point,
-4622051,057120,CSD,Cross Lake 19,
-4622800,050000,CSD,Wasagamack,
-4622065,058420,CSD,York Landing,
-4622067,057120,CSD,Cross Lake 19E,
-4622046,058400,CSD,"Division No. 22, Unorganized",
-4622063,058420,CSD,Split Lake (Part) 171,
-4622017,050000,CSD,Mystery Lake,
-4622049,059510,CSD,God's Lake 23,
-4622026,052520,CSD,Thompson,
-4622058,057150,CSD,Norway House 17,
-4622048,050000,CSD,Garden Hill First Nation,
-4622059,058440,CSD,Nelson House 170,
-4622052,057120,CSD,Cross Lake 19A,
-4622056,059510,CSD,Red Sucker Lake 1976,
-4623,059300,CD,Division No. 23,
-4623056,059100,CSD,Churchill,
-4623039,050000,CSD,Granville Lake,
-4623064,058330,CSD,Pukatawagan 198,
-4623022,059300,CSD,Gillam,
-4623060,058420,CSD,Split Lake (Part) 171,
-4623071,059400,CSD,Shamattawa 1,
-4623058,059100,CSD,Churchill 1,
-4623062,059300,CSD,"Division No. 23, Unorganized",
-4623025,059300,CSD,Gillam,
-4623034,058320,CSD,Leaf Rapids,
-4623027,050000,CSD,Fox Lake 2,
-4623047,058310,CSD,Lynn Lake,
-4623067,058100,CSD,Lac Brochet 197A,
-4623037,058410,CSD,South Indian Lake,
-4623065,058100,CSD,Brochet 197,
-35,040000,PT,Ontario,
-3501,043710-043720-043730-043740,CD,"Stormont, Dundas and Glengarry",
-3501050,043710-043720-043730-043740,CSD,North Glengarry,
-3501042,043710-043720-043730-043740,CSD,North Stormont,
-3501005,043710-043720-043730-043740,CSD,South Glengarry,
-3501011,043710-043720-043730-043740,CSD,South Stormont,
-3501007,043710-043720-043730-043740,CSD,Akwesasne (Part) 59,
-3501012,043720,CSD,Cornwall,
-3501020,043710-043720-043730-043740,CSD,South Dundas,
-3501030,043710-043720-043730-043740,CSD,North Dundas,
-3502,045100,CD,Prescott and Russell,
-3502001,045100,CSD,East Hawkesbury,
-3502048,045100,CSD,Russell,
-3502010,045100,CSD,Champlain,
-3502044,045100,CSD,Casselman,
-3502008,045100,CSD,Hawkesbury,
-3502023,045100,CSD,Alfred and Plantagenet,
-3502036,045100,CSD,Clarence-Rockland,
-3502025,045100,CSD,The Nation / La Nation,
-3506,045410-045420,CD,Ottawa,
-3506008,045410-045420,CSD,Ottawa,
-3507,043610-043620-043630-043640,CD,Leeds and Grenville,
-3507065,043610,CSD,North Grenville,
-3507014,043630,CSD,Elizabethtown-Kitley,
-3507015,043630,CSD,Brockville,
-3507017,043640,CSD,Front of Yonge,
-3507033,043620,CSD,Westport,
-3507042,043640,CSD,Athens,
-3507004,043640,CSD,Edwardsburgh/Cardinal,
-3507052,043610,CSD,Merrickville-Wolford,
-3507021,043640,CSD,Leeds and the Thousand Islands,
-3507040,043620,CSD,Rideau Lakes,
-3507008,043630,CSD,Prescott,
-3507024,043640,CSD,Gananoque,
-3507006,043630,CSD,Augusta,
-3509,045310-045320,CD,Lanark,
-3509001,045310-045320,CSD,Montague,
-3509004,045310,CSD,Smiths Falls,
-3509015,045310-045320,CSD,Tay Valley,
-3509028,045310-045320,CSD,Carleton Place,
-3509010,045310-045320,CSD,Drummond/North Elmsley,
-3509024,045310-045320,CSD,Beckwith,
-3509030,045310-045320,CSD,Mississippi Mills,
-3509039,045310-045320,CSD,Lanark Highlands,
-3509021,045310,CSD,Perth,
-3510,043410-043420,CD,Frontenac,
-3510045,043410-043420,CSD,North Frontenac,
-3510020,043410-043420,CSD,South Frontenac,
-3510035,043410-043420,CSD,Central Frontenac,
-3510010,043510,CSD,Kingston,
-3510005,043510,CSD,Frontenac Islands,
-3511,043510-043520-043410-043420-044610-046620,CD,Lennox and Addington,
-3511030,040000,CSD,Stone Mills,
-3511005,040000,CSD,Loyalist,
-3511015,043520,CSD,Greater Napanee,
-3511035,040000,CSD,Addington Highlands,
-3512,044610,CD,Hastings,
-3512065,040000,CSD,Carlow/Mayo,
-3512030,043420,CSD,Tweed,
-3512020,043420,CSD,Stirling-Rawdon,
-3512001,040000,CSD,Tyendinaga,
-3512002,040000,CSD,Deseronto,
-3512076,040000,CSD,Hastings Highlands,
-3512048,040000,CSD,Tudor and Cashel,
-3512054,040000,CSD,Wollaston,
-3512036,040000,CSD,Madoc,
-3512026,040000,CSD,Centre Hastings,
-3512061,040000,CSD,Bancroft,
-3512046,040000,CSD,Marmora and Lake,
-3512005,040000,CSD,Belleville,
-3512004,040000,CSD,Tyendinaga Mohawk Territory,
-3512051,040000,CSD,Limerick,
-3512015,043310,CSD,Quinte West,
-3512058,040000,CSD,Faraday,
-3513,043510-043520-043530,CD,Prince Edward,
-3513020,043510-043520-043530,CSD,Prince Edward,
-3514,043300-043310-043320,CD,Northumberland,
-3514014,043310-043320,CSD,Cramahe,
-3514020,043310-043320,CSD,Port Hope,
-3514004,043310-043320,CSD,Brighton,
-3514027,043310-043320,CSD,Alderville First Nation,
-3514019,043310-043320,CSD,Hamilton,
-3514021,043310-043320,CSD,Cobourg,
-3514024,043310-043320,CSD,Alnwick/Haldimand,
-3514045,043310-043320,CSD,Trent Hills,
-3515,044740,CD,Peterborough,
-3515015,040000,CSD,Smith-Ennismore-Lakefield,
-3515037,040000,CSD,North Kawartha,
-3515019,040000,CSD,Curve Lake First Nation 35,
-3515003,040000,CSD,Asphodel-Norwood,
-3515008,040000,CSD,Hiawatha First Nation,
-3515005,040000,CSD,Otonabee-South Monaghan,
-3515030,040000,CSD,Havelock-Belmont-Methuen,
-3515023,040000,CSD,Douro-Dummer,
-3515014,044740,CSD,Peterborough,
-3515013,040000,CSD,Cavan Monaghan,
-3515044,040000,CSD,Galway-Cavendish and Harvey,
-3516,044710-044730,CD,Kawartha Lakes,
-3516010,044710-044730,CSD,Kawartha Lakes,
-3518,043200-043210-043230,CD,Durham,
-3518005,043230,CSD,Ajax,
-3518001,043230,CSD,Pickering,
-3518017,043230,CSD,Clarington,
-3518020,044730,CSD,Scugog,
-3518029,043210,CSD,Uxbridge,
-3518022,044730,CSD,Mississaugas of Scugog Island,
-3518009,043230,CSD,Whitby,
-3518013,043230,CSD,Oshawa,
-3518039,043210,CSD,Brock,
-3519,043200,CD,York,
-3519049,043240,CSD,King,
-3519046,040000,CSD,Aurora,
-3519036,043240,CSD,Markham,
-3519038,043240,CSD,Richmond Hill,
-3519028,043240,CSD,Vaughan,
-3519070,043220,CSD,Georgina,
-3519054,040000,CSD,East Gwillimbury,
-3519044,040000,CSD,Whitchurch-Stouffville,
-3519048,043220,CSD,Newmarket,
-3519076,040000,CSD,Chippewas of Georgina Island First Nation,
-3520,043100,CD,Toronto,
-3520005,043100,CSD,Toronto,
-3521,046600,CD,Peel,
-3521010,046620,CSD,Brampton,
-3521005,046620,CSD,Mississauga,
-3521024,046610,CSD,Caledon,
-3522,046500-046510-046520-046530,CD,Dufferin,
-3522012,040000,CSD,Mono,
-3522021,040000,CSD,Shelburne,
-3522016,040000,CSD,Mulmur,
-3522019,040000,CSD,Melancthon,
-3522014,040000,CSD,Orangeville,
-3522001,040000,CSD,East Garafraxa,
-3522010,040000,CSD,East Luther Grand Valley,
-3522008,040000,CSD,Amaranth,
-3523,046410-046420,CD,Wellington,
-3523009,046420,CSD,Guelph/Eramosa,
-3523043,040000,CSD,Minto,
-3523033,040000,CSD,Mapleton,
-3523008,046420,CSD,Guelph,
-3523017,046420,CSD,Erin,
-3523025,046410-046420,CSD,Centre Wellington,
-3523001,040000,CSD,Puslinch,
-3523050,040000,CSD,Wellington North,
-3524,046600,CD,Halton,
-3524015,046630,CSD,Halton Hills,
-3524001,046640,CSD,Oakville,
-3524009,046630,CSD,Milton,
-3524002,046640,CSD,Burlington,
-0,046100,CD,Hamilton,
-3525005,046100,CSD,Hamilton,
-3526,046700-046710-046720,CD,Niagara,
-3526028,040000,CSD,Pelham,
-3526011,040000,CSD,Port Colborne,
-3526037,040000,CSD,Thorold,
-3526057,040000,CSD,Lincoln,
-3526032,046720,CSD,Welland,
-3526053,046710,CSD,St. Catharines,
-3526003,040000,CSD,Fort Erie,
-3526021,040000,CSD,West Lincoln,
-3526047,040000,CSD,Niagara-on-the-Lake,
-3526065,046710,CSD,Grimsby,
-3526043,046720,CSD,Niagara Falls,
-3526014,040000,CSD,Wainfleet,
-3528,041100-041200,CD,Haldimand-Norfolk,
-3528018,041200,CSD,Haldimand County,
-3528037,040000,CSD,Six Nations (Part) 40,
-3528035,040000,CSD,New Credit (Part) 40A,
-3528052,041100,CSD,Norfolk County,
-3529,041720,CD,Brant,
-3529021,041720,CSD,New Credit (Part) 40A,
-3529005,041720,CSD,Brant,
-3529006,041720,CSD,Brantford,
-3529020,041720,CSD,Six Nations (Part) 40,
-3530,046400-046430,CD,Waterloo,
-3530035,046430,CSD,Woolwich,
-3530027,046430,CSD,Wellesley,
-3530013,046430,CSD,Kitchener,
-3530020,046430,CSD,Wilmot,
-3530016,046430,CSD,Waterloo,
-3530004,046430,CSD,North Dumfries,
-3530010,046430,CSD,Cambridge,
-3531,046300,CD,Perth,
-3531016,046340,CSD,St. Marys,
-3531013,046340,CSD,Perth South,
-3531030,046320,CSD,Perth East,
-3531040,046320,CSD,North Perth,
-3531011,046340,CSD,Stratford,
-3531025,046340,CSD,West Perth,
-3532,041710,CD,Oxford,
-3532002,040000,CSD,Norwich,
-3532012,041710,CSD,South-West Oxford,
-3532004,041710,CSD,Tillsonburg,
-3532045,040000,CSD,Blandford-Blenheim,
-3532027,040000,CSD,Zorra,
-3532042,041710,CSD,Woodstock,
-3532038,040000,CSD,East Zorra-Tavistock,
-3532018,040000,CSD,Ingersoll,
-3534,041600,CD,Elgin,
-3534010,040000,CSD,Malahide,
-3534011,041610,CSD,Aylmer,
-3534042,041620,CSD,West Elgin,
-3534005,040000,CSD,Bayham,
-3534021,041610,CSD,St. Thomas,
-3534024,040000,CSD,Southwold,
-3534020,041610-041620,CSD,Central Elgin,
-3534030,040000,CSD,Dutton/Dunwich,
-3536,041410,CD,Chatham-Kent,
-3536020,041410,CSD,Chatham-Kent,
-3536029,040000,CSD,Moravian 47,
-3537,041420,CD,Essex,
-3537003,041420,CSD,Leamington,
-3537016,041420,CSD,Essex,
-3537048,040000,CSD,Tecumseh,
-3537034,040000,CSD,LaSalle,
-3537013,040000,CSD,Kingsville,
-3537001,040000,CSD,Pelee,
-3537064,040000,CSD,Lakeshore,
-3537039,041420,CSD,Windsor,
-3537028,040000,CSD,Amherstburg,
-3538,041310-041320,CD,Lambton,
-3538016,040000,CSD,Enniskillen,
-3538003,040000,CSD,St. Clair,
-3538007,040000,CSD,Dawn-Euphemia,
-3538031,040000,CSD,Point Edward,
-3538015,040000,CSD,Brooke-Alvinston,
-3538030,041320,CSD,Sarnia,
-3538040,041310-041320,CSD,Lambton Shores,
-3538043,040000,CSD,Warwick,
-3538056,040000,CSD,Kettle Point 44,
-3538025,041320,CSD,Sarnia 45,
-3538019,041320,CSD,Petrolia,
-3538018,040000,CSD,Oil Springs,
-3538035,040000,CSD,Plympton-Wyoming,
-3538004,040000,CSD,Walpole Island 46,
-3539,041510-041520,CD,Middlesex,
-3539018,040000,CSD,Munsee-Delaware Nation 1,
-3539015,041520,CSD,Strathroy-Caradoc,
-3539005,041520,CSD,Southwest Middlesex,
-3539021,040000,CSD,Oneida 41,
-3539036,041510,CSD,London,
-3539027,040000,CSD,Thames Centre,
-3539033,041510-041520,CSD,Middlesex Centre,
-3539047,040000,CSD,Adelaide Metcalfe,
-3539017,040000,CSD,Chippewas of the Thames First Nation 42,
-3539060,040000,CSD,Lucan Biddulph,
-3539002,040000,CSD,Newbury,
-3539041,041510-041520,CSD,North Middlesex,
-3540,046310-046330,CD,Huron,
-3540028,046330,CSD,Goderich,
-3540010,046330,CSD,Bluewater,
-3540025,046310-046330,CSD,Central Huron,
-3540055,046310,CSD,North Huron,
-3540063,040000,CSD,Ashfield-Colborne-Wawanosh,
-3540046,040000,CSD,Howick,
-3540050,040000,CSD,Morris-Turnberry,
-3540040,046310-046330,CSD,Huron East,
-3540005,046330,CSD,South Huron,
-3541,046210,CD,Bruce,
-3541069,046210,CSD,Northern Bruce Peninsula,
-3541032,040000,CSD,Brockton,
-3541045,046230,CSD,Saugeen Shores,
-3541055,046230,CSD,South Bruce Peninsula,
-3541057,046230,CSD,Saugeen 29,
-3541060,040000,CSD,Neyaashiinigmiing 27,
-3541043,040000,CSD,Arran-Elderslie,
-3541024,046230,CSD,Kincardine,
-3541004,046230,CSD,South Bruce,
-3541015,040000,CSD,Huron-Kinloss,
-3542,046200-046220-046240,CD,Grey,
-3542029,040000,CSD,Hanover,
-3542004,046220-046240,CSD,West Grey,
-3542037,040000,CSD,Chatsworth,
-3542045,046220,CSD,Blue Mountains,
-3542059,040000,CSD,Owen Sound,
-3542047,040000,CSD,Meaford,
-3542053,040000,CSD,Georgian Bluffs,
-3542015,046220-046240,CSD,Grey Highlands,
-3542005,040000,CSD,Southgate,
-3543,041100,CD,Simcoe,
-3543064,040000,CSD,Wasaga Beach,
-3543014,040000,CSD,Bradford West Gwillimbury,
-3543007,040000,CSD,New Tecumseth,
-3543050,040000,CSD,Mnjikaning First Nation 32 (Rama First Nation 32),
-3543015,040000,CSD,Severn,
-3543019,040000,CSD,Ramara,
-3543072,040000,CSD,Penetanguishene,
-3543052,044120,CSD,Orillia,
-3543069,040000,CSD,Christian Island 30,
-3543017,046510,CSD,Innisfil,
-3543005,040000,CSD,Clearview,
-3543074,044110,CSD,Midland,
-3543070,040000,CSD,Christian Island 30A,
-3543023,040000,CSD,Oro-Medonte,
-3543031,044130,CSD,Collingwood,
-3543042,044130,CSD,Barrie,
-3543021,040000,CSD,Essa,
-3543003,040000,CSD,Adjala-Tosorontio,
-3543071,040000,CSD,Tay,
-3543009,040000,CSD,Springwater,
-3543068,040000,CSD,Tiny,
-3544,044410-044420-044430-044440,CD,Muskoka,
-3544042,044410,CSD,Huntsville,
-3544071,040000,CSD,Wahta Mohawk Territory,
-3544073,040000,CSD,Moose Point 79,
-3544018,044440,CSD,Bracebridge,
-3544027,040000,CSD,Lake of Bays,
-3544053,044410-044420-044430-044440,CSD,Muskoka Lakes,
-3544065,040000,CSD,Georgian Bay,
-3544002,044440,CSD,Gravenhurst,
-3546,044500-044510-044520,CD,Haliburton,
-3546024,040000,CSD,Dysart and Others,
-3546005,040000,CSD,Highlands East,
-3546015,040000,CSD,Minden Hills,
-3546018,040000,CSD,Algonquin Highlands,
-3547,045230,CD,Renfrew,
-3547037,040000,CSD,Pikwakanagan (Golden Lake 39),
-3547046,040000,CSD,Horton,
-3547002,040000,CSD,Arnprior,
-3547020,040000,CSD,"Brudenell, Lyndoch and Raglan",
-3547030,040000,CSD,Madawaska Valley,
-3547008,040000,CSD,Greater Madawaska,
-3547075,040000,CSD,Laurentian Valley,
-3547003,040000,CSD,McNab/Braeside,
-3547048,045230,CSD,Renfrew,
-3547035,040000,CSD,Bonnechere Valley,
-3547076,045210,CSD,Petawawa,
-3547098,040000,CSD,"Head, Clara and Maria",
-3547064,045210,CSD,Pembroke,
-3547090,040000,CSD,Laurentian Hills,
-3547096,040000,CSD,Deep River,
-3547070,040000,CSD,North Algona Wilberforce,
-3547043,040000,CSD,Admaston/Bromley,
-3547033,040000,CSD,"Killaloe, Hagarty and Richards",
-3547056,040000,CSD,Whitewater Region,
-3548,049810,CD,Nipissing,
-3548022,040000,CSD,Calvin,
-3548027,040000,CSD,Bonfield,
-3548019,049820,CSD,Mattawan,
-3548055,049810,CSD,West Nipissing / Nipissing Ouest,
-3548072,040000,CSD,Bear Island 1,
-3548044,049820,CSD,North Bay,
-3548094,049810-049820,CSD,"Nipissing, Unorganized, North Part",
-3548034,040000,CSD,East Ferris,
-3548091,049810-049820,CSD,"Nipissing, Unorganized, South Part",
-3548069,040000,CSD,Temagami,
-3548073,049810-049820,CSD,Nipissing 10,
-3548031,040000,CSD,Chisholm,
-3548013,040000,CSD,Papineau-Cameron,
-3548021,049820,CSD,Mattawa,
-3548001,040000,CSD,South Algonquin,
-3549,044420,CD,Parry Sound,
-3549077,040000,CSD,Dokis 9,
-3549018,040000,CSD,Kearney,
-3549003,040000,CSD,Seguin,
-3549036,044430,CSD,Carling,
-3549056,040000,CSD,South River,
-3549076,040000,CSD,French River 13,
-3549031,040000,CSD,McDougall,
-3549032,044420,CSD,Parry Sound,
-3549066,040000,CSD,Callander,
-3549096,044420,CSD,"Parry Sound, Unorganized, Centre Part",
-3549039,040000,CSD,Whitestone,
-3549024,040000,CSD,Ryerson,
-3549014,040000,CSD,Perry,
-3549095,044420,CSD,"Parry Sound, Unorganized, North East Part",
-3549071,040000,CSD,Nipissing,
-3549046,040000,CSD,Strong,
-3549022,040000,CSD,Burk's Falls,
-3549072,040000,CSD,Shawanaga 17,
-3549043,040000,CSD,Magnetawan,
-3549078,040000,CSD,Magnetewan 1,
-3549005,040000,CSD,The Archipelago,
-3549028,040000,CSD,McKellar,
-3549051,040000,CSD,Joly,
-3549019,040000,CSD,Armour,
-3549012,040000,CSD,McMurrich/Monteith,
-3549060,040000,CSD,Powassan,
-3549048,040000,CSD,Sundridge,
-3549075,040000,CSD,Henvey Inlet 2,
-3549073,040000,CSD,Parry Island First Nation,
-3549054,040000,CSD,Machar,
-3551,049910-049920-049930,CD,Manitoulin,
-3551094,049910-049920-049930,CSD,"Manitoulin, Unorganized, West Part",
-3551045,040000,CSD,M'Chigeeng 22 (West Bay 22),
-3551091,049910-049920-049930,CSD,"Manitoulin, Unorganized, Mainland",
-3551040,040000,CSD,Whitefish River (Part) 4,
-3551021,040000,CSD,Billings,
-3551041,040000,CSD,Sucker Creek 23,
-3551034,040000,CSD,Cockburn Island,
-3551028,040000,CSD,Burpee and Mills,
-3551027,040000,CSD,Gordon/Barrie Island,
-3551100,040000,CSD,Zhiibaahaasing 19A (Cockburn Island 19A),
-3551011,040000,CSD,Assiginack,
-3551017,040000,CSD,Northeastern Manitoulin and the Islands,
-3551043,040000,CSD,Wikwemikong Unceded,
-3551042,040000,CSD,Sheguiandah 24,
-3551044,040000,CSD,Sheshegwaning 20,
-3551001,040000,CSD,Tehkummah,
-3551036,040000,CSD,Killarney,
-3551026,040000,CSD,Gore Bay,
-3551006,040000,CSD,Central Manitoulin,
-3552,049100,CD,Sudbury,
-3552013,049100,CSD,Markstay-Warren,
-3552054,049100,CSD,Duck Lake 76B,
-3552028,049100,CSD,Baldwin,
-3552023,049100,CSD,Sables-Spanish Rivers,
-3552052,049100,CSD,Mattagami 71,
-3552092,049100,CSD,Chapleau,
-3552051,049100,CSD,Whitefish Lake 6,
-3552031,049100,CSD,Nairn and Hyman,
-3552093,049100,CSD,"Sudbury, Unorganized, North Part",
-3552053,049100,CSD,Chapleau 74A,
-3552026,049100,CSD,Espanola,
-3552058,049100,CSD,Chapleau 75,
-3552004,049100,CSD,St.-Charles,
-3552001,049100,CSD,French River / Rivière des Français,
-3553,049100,CD,Greater Sudbury / Grand Sudbury,
-3553005,049100,CSD,Greater Sudbury / Grand Sudbury,
-3553040,049100,CSD,Wahnapitei 11,
-3554,040000,CD,Timiskaming,
-3554094,040000,CSD,"Timiskaming, Unorganized, West Part",
-3554042,040000,CSD,James,
-3554044,040000,CSD,Charlton and Dack,
-3554038,040000,CSD,Thornloe,
-3554057,040000,CSD,Matachewan 72,
-3554029,040000,CSD,Casey,
-3554014,040000,CSD,Harris,
-3554036,040000,CSD,Armstrong,
-3554068,040000,CSD,Kirkland Lake,
-3554034,040000,CSD,Hilliard,
-3554052,040000,CSD,Englehart,
-3554021,040000,CSD,Hudson,
-3554006,040000,CSD,Latchford,
-3554091,040000,CSD,"Timiskaming, Unorganized, East Part",
-3554026,040000,CSD,Harley,
-3554058,040000,CSD,McGarry,
-3554049,040000,CSD,Evanturel,
-3554054,040000,CSD,Chamberlain,
-3554056,040000,CSD,Matachewan,
-3554024,040000,CSD,Kerns,
-3554008,040000,CSD,Cobalt,
-3554066,040000,CSD,Gauthier,
-3554062,040000,CSD,Larder Lake,
-3554032,040000,CSD,Brethour,
-3554020,040000,CSD,Temiskaming Shores,
-3554001,040000,CSD,Coleman,
-3556,049520,CD,Cochrane,
-3556093,049310,CSD,Fort Albany (Part) 67,
-3556095,040000,CSD,Constance Lake 92,
-3556077,040000,CSD,Mattice-Val Côté,
-3556073,040000,CSD,Opasatika,
-3556056,040000,CSD,Moonbeam,
-3556048,040000,CSD,Smooth Rock Falls,
-3556098,049520,CSD,"Cochrane, Unorganized, South East Part",
-3556070,040000,CSD,Val Rita-Harty,
-3556102,040000,CSD,New Post 69A,
-3556014,040000,CSD,Black River-Matheson,
-3556076,040000,CSD,Hearst,
-3556092,040000,CSD,"Cochrane, Unorganized, North Part",
-3556027,049520,CSD,Timmins,
-3556100,040000,CSD,Flying Post 73,
-3556042,049520,CSD,Cochrane,
-3556106,049320,CSD,Moosonee,
-3556094,040000,CSD,Factory Island 1,
-3556052,040000,CSD,Fauquier-Strickland,
-3556066,040000,CSD,Kapuskasing,
-3556031,040000,CSD,Iroquois Falls,
-3556033,049510,CSD,Abitibi 70,
-3556096,040000,CSD,Moose Factory 68,
-3556091,049520,CSD,"Cochrane, Unorganized, South West Part",
-3557,040000,CD,Algoma,
-3557039,040000,CSD,Spanish,
-3557001,040000,CSD,Jocelyn,
-3557066,040000,CSD,Prince,
-3557011,040000,CSD,Laird,
-3557040,040000,CSD,North Shore,
-3557026,040000,CSD,Thessalon 12,
-3557004,040000,CSD,Hilton,
-3557095,040000,CSD,"Algoma, Unorganized, North Part",
-3557076,040000,CSD,Wawa,
-3557075,040000,CSD,Rankin Location 15D,
-3557016,040000,CSD,Johnson,
-3557021,040000,CSD,Bruce Mines,
-3557073,040000,CSD,Mississagi River 8,
-3557028,040000,CSD,Thessalon,
-3557041,040000,CSD,Elliot Lake,
-3557074,040000,CSD,Garden River 14,
-3557079,040000,CSD,Dubreuilville,
-3557014,040000,CSD,Tarbutt and Tarbutt Additional,
-3557091,040000,CSD,White River,
-3557078,040000,CSD,Gros Cap 49,
-3557038,040000,CSD,Blind River,
-3557035,040000,CSD,Huron Shores,
-3557072,040000,CSD,Serpent River 7,
-3557094,040000,CSD,"Algoma, Unorganized, South East Part",
-3557008,040000,CSD,St. Joseph,
-3557096,040000,CSD,Hornepayne,
-3557071,040000,CSD,Sagamok,
-3557006,040000,CSD,Hilton Beach,
-3557061,040000,CSD,Sault Ste. Marie,
-3557051,040000,CSD,"Macdonald, Meredith and Aberdeen Additional",
-3557019,040000,CSD,Plummer Additional,
-3557077,040000,CSD,Goulais Bay 15A,
-3558,048100,CD,Thunder Bay,
-3558097,040000,CSD,Whitesand,
-3558064,040000,CSD,Lake Helen 53A,
-3558075,040000,CSD,Greenstone,
-3558080,040000,CSD,Ojibway Nation of Saugeen (Savant Lake),
-3558076,040000,CSD,Aroland 83,
-3558077,040000,CSD,Lake Nipigon,
-3558063,040000,CSD,Pays Plat 51,
-3558051,040000,CSD,Schreiber,
-3558028,040000,CSD,Shuniah,
-3558085,040000,CSD,Osnaburgh 63A,
-3558044,040000,CSD,Nipigon,
-3558041,040000,CSD,Red Rock,
-3558059,040000,CSD,Marathon,
-3558019,040000,CSD,Conmee,
-3558004,048100,CSD,Thunder Bay,
-3558060,040000,CSD,Pic Mobert North,
-3558016,040000,CSD,O'Connor,
-3558069,040000,CSD,Rocky Bay 1,
-3558011,040000,CSD,Oliver Paipoonge,
-3558090,048100,CSD,"Thunder Bay, Unorganized",
-3558068,040000,CSD,Long Lake 58,
-3558065,040000,CSD,Gull River 55,
-3558062,040000,CSD,Pic River 50,
-3558067,040000,CSD,Ginoogaming First Nation,
-3558066,040000,CSD,Manitouwadge,
-3558034,040000,CSD,Dorion,
-3558012,040000,CSD,Gillies,
-3558061,040000,CSD,Pic Mobert South,
-3558095,040000,CSD,Seine River 22A2,
-3558054,040000,CSD,Terrace Bay,
-3558100,040000,CSD,Lac des Mille Lacs 22A1,
-3558001,040000,CSD,Neebing,
-3558003,040000,CSD,Fort William 52,
-3559,047510,CD,Rainy River,
-3559031,040000,CSD,Morley,
-3559068,047510-047520,CSD,Rainy Lake 17A,
-3559001,040000,CSD,Atikokan,
-3559026,040000,CSD,Manitou Rapids 11,
-3559011,040000,CSD,Alberton,
-3559090,047510,CSD,"Rainy River, Unorganized",
-3559024,040000,CSD,Chapple,
-3559065,040000,CSD,Seine River 23B,
-3559062,040000,CSD,Agency 1,
-3559048,040000,CSD,Sabaskong Bay (Part) 35C,
-3559051,040000,CSD,Big Grassy River 35G,
-3559063,040000,CSD,Couchiching 16A,
-3559092,040000,CSD,Long Sault 12,
-3559060,040000,CSD,Neguaguon Lake 25D,
-3559069,047510-047520,CSD,Rainy Lake 17B,
-3559066,040000,CSD,Seine River 23A,
-3559012,047510,CSD,Fort Frances,
-3559047,040000,CSD,Lake of the Woods,
-3559064,040000,CSD,Rainy Lake 26A,
-3559016,040000,CSD,La Vallee,
-3559052,040000,CSD,Big Island Mainland 93,
-3559053,040000,CSD,Saug-a-Gaw-Sing 1,
-3559040,040000,CSD,Dawson,
-3559042,040000,CSD,Rainy River,
-3559019,047510,CSD,Emo,
-3559061,047510-047520,CSD,Rainy Lake 18C,
-3560,047310,CD,Kenora,
-3560100,040000,CSD,Wawakapewin (Long Dog Lake),
-3560071,040000,CSD,Sandy Lake 88,
-3560059,040000,CSD,Weagamow Lake 87,
-3560085,040000,CSD,Wunnumin 1,
-3560053,042720,CSD,Fort Hope 64,
-3560084,040000,CSD,Wabauskang 21,
-3560082,040000,CSD,Shoal Lake (Part) 40,
-3560067,040000,CSD,Poplar Hill,
-3560005,040000,CSD,Whitefish Bay 33A,
-3560097,040000,CSD,Muskrat Dam Lake,
-3560051,042100,CSD,Attawapiskat 91A,
-3560050,049310,CSD,Fort Albany (Part) 67,
-3560061,040000,CSD,Wabaseemoong,
-3560027,040000,CSD,Dryden,
-3560075,040000,CSD,Kitchenuhmaykoosib Aaki 84 (Big Trout Lake),
-3560104,040000,CSD,Kee-Way-Win,
-3560093,040000,CSD,Neskantaga,
-3560021,040000,CSD,Machin,
-3560068,040000,CSD,Shoal Lake (Part) 39A,
-3560064,040000,CSD,Shoal Lake 34B2,
-3560032,040000,CSD,Ear Falls,
-3560090,047310,CSD,"Kenora, Unorganized",
-3560078,042200,CSD,Fort Severn 89,
-3560076,040000,CSD,Sachigo Lake 1,
-3560088,040000,CSD,Wapekeka 2,
-3560086,040000,CSD,Summer Beaver,
-3560070,040000,CSD,Deer Lake,
-3560052,040000,CSD,Marten Falls 65,
-3560055,040000,CSD,Osnaburgh 63B,
-3560034,047220,CSD,Sioux Lookout,
-3560024,040000,CSD,Eagle Lake 27,
-3560083,040000,CSD,Whitefish Bay 34A,
-3560081,040000,CSD,Lansdowne House,
-3560095,040000,CSD,Bearskin Lake,
-3560054,040000,CSD,Cat Lake 63C,
-3560046,040000,CSD,Slate Falls,
-3560004,040000,CSD,Whitefish Bay 32A,
-3560063,040000,CSD,Sabaskong Bay 35D,
-3560079,042710,CSD,Webequie,
-3560080,040000,CSD,North Spirit Lake,
-3560042,040000,CSD,Red Lake,
-3560010,047310,CSD,Kenora,
-3560008,047320,CSD,Sioux Narrows - Nestor Falls,
-3560060,040000,CSD,Northwest Angle 33B,
-3560096,040000,CSD,Kasabonika Lake,
-3560102,040000,CSD,MacDowell Lake,
-3560058,040000,CSD,English River 21,
-3560089,040000,CSD,The Dalles 38C,
-3560007,040000,CSD,Sabaskong Bay (Part) 35C,
-3560091,042300,CSD,Peawanuck,
-3560098,040000,CSD,Kingfisher Lake 1,
-3560077,040000,CSD,Pikangikum 14,
-3560049,040000,CSD,Pickle Lake,
-3560056,040000,CSD,Lac Seul 28,
-3560069,040000,CSD,Rat Portage 38A,
-3560057,040000,CSD,Wabigoon Lake 27,
-3560001,040000,CSD,Ignace,
-3560065,040000,CSD,Lake Of The Woods 37,
-3560066,047310,CSD,Kenora 38B,
-24,030000,PT,Québec,
-2401,036800,CD,,
-2401023,036800,CSD,Les Îles-de-la-Madeleine,
-2401042,030000,CSD,Grosse-Île,
-2402,035800-035820,CD,,
-2402005,035800-035820,CSD,Percé,
-2402010,030000,CSD,Sainte-Thérèse-de-Gaspé,
-2402015,033100,CSD,Grande-Rivière,
-2402028,030000,CSD,Chandler,
-2402047,030000,CSD,Port-Daniel - Gascons,
-2402902,030000,CSD,Mont-Alexandre,
-2403,035800-035810,CD,,
-2403005,035800-035810,CSD,Gaspé,
-2403010,030000,CSD,Cloridorme,
-2403015,030000,CSD,Petite-Vallée,
-2403020,030000,CSD,Grande-Vallée,
-2403025,030000,CSD,Murdochville,
-2403902,030000,CSD,Rivière-Saint-Jean,
-2403904,030000,CSD,Collines-du-Basque,
-2404,030000,CD,,
-2404005,030000,CSD,Sainte-Madeleine-de-la-Rivière-Madeleine,
-2404010,030000,CSD,Saint-Maxime-du-Mont-Louis,
-2404015,030000,CSD,Mont-Saint-Pierre,
-2404020,030000,CSD,Rivière-à-Claude,
-2404025,030000,CSD,Marsoui,
-2404030,030000,CSD,La Martre,
-2404037,030000,CSD,Sainte-Anne-des-Monts,
-2404047,030000,CSD,Cap-Chat,
-2404902,030000,CSD,Mont-Albert,
-2404904,030000,CSD,Coulée-des-Adolphe,
-2405,030000,CD,,
-2405010,030000,CSD,Shigawake,
-2405015,030000,CSD,Saint-Godefroi,
-2405020,030000,CSD,Hope Town,
-2405025,030000,CSD,Hope,
-2405032,030000,CSD,Paspébiac,
-2405040,030000,CSD,New Carlisle,
-2405045,030000,CSD,Bonaventure,
-2405050,030000,CSD,Saint-Elzéar,
-2405055,030000,CSD,Saint-Siméon,
-2405060,030000,CSD,Caplan,
-2405065,030000,CSD,Saint-Alphonse,
-2405070,030000,CSD,New Richmond,
-2405077,030000,CSD,Cascapédia - Saint-Jules,
-2405902,030000,CSD,Rivière-Bonaventure,
-2406,030000,CD,,
-2406005,030000,CSD,Maria,
-2406013,030000,CSD,Carleton-sur-Mer,
-2406020,030000,CSD,Nouvelle,
-2406025,030000,CSD,Escuminac,
-2406030,030000,CSD,Pointe-à-la-Croix,
-2406035,030000,CSD,Ristigouche-Partie-Sud-Est,
-2406040,030000,CSD,Saint-André-de-Restigouche,
-2406045,030000,CSD,Matapédia,
-2406050,030000,CSD,Saint-Alexis-de-Matapédia,
-2406055,030000,CSD,Saint-François-d'Assise,
-2406060,030000,CSD,L'Ascension-de-Patapédia,
-2406802,030000,CSD,Gesgapegiag,
-2406804,030000,CSD,Listuguj,
-2406902,030000,CSD,Rivière-Nouvelle,
-2406904,030000,CSD,Ruisseau-Ferguson,
-2407,030000,CD,,
-2407005,030000,CSD,Sainte-Marguerite-Marie,
-2407010,030000,CSD,Sainte-Florence,
-2407018,030000,CSD,Causapscal,
-2407025,030000,CSD,Albertville,
-2407030,030000,CSD,Saint-Léon-le-Grand,
-2407035,030000,CSD,Saint-Zénon-du-Lac-Humqui,
-2407040,030000,CSD,Sainte-Irène,
-2407047,030000,CSD,Amqui,
-2407057,030000,CSD,Lac-au-Saumon,
-2407065,030000,CSD,Saint-Alexandre-des-Lacs,
-2407070,030000,CSD,Saint-Tharcisius,
-2407075,030000,CSD,Saint-Vianney,
-2407080,030000,CSD,Val-Brillant,
-2407085,030000,CSD,Sayabec,
-2407090,030000,CSD,Saint-Cléophas,
-2407095,030000,CSD,Saint-Moïse,
-2407100,030000,CSD,Saint-Noël,
-2407105,030000,CSD,Saint-Damase,
-2407902,030000,CSD,Routhierville,
-2407904,030000,CSD,Rivière-Vaseuse,
-2407906,030000,CSD,Rivière-Patapédia-Est,
-2407908,030000,CSD,Lac-Casault,
-2407910,030000,CSD,Ruisseau-des-Mineurs,
-2407912,030000,CSD,Lac-Alfred,
-2407914,030000,CSD,Lac-Matapédia,
-2408,030000,CD,,
-2408005,030000,CSD,Les Méchins,
-2408010,030000,CSD,Saint-Jean-de-Cherbourg,
-2408015,030000,CSD,Grosses-Roches,
-2408023,030000,CSD,Sainte-Félicité,
-2408030,030000,CSD,Saint-Adelme,
-2408035,030000,CSD,Saint-René-de-Matane,
-2408040,030000,CSD,Sainte-Paule,
-2408053,030000,CSD,Matane,
-2408065,030000,CSD,Saint-Léandre,
-2408073,030000,CSD,Saint-Ulric,
-2408080,030000,CSD,Baie-des-Sables,
-2408902,030000,CSD,Rivière-Bonjour,
-2409,030000,CD,,
-2409005,030000,CSD,La Rédemption,
-2409010,030000,CSD,Saint-Charles-Garnier,
-2409015,030000,CSD,Les Hauteurs,
-2409020,030000,CSD,Sainte-Jeanne-d'Arc,
-2409025,030000,CSD,Saint-Gabriel-de-Rimouski,
-2409030,032120,CSD,Saint-Donat,
-2409035,030000,CSD,Sainte-Angèle-de-Mérici,
-2409040,030000,CSD,Padoue,
-2409048,030000,CSD,Métis-sur-Mer,
-2409055,030000,CSD,Saint-Octave-de-Métis,
-2409060,030000,CSD,Grand-Métis,
-2409065,030000,CSD,Price,
-2409070,030000,CSD,Saint-Joseph-de-Lepage,
-2409077,030000,CSD,Mont-Joli,
-2409085,030000,CSD,Sainte-Flavie,
-2409092,030000,CSD,Sainte-Luce,
-2409902,030000,CSD,Lac-des-Eaux-Mortes,
-2409904,030000,CSD,Lac-à-la-Croix,
-2410,030000,CD,,
-2410005,030000,CSD,Esprit-Saint,
-2410010,030000,CSD,La Trinité-des-Monts,
-2410015,030000,CSD,Saint-Narcisse-de-Rimouski,
-2410025,030000,CSD,Saint-Marcellin,
-2410030,030000,CSD,Saint-Anaclet-de-Lessard,
-2410043,030000,CSD,Rimouski,
-2410060,030000,CSD,Saint-Valérien,
-2410070,030000,CSD,Saint-Fabien,
-2410075,030000,CSD,Saint-Eugène-de-Ladrière,
-2410902,030000,CSD,Lac-Huron,
-2411,030000,CD,,
-2411005,030000,CSD,Saint-Clément,
-2411010,030000,CSD,Saint-Jean-de-Dieu,
-2411015,030000,CSD,Sainte-Rita,
-2411020,030000,CSD,Saint-Guy,
-2411025,030000,CSD,Saint-Médard,
-2411030,030000,CSD,Sainte-Françoise,
-2411035,030000,CSD,Saint-Éloi,
-2411040,030000,CSD,Trois-Pistoles,
-2411045,030000,CSD,Notre-Dame-des-Neiges,
-2411050,030000,CSD,Saint-Mathieu-de-Rioux,
-2411055,030000,CSD,Saint-Simon,
-2411902,030000,CSD,Lac-Boisbouscache,
-2412,030000,CD,,
-2412005,030000,CSD,Saint-Cyprien,
-2412010,030000,CSD,Saint-Hubert-de-Rivière-du-Loup,
-2412015,030000,CSD,Saint-Antonin,
-2412020,030000,CSD,Saint-Modeste,
-2412025,030000,CSD,Saint-François-Xavier-de-Viger,
-2412030,030000,CSD,Saint-Épiphane,
-2412035,030000,CSD,Saint-Paul-de-la-Croix,
-2412043,030000,CSD,L'Isle-Verte,
-2412045,030000,CSD,Notre-Dame-des-Sept-Douleurs,
-2412057,030000,CSD,Cacouna,
-2412065,030000,CSD,Saint-Arsène,
-2412072,030000,CSD,Rivière-du-Loup,
-2412080,030000,CSD,Notre-Dame-du-Portage,
-2412802,030000,CSD,Whitworth,
-2412804,030000,CSD,Cacouna,
-2413,030000,CD,,
-2413005,030000,CSD,Dégelis,
-2413010,030000,CSD,Saint-Jean-de-la-Lande,
-2413015,030000,CSD,Packington,
-2413020,030000,CSD,Saint-Marc-du-Lac-Long,
-2413025,030000,CSD,Rivière-Bleue,
-2413030,030000,CSD,Saint-Eusèbe,
-2413040,030000,CSD,Saint-Juste-du-Lac,
-2413045,030000,CSD,Auclair,
-2413050,030000,CSD,Lejeune,
-2413055,030000,CSD,Biencourt,
-2413060,030000,CSD,Lac-des-Aigles,
-2413065,030000,CSD,Saint-Michel-du-Squatec,
-2413073,030000,CSD,Témiscouata-sur-le-Lac,
-2413075,030000,CSD,Saint-Pierre-de-Lamy,
-2413080,030000,CSD,Saint-Louis-du-Ha! Ha!,
-2413085,030000,CSD,Saint-Elzéar-de-Témiscouata,
-2413090,030000,CSD,Saint-Honoré-de-Témiscouata,
-2413095,030000,CSD,Pohénégamook,
-2413100,030000,CSD,Saint-Athanase,
-2414,030000,CD,,
-2414005,030000,CSD,Mont-Carmel,
-2414010,030000,CSD,Saint-Bruno-de-Kamouraska,
-2414018,030000,CSD,Saint-Pascal,
-2414025,030000,CSD,Sainte-Hélène,
-2414030,030000,CSD,Saint-Joseph-de-Kamouraska,
-2414035,030000,CSD,Saint-Alexandre-de-Kamouraska,
-2414040,030000,CSD,Saint-André,
-2414045,030000,CSD,Saint-Germain,
-2414050,030000,CSD,Kamouraska,
-2414055,030000,CSD,Saint-Denis-De La Bouteillerie,
-2414060,030000,CSD,Saint-Philippe-de-Néri,
-2414065,030000,CSD,Rivière-Ouelle,
-2414070,030000,CSD,Saint-Pacôme,
-2414075,030000,CSD,Saint-Gabriel-Lalemant,
-2414080,030000,CSD,Saint-Onésime-d'Ixworth,
-2414085,030000,CSD,La Pocatière,
-2414090,030000,CSD,Sainte-Anne-de-la-Pocatière,
-2414902,030000,CSD,Picard,
-2414904,030000,CSD,Petit-Lac-Sainte-Anne,
-2415,030000,CD,,
-2415005,030000,CSD,Saint-Irénée,
-2415013,030000,CSD,La Malbaie,
-2415025,030000,CSD,Notre-Dame-des-Monts,
-2415030,030000,CSD,Saint-Aimé-des-Lacs,
-2415035,030000,CSD,Clermont,
-2415058,030000,CSD,Saint-Siméon,
-2415065,030000,CSD,Baie-Sainte-Catherine,
-2415902,030000,CSD,Mont-Élie,
-2415904,030000,CSD,Sagard,
-2416,030000,CD,,
-2416005,030000,CSD,Petite-Rivière-Saint-François,
-2416013,030000,CSD,Baie-Saint-Paul,
-2416023,030000,CSD,L'Isle-aux-Coudres,
-2416048,030000,CSD,Les Éboulements,
-2416050,030000,CSD,Saint-Hilarion,
-2416055,030000,CSD,Saint-Urbain,
-2416902,030000,CSD,Lac-Pikauba,
-2417,030000,CD,,
-2417005,030000,CSD,Saint-Omer,
-2417010,030000,CSD,Saint-Pamphile,
-2417015,030000,CSD,Saint-Adalbert,
-2417020,030000,CSD,Saint-Marcel,
-2417025,030000,CSD,Sainte-Félicité,
-2417030,030000,CSD,Sainte-Perpétue,
-2417035,030000,CSD,Tourville,
-2417040,030000,CSD,Saint-Damase-de-L'Islet,
-2417045,030000,CSD,Saint-Cyrille-de-Lessard,
-2417055,030000,CSD,Saint-Aubert,
-2417060,030000,CSD,Sainte-Louise,
-2417065,030000,CSD,Saint-Roch-des-Aulnaies,
-2417070,030000,CSD,Saint-Jean-Port-Joli,
-2417078,030000,CSD,L'Islet,
-2418,030000,CD,,
-2418005,030000,CSD,Saint-Just-de-Bretenières,
-2418010,030000,CSD,Lac-Frontière,
-2418015,030000,CSD,Saint-Fabien-de-Panet,
-2418020,030000,CSD,Sainte-Lucie-de-Beauregard,
-2418025,030000,CSD,Sainte-Apolline-de-Patton,
-2418030,030000,CSD,Saint-Paul-de-Montminy,
-2418035,030000,CSD,Sainte-Euphémie-sur-Rivière-du-Sud,
-2418040,030000,CSD,Notre-Dame-du-Rosaire,
-2418045,030000,CSD,Cap-Saint-Ignace,
-2418050,030000,CSD,Montmagny,
-2418055,030000,CSD,Saint-Pierre-de-la-Rivière-du-Sud,
-2418060,030000,CSD,Saint-François-de-la-Rivière-du-Sud,
-2418065,030000,CSD,Berthier-sur-Mer,
-2418070,030000,CSD,Saint-Antoine-de-l'Isle-aux-Grues,
-2419,030000,CD,,
-2419005,030000,CSD,Saint-Philémon,
-2419010,030000,CSD,Notre-Dame-Auxiliatrice-de-Buckland,
-2419015,030000,CSD,Saint-Nazaire-de-Dorchester,
-2419020,030000,CSD,Saint-Léon-de-Standon,
-2419025,030000,CSD,Saint-Malachie,
-2419030,030000,CSD,Saint-Damien-de-Buckland,
-2419037,030000,CSD,Armagh,
-2419045,032821,CSD,Saint-Nérée-de-Bellechasse,
-2419050,032821,CSD,Saint-Lazare-de-Bellechasse,
-2419055,030000,CSD,Sainte-Claire,
-2419062,030000,CSD,Saint-Anselme,
-2419068,030000,CSD,Saint-Henri,
-2419070,030000,CSD,Honfleur,
-2419075,030000,CSD,Saint-Gervais,
-2419082,030000,CSD,Saint-Raphaël,
-2419090,030000,CSD,La Durantaye,
-2419097,032821,CSD,Saint-Charles-de-Bellechasse,
-2419105,030000,CSD,Beaumont,
-2419110,032821,CSD,Saint-Michel-de-Bellechasse,
-2419117,030000,CSD,Saint-Vallier,
-2420,030000,CD,,
-2420005,032814,CSD,Saint-François-de-l'Île-d'Orléans,
-2420010,030000,CSD,Sainte-Famille,
-2420015,032814,CSD,Saint-Jean-de-l'Île-d'Orléans,
-2420020,032814,CSD,Saint-Laurent-de-l'Île-d'Orléans,
-2420025,032814,CSD,Saint-Pierre-de-l'Île-d'Orléans,
-2420030,030000,CSD,Sainte-Pétronille,
-2421,030000,CD,,
-2421005,030000,CSD,Saint-Tite-des-Caps,
-2421010,030000,CSD,Saint-Ferréol-les-Neiges,
-2421015,030000,CSD,Saint-Louis-de-Gonzague-du-Cap-Tourmente,
-2421020,030000,CSD,Saint-Joachim,
-2421025,032814,CSD,Beaupré,
-2421030,032814,CSD,Sainte-Anne-de-Beaupré,
-2421035,030000,CSD,Château-Richer,
-2421040,030000,CSD,L'Ange-Gardien,
-2421045,030000,CSD,Boischatel,
-2421902,030000,CSD,Sault-au-Cochon,
-2421904,030000,CSD,Lac-Jacques-Cartier,
-2422,030000,CD,,
-2422005,030000,CSD,Sainte-Catherine-de-la-Jacques-Cartier,
-2422010,030000,CSD,Fossambault-sur-le-Lac,
-2422015,030000,CSD,Lac-Saint-Joseph,
-2422020,030000,CSD,Shannon,
-2422025,032812,CSD,Saint-Gabriel-de-Valcartier,
-2422030,030000,CSD,Lac-Delage,
-2422035,032812,CSD,Stoneham-et-Tewkesbury,
-2422040,030000,CSD,Lac-Beauport,
-2422045,030000,CSD,Sainte-Brigitte-de-Laval,
-2422902,030000,CSD,Lac-Croche,
-2423,032800,CD,,
-2423015,030000,CSD,Notre-Dame-des-Anges,
-2423027,032813,CSD,Québec,
-2423057,030000,CSD,L'Ancienne-Lorette,
-2423072,030000,CSD,Saint-Augustin-de-Desmaures,
-2423802,030000,CSD,Wendake,
-2425,032822,CD,,
-2425213,032822,CSD,Lévis,
-2426,030000,CD,,
-2426005,030000,CSD,Frampton,
-2426010,030000,CSD,Saints-Anges,
-2426015,030000,CSD,Vallée-Jonction,
-2426022,030000,CSD,Saint-Elzéar,
-2426030,030000,CSD,Sainte-Marie,
-2426035,030000,CSD,Sainte-Marguerite,
-2426040,030000,CSD,Sainte-Hénédine,
-2426048,030000,CSD,Scott,
-2426055,030000,CSD,Saint-Bernard,
-2426063,030000,CSD,Saint-Isidore,
-2426070,030000,CSD,Saint-Lambert-de-Lauzon,
-2427,030000,CD,,
-2427008,030000,CSD,Saint-Victor,
-2427015,030000,CSD,Saint-Alfred,
-2427028,030000,CSD,Beauceville,
-2427035,030000,CSD,Saint-Odilon-de-Cranbourne,
-2427043,030000,CSD,Saint-Joseph-de-Beauce,
-2427050,030000,CSD,Saint-Joseph-des-Érables,
-2427055,030000,CSD,Saint-Jules,
-2427060,030000,CSD,Tring-Jonction,
-2427065,030000,CSD,Saint-Frédéric,
-2427070,030000,CSD,Saint-Séverin,
-2428,030000,CD,,
-2428005,030000,CSD,Saint-Zacharie,
-2428015,030000,CSD,Sainte-Aurélie,
-2428020,030000,CSD,Saint-Prosper,
-2428025,030000,CSD,Saint-Benjamin,
-2428030,030000,CSD,Sainte-Rose-de-Watford,
-2428035,030000,CSD,Saint-Louis-de-Gonzague,
-2428040,030000,CSD,Saint-Cyprien,
-2428045,030000,CSD,Sainte-Justine,
-2428053,030000,CSD,Lac-Etchemin,
-2428060,032821,CSD,Saint-Luc-de-Bellechasse,
-2428065,030000,CSD,Sainte-Sabine,
-2428070,030000,CSD,Saint-Camille-de-Lellis,
-2428075,030000,CSD,Saint-Magloire,
-2429,030000,CD,,
-2429005,030000,CSD,Saint-Théophile,
-2429013,030000,CSD,Saint-Gédéon-de-Beauce,
-2429020,030000,CSD,Saint-Hilaire-de-Dorset,
-2429025,030000,CSD,Saint-Évariste-de-Forsyth,
-2429030,030000,CSD,La Guadeloupe,
-2429038,030000,CSD,Saint-Honoré-de-Shenley,
-2429045,030000,CSD,Saint-Martin,
-2429050,030000,CSD,Saint-René,
-2429057,030000,CSD,Saint-Côme - Linière,
-2429065,030000,CSD,Saint-Philibert,
-2429073,030000,CSD,Saint-Georges,
-2429095,030000,CSD,Lac-Poulin,
-2429100,030000,CSD,Saint-Benoît-Labre,
-2429112,030000,CSD,Saint-Éphrem-de-Beauce,
-2429120,030000,CSD,Notre-Dame-des-Pins,
-2429125,030000,CSD,Saint-Simon-les-Mines,
-2430,030000,CD,,
-2430005,030000,CSD,Saint-Augustin-de-Woburn,
-2430010,030000,CSD,Notre-Dame-des-Bois,
-2430015,030000,CSD,Val-Racine,
-2430020,030000,CSD,Piopolis,
-2430025,030000,CSD,Frontenac,
-2430030,030000,CSD,Lac-Mégantic,
-2430035,030000,CSD,Marston,
-2430040,030000,CSD,Milan,
-2430045,030000,CSD,Nantes,
-2430050,030000,CSD,Sainte-Cécile-de-Whitton,
-2430055,030000,CSD,Audet,
-2430070,030000,CSD,Saint-Robert-Bellarmin,
-2430072,030000,CSD,Saint-Ludger,
-2430080,030000,CSD,Lac-Drolet,
-2430085,030000,CSD,Saint-Sébastien,
-2430090,030000,CSD,Courcelles,
-2430095,030000,CSD,Lambton,
-2430100,030000,CSD,Saint-Romain,
-2430105,030000,CSD,Stornoway,
-2430110,030000,CSD,Stratford,
-2431,030000,CD,,
-2431008,030000,CSD,Beaulac-Garthby,
-2431015,030000,CSD,Disraeli,
-2431020,030000,CSD,Disraeli,
-2431025,030000,CSD,Saint-Jacques-le-Majeur-de-Wolfestown,
-2431030,030000,CSD,Saint-Fortunat,
-2431035,030000,CSD,Saint-Julien,
-2431040,030000,CSD,Irlande,
-2431045,030000,CSD,Saint-Joseph-de-Coleraine,
-2431050,030000,CSD,Sainte-Praxède,
-2431056,030000,CSD,Adstock,
-2431060,030000,CSD,Sainte-Clotilde-de-Beauce,
-2431084,030000,CSD,Thetford Mines,
-2431095,030000,CSD,Saint-Adrien-d'Irlande,
-2431100,030000,CSD,Saint-Jean-de-Brébeuf,
-2431105,030000,CSD,Kinnear's Mills,
-2431122,030000,CSD,East Broughton,
-2431130,030000,CSD,Sacré-Coeur-de-Jésus,
-2431135,030000,CSD,Saint-Pierre-de-Broughton,
-2431140,030000,CSD,Saint-Jacques-de-Leeds,
-2432,030000,CD,,
-2432013,030000,CSD,Saint-Ferdinand,
-2432023,030000,CSD,Sainte-Sophie-d'Halifax,
-2432033,030000,CSD,Princeville,
-2432040,030000,CSD,Plessisville,
-2432045,030000,CSD,Plessisville,
-2432050,030000,CSD,Saint-Pierre-Baptiste,
-2432058,030000,CSD,Inverness,
-2432065,030000,CSD,Lyster,
-2432072,030000,CSD,Laurierville,
-2432080,030000,CSD,Notre-Dame-de-Lourdes,
-2432085,030000,CSD,Villeroy,
-2433,030000,CD,,
-2433007,030000,CSD,Saint-Sylvestre,
-2433017,032210,CSD,Sainte-Agathe-de-Lotbinière,
-2433025,030000,CSD,Saint-Patrice-de-Beaurivage,
-2433030,030000,CSD,Saint-Narcisse-de-Beaurivage,
-2433035,030000,CSD,Saint-Gilles,
-2433040,030000,CSD,Dosquet,
-2433045,030000,CSD,Saint-Agapit,
-2433052,030000,CSD,Saint-Flavien,
-2433060,030000,CSD,Laurier-Station,
-2433065,030000,CSD,Saint-Janvier-de-Joly,
-2433070,030000,CSD,Val-Alain,
-2433080,032824,CSD,Saint-Édouard-de-Lotbinière,
-2433085,030000,CSD,Notre-Dame-du-Sacré-Coeur-d'Issoudun,
-2433090,030000,CSD,Saint-Apollinaire,
-2433095,030000,CSD,Saint-Antoine-de-Tilly,
-2433102,030000,CSD,Sainte-Croix,
-2433115,032824,CSD,Lotbinière,
-2433123,030000,CSD,Leclercville,
-2434,030000,CD,,
-2434007,030000,CSD,Neuville,
-2434017,030000,CSD,Pont-Rouge,
-2434025,030000,CSD,Donnacona,
-2434030,030000,CSD,Cap-Santé,
-2434038,030000,CSD,Saint-Basile,
-2434048,032811,CSD,Portneuf,
-2434058,030000,CSD,Deschambault-Grondines,
-2434060,030000,CSD,Saint-Gilbert,
-2434065,030000,CSD,Saint-Marc-des-Carrières,
-2434078,030000,CSD,Saint-Casimir,
-2434085,030000,CSD,Saint-Thuribe,
-2434090,030000,CSD,Saint-Ubalde,
-2434097,030000,CSD,Saint-Alban,
-2434105,030000,CSD,Sainte-Christine-d'Auvergne,
-2434115,032811,CSD,Saint-Léonard-de-Portneuf,
-2434120,030000,CSD,Lac-Sergent,
-2434128,030000,CSD,Saint-Raymond,
-2434135,030000,CSD,Rivière-à-Pierre,
-2434902,030000,CSD,Lac-Blanc,
-2434904,030000,CSD,Linton,
-2434906,030000,CSD,Lac-Lapeyrère,
-2435,030000,CD,,
-2435005,030000,CSD,Notre-Dame-de-Montauban,
-2435010,032730,CSD,Lac-aux-Sables,
-2435015,030000,CSD,Saint-Adelphe,
-2435020,030000,CSD,Saint-Séverin,
-2435027,030000,CSD,Saint-Tite,
-2435035,030000,CSD,Hérouxville,
-2435040,030000,CSD,Grandes-Piles,
-2435045,030000,CSD,Saint-Roch-de-Mékinac,
-2435050,030000,CSD,Sainte-Thècle,
-2435055,030000,CSD,Trois-Rives,
-2435902,030000,CSD,Lac-Masketsi,
-2435904,030000,CSD,Lac-Normand,
-2435906,030000,CSD,Rivière-de-la-Savane,
-2435908,030000,CSD,Lac-Boulé,
-2436,030000,CD,,
-2436033,032740,CSD,Shawinigan,
-2437,030000,CD,,
-2437067,032760,CSD,Trois-Rivières,
-2437205,032750,CSD,Sainte-Anne-de-la-Pérade,
-2437210,030000,CSD,Batiscan,
-2437215,030000,CSD,Sainte-Geneviève-de-Batiscan,
-2437220,030000,CSD,Champlain,
-2437225,030000,CSD,Saint-Luc-de-Vincennes,
-2437230,030000,CSD,Saint-Maurice,
-2437235,030000,CSD,Notre-Dame-du-Mont-Carmel,
-2437240,030000,CSD,Saint-Narcisse,
-2437245,030000,CSD,Saint-Stanislas,
-2437250,030000,CSD,Saint-Prosper-de-Champlain,
-2438,030000,CD,,
-2438005,030000,CSD,Saint-Sylvère,
-2438010,030000,CSD,Bécancour,
-2438015,030000,CSD,Sainte-Marie-de-Blandford,
-2438020,030000,CSD,Lemieux,
-2438028,030000,CSD,Manseau,
-2438035,030000,CSD,Sainte-Françoise,
-2438040,030000,CSD,Sainte-Sophie-de-Lévrard,
-2438047,030000,CSD,Fortierville,
-2438055,030000,CSD,Parisville,
-2438060,030000,CSD,Sainte-Cécile-de-Lévrard,
-2438065,030000,CSD,Saint-Pierre-les-Becquets,
-2438070,030000,CSD,Deschaillons-sur-Saint-Laurent,
-2438802,030000,CSD,Wôlinak,
-2439,030000,CD,,
-2439005,030000,CSD,Saints-Martyrs-Canadiens,
-2439010,030000,CSD,Ham-Nord,
-2439015,030000,CSD,Notre-Dame-de-Ham,
-2439020,032530,CSD,Saint-Rémi-de-Tingwick,
-2439025,030000,CSD,Tingwick,
-2439030,030000,CSD,Chesterville,
-2439035,030000,CSD,Sainte-Hélène-de-Chester,
-2439043,030000,CSD,Saint-Norbert-d'Arthabaska,
-2439060,030000,CSD,Saint-Christophe-d'Arthabaska,
-2439062,030000,CSD,Victoriaville,
-2439077,030000,CSD,Warwick,
-2439085,030000,CSD,Saint-Albert,
-2439090,030000,CSD,Sainte-Élizabeth-de-Warwick,
-2439097,030000,CSD,Kingsey Falls,
-2439105,030000,CSD,Sainte-Séraphine,
-2439117,030000,CSD,Sainte-Clotilde-de-Horton,
-2439130,030000,CSD,Saint-Samuel,
-2439135,030000,CSD,Saint-Valère,
-2439145,030000,CSD,Saint-Rosaire,
-2439150,030000,CSD,Sainte-Anne-du-Sault,
-2439155,030000,CSD,Daveluyville,
-2439165,030000,CSD,Maddington,
-2439170,030000,CSD,Saint-Louis-de-Blandford,
-2440,030000,CD,,
-2440005,030000,CSD,Ham-Sud,
-2440010,030000,CSD,Saint-Adrien,
-2440017,030000,CSD,Wotton,
-2440025,030000,CSD,Saint-Camille,
-2440032,030000,CSD,Saint-Georges-de-Windsor,
-2440043,030000,CSD,Asbestos,
-2440047,030000,CSD,Danville,
-2441,030000,CD,,
-2441012,030000,CSD,Saint-Isidore-de-Clifton,
-2441020,030000,CSD,Chartierville,
-2441027,030000,CSD,La Patrie,
-2441037,030000,CSD,Newport,
-2441038,030000,CSD,Cookshire-Eaton,
-2441055,030000,CSD,Ascot Corner,
-2441060,030000,CSD,East Angus,
-2441065,030000,CSD,Westbury,
-2441070,030000,CSD,Bury,
-2441075,030000,CSD,Hampden,
-2441080,030000,CSD,Scotstown,
-2441085,030000,CSD,Lingwick,
-2441098,030000,CSD,Weedon,
-2441117,030000,CSD,Dudswell,
-2442,030000,CD,,
-2442005,030000,CSD,Stoke,
-2442020,030000,CSD,Saint-François-Xavier-de-Brompton,
-2442025,030000,CSD,Saint-Denis-de-Brompton,
-2442032,030000,CSD,Racine,
-2442040,030000,CSD,Bonsecours,
-2442045,030000,CSD,Lawrenceville,
-2442050,030000,CSD,Sainte-Anne-de-la-Rochelle,
-2442055,030000,CSD,Valcourt,
-2442060,030000,CSD,Valcourt,
-2442065,030000,CSD,Maricourt,
-2442070,030000,CSD,Kingsbury,
-2442075,030000,CSD,Melbourne,
-2442078,030000,CSD,Ulverton,
-2442088,030000,CSD,Windsor,
-2442095,030000,CSD,Val-Joli,
-2442098,030000,CSD,Richmond,
-2442100,030000,CSD,Saint-Claude,
-2442110,030000,CSD,Cleveland,
-2443,030000,CD,,
-2443027,030000,CSD,Sherbrooke,
-2444,030000,CD,,
-2444003,030000,CSD,Saint-Malo,
-2444005,030000,CSD,Saint-Venant-de-Paquette,
-2444010,030000,CSD,East Hereford,
-2444015,030000,CSD,Saint-Herménégilde,
-2444023,030000,CSD,Dixville,
-2444037,030000,CSD,Coaticook,
-2444045,030000,CSD,Barnston-Ouest,
-2444050,030000,CSD,Stanstead-Est,
-2444055,030000,CSD,Sainte-Edwidge-de-Clifton,
-2444060,030000,CSD,Martinville,
-2444071,030000,CSD,Compton,
-2444080,030000,CSD,Waterville,
-2445,030000,CD,,
-2445008,030000,CSD,Stanstead,
-2445020,030000,CSD,Ogden,
-2445025,030000,CSD,Stanstead,
-2445030,030000,CSD,Potton,
-2445035,030000,CSD,Ayer's Cliff,
-2445043,030000,CSD,Hatley,
-2445050,030000,CSD,North Hatley,
-2445055,030000,CSD,Hatley,
-2445060,030000,CSD,Sainte-Catherine-de-Hatley,
-2445072,030000,CSD,Magog,
-2445080,030000,CSD,Saint-Benoît-du-Lac,
-2445085,030000,CSD,Austin,
-2445093,030000,CSD,Eastman,
-2445095,030000,CSD,Bolton-Est,
-2445100,030000,CSD,Saint-Étienne-de-Bolton,
-2445105,030000,CSD,Stukely-Sud,
-2445115,030000,CSD,Orford,
-2446,030000,CD,,
-2446005,030000,CSD,Abercorn,
-2446010,030000,CSD,Frelighsburg,
-2446017,030000,CSD,Saint-Armand,
-2446025,030000,CSD,Pike River,
-2446030,030000,CSD,Stanbridge Station,
-2446035,030000,CSD,Bedford,
-2446040,030000,CSD,Bedford,
-2446045,030000,CSD,Stanbridge East,
-2446050,030000,CSD,Dunham,
-2446058,030000,CSD,Sutton,
-2446065,030000,CSD,Bolton-Ouest,
-2446070,030000,CSD,Brome,
-2446075,030000,CSD,Lac-Brome,
-2446080,030000,CSD,Cowansville,
-2446085,030000,CSD,East Farnham,
-2446090,030000,CSD,Brigham,
-2446095,030000,CSD,Saint-Ignace-de-Stanbridge,
-2446100,030000,CSD,Notre-Dame-de-Stanbridge,
-2446105,030000,CSD,Sainte-Sabine,
-2446112,030000,CSD,Farnham,
-2447,030000,CD,,
-2446078,030000,CSD,Bromont,
-2447010,030000,CSD,Saint-Alphonse-de-Granby,
-2447017,030000,CSD,Granby,
-2447025,030000,CSD,Waterloo,
-2447030,030000,CSD,Warden,
-2447035,030000,CSD,Shefford,
-2447040,030000,CSD,Saint-Joachim-de-Shefford,
-2447047,030000,CSD,Roxton Pond,
-2447055,030000,CSD,Sainte-Cécile-de-Milton,
-2448,030000,CD,,
-2448005,030000,CSD,Béthanie,
-2448010,030000,CSD,Roxton Falls,
-2448015,030000,CSD,Roxton,
-2448020,030000,CSD,Sainte-Christine,
-2448028,030000,CSD,Acton Vale,
-2448038,030000,CSD,Upton,
-2448045,030000,CSD,Saint-Théodore-d'Acton,
-2448050,030000,CSD,Saint-Nazaire-d'Acton,
-2449,030000,CD,,
-2449005,030000,CSD,Saint-Félix-de-Kingsey,
-2449015,030000,CSD,Durham-Sud,
-2449020,030000,CSD,Lefebvre,
-2449025,030000,CSD,L'Avenir,
-2449030,030000,CSD,Saint-Lucien,
-2449040,030000,CSD,Wickham,
-2449048,030000,CSD,Saint-Germain-de-Grantham,
-2449058,030000,CSD,Drummondville,
-2449070,030000,CSD,Saint-Cyrille-de-Wendover,
-2449075,030000,CSD,Notre-Dame-du-Bon-Conseil,
-2449080,030000,CSD,Notre-Dame-du-Bon-Conseil,
-2449085,030000,CSD,Sainte-Brigitte-des-Saults,
-2449095,030000,CSD,Saint-Majorique-de-Grantham,
-2449100,030000,CSD,Saint-Edmond-de-Grantham,
-2449105,030000,CSD,Saint-Eugène,
-2449113,030000,CSD,Saint-Guillaume,
-2449125,030000,CSD,Saint-Bonaventure,
-2449130,030000,CSD,Saint-Pie-de-Guire,
-2450,030000,CD,,
-2450005,030000,CSD,Sainte-Eulalie,
-2450013,030000,CSD,Aston-Jonction,
-2450023,030000,CSD,Saint-Wenceslas,
-2450030,030000,CSD,Saint-Célestin,
-2450035,030000,CSD,Saint-Célestin,
-2450042,030000,CSD,Saint-Léonard-d'Aston,
-2450050,030000,CSD,Sainte-Perpétue,
-2450057,030000,CSD,Sainte-Monique,
-2450065,030000,CSD,Grand-Saint-Esprit,
-2450072,030000,CSD,Nicolet,
-2450085,030000,CSD,La Visitation-de-Yamaska,
-2450090,030000,CSD,Saint-Zéphirin-de-Courval,
-2450095,030000,CSD,Saint-Elphège,
-2450100,030000,CSD,Baie-du-Febvre,
-2450113,030000,CSD,Pierreville,
-2450128,030000,CSD,Saint-François-du-Lac,
-2450802,030000,CSD,Odanak,
-2451,030000,CD,,
-2451008,030000,CSD,Maskinongé,
-2451015,032710,CSD,Louiseville,
-2451020,030000,CSD,Yamachiche,
-2451025,030000,CSD,Saint-Barnabé,
-2451030,030000,CSD,Saint-Sévère,
-2451035,030000,CSD,Saint-Léon-le-Grand,
-2451040,030000,CSD,Sainte-Ursule,
-2451045,030000,CSD,Saint-Justin,
-2451050,030000,CSD,Saint-Édouard-de-Maskinongé,
-2451055,030000,CSD,Sainte-Angèle-de-Prémont,
-2451060,030000,CSD,Saint-Paulin,
-2451065,030000,CSD,Saint-Alexis-des-Monts,
-2451070,030000,CSD,Saint-Mathieu-du-Parc,
-2451075,030000,CSD,Saint-Élie-de-Caxton,
-2451080,030000,CSD,Charette,
-2451085,030000,CSD,Saint-Boniface,
-2451090,030000,CSD,Saint-Étienne-des-Grès,
-2452,030000,CD,,
-2452007,030000,CSD,Lavaltrie,
-2452017,030000,CSD,Lanoraie,
-2452030,030000,CSD,Sainte-Élisabeth,
-2452035,032610,CSD,Berthierville,
-2452040,030000,CSD,Sainte-Geneviève-de-Berthier,
-2452045,030000,CSD,Saint-Ignace-de-Loyola,
-2452050,030000,CSD,La Visitation-de-l'Île-Dupas,
-2452055,030000,CSD,Saint-Barthélemy,
-2452062,030000,CSD,Saint-Cuthbert,
-2452070,030000,CSD,Saint-Norbert,
-2452075,030000,CSD,Saint-Cléophas-de-Brandon,
-2452080,032610,CSD,Saint-Gabriel,
-2452085,030000,CSD,Saint-Gabriel-de-Brandon,
-2452090,030000,CSD,Saint-Didace,
-2452095,030000,CSD,Mandeville,
-2453,030000,CD,,
-2453005,030000,CSD,Saint-David,
-2453010,030000,CSD,Massueville,
-2453015,030000,CSD,Saint-Aimé,
-2453020,030000,CSD,Saint-Robert,
-2453025,030000,CSD,Sainte-Victoire-de-Sorel,
-2453032,030000,CSD,Saint-Ours,
-2453040,030000,CSD,Saint-Roch-de-Richelieu,
-2453050,030000,CSD,Saint-Joseph-de-Sorel,
-2453052,030000,CSD,Sorel-Tracy,
-2453065,030000,CSD,Sainte-Anne-de-Sorel,
-2453072,030000,CSD,Yamaska,
-2453085,030000,CSD,Saint-Gérard-Majella,
-2454,030000,CD,,
-2454008,030000,CSD,Saint-Pie,
-2454017,030000,CSD,Saint-Damase,
-2454025,030000,CSD,Sainte-Madeleine,
-2454030,030000,CSD,Sainte-Marie-Madeleine,
-2454035,030000,CSD,La Présentation,
-2454048,030000,CSD,Saint-Hyacinthe,
-2454060,030000,CSD,Saint-Dominique,
-2454065,030000,CSD,Saint-Valérien-de-Milton,
-2454072,030000,CSD,Saint-Liboire,
-2454090,030000,CSD,Saint-Simon,
-2454095,030000,CSD,Sainte-Hélène-de-Bagot,
-2454100,030000,CSD,Saint-Hugues,
-2454105,030000,CSD,Saint-Barnabé-Sud,
-2454110,030000,CSD,Saint-Jude,
-2454115,030000,CSD,Saint-Bernard-de-Michaudville,
-2454120,030000,CSD,Saint-Louis,
-2454125,030000,CSD,Saint-Marcel-de-Richelieu,
-2455,030000,CD,,
-2455008,030000,CSD,Ange-Gardien,
-2455015,030000,CSD,Saint-Paul-d'Abbotsford,
-2455023,030000,CSD,Saint-Césaire,
-2455030,030000,CSD,Sainte-Angèle-de-Monnoir,
-2455037,030000,CSD,Rougemont,
-2455048,030000,CSD,Marieville,
-2455057,030000,CSD,Richelieu,
-2455065,030000,CSD,Saint-Mathias-sur-Richelieu,
-2456,030000,CD,,
-2456005,030000,CSD,Venise-en-Québec,
-2456010,030000,CSD,Saint-Georges-de-Clarenceville,
-2456015,030000,CSD,Noyan,
-2456023,030000,CSD,Lacolle,
-2456030,030000,CSD,Saint-Valentin,
-2456035,030000,CSD,Saint-Paul-de-l'Île-aux-Noix,
-2456042,030000,CSD,Henryville,
-2456050,030000,CSD,Saint-Sébastien,
-2456055,030000,CSD,Saint-Alexandre,
-2456060,030000,CSD,Sainte-Anne-de-Sabrevois,
-2456065,030000,CSD,Saint-Blaise-sur-Richelieu,
-2456083,030000,CSD,Saint-Jean-sur-Richelieu,
-2456097,030000,CSD,Mont-Saint-Grégoire,
-2456105,030000,CSD,Sainte-Brigide-d'Iberville,
-2457,030000,CD,,
-2457005,030000,CSD,Chambly,
-2457010,030000,CSD,Carignan,
-2457020,030000,CSD,Saint-Basile-le-Grand,
-2457025,030000,CSD,McMasterville,
-2457030,030000,CSD,Otterburn Park,
-2457033,030000,CSD,Saint-Jean-Baptiste,
-2457035,030000,CSD,Mont-Saint-Hilaire,
-2457040,030000,CSD,Beloeil,
-2457045,030000,CSD,Saint-Mathieu-de-Beloeil,
-2457050,030000,CSD,Saint-Marc-sur-Richelieu,
-2457057,030000,CSD,Saint-Charles-sur-Richelieu,
-2457068,030000,CSD,Saint-Denis-sur-Richelieu,
-2457075,030000,CSD,Saint-Antoine-sur-Richelieu,
-2458,030000,CD,,
-2458007,030000,CSD,Brossard,
-2458012,032823,CSD,Saint-Lambert,
-2458033,030000,CSD,Boucherville,
-2458037,030000,CSD,Saint-Bruno-de-Montarville,
-2458227,032410,CSD,Longueuil,
-2459,030000,CD,,
-2459010,030000,CSD,Sainte-Julie,
-2459015,030000,CSD,Saint-Amable,
-2459020,032410,CSD,Varennes,
-2459025,030000,CSD,Verchères,
-2459030,030000,CSD,Calixa-Lavallée,
-2459035,030000,CSD,Contrecoeur,
-2460,030000,CD,,
-2460005,030000,CSD,Charlemagne,
-2460013,030000,CSD,Repentigny,
-2460020,030000,CSD,Saint-Sulpice,
-2460028,030000,CSD,L'Assomption,
-2460035,030000,CSD,L'Épiphanie,
-2460040,030000,CSD,L'Épiphanie,
-2461,030000,CD,,
-2461005,030000,CSD,Saint-Paul,
-2461013,030000,CSD,Crabtree,
-2461020,030000,CSD,Saint-Pierre,
-2461025,032620,CSD,Joliette,
-2461027,030000,CSD,Saint-Thomas,
-2461030,030000,CSD,Notre-Dame-des-Prairies,
-2461035,030000,CSD,Saint-Charles-Borromée,
-2461040,030000,CSD,Saint-Ambroise-de-Kildare,
-2461045,030000,CSD,Notre-Dame-de-Lourdes,
-2461050,030000,CSD,Sainte-Mélanie,
-2462,030000,CD,,
-2462007,030000,CSD,Saint-Félix-de-Valois,
-2462015,030000,CSD,Saint-Jean-de-Matha,
-2462020,030000,CSD,Sainte-Béatrix,
-2462025,030000,CSD,Saint-Alphonse-Rodriguez,
-2462030,030000,CSD,Sainte-Marcelline-de-Kildare,
-2462037,032620,CSD,Rawdon,
-2462047,030000,CSD,Chertsey,
-2462053,030000,CSD,Entrelacs,
-2462055,030000,CSD,Notre-Dame-de-la-Merci,
-2462060,032120,CSD,Saint-Donat,
-2462065,030000,CSD,Saint-Côme,
-2462070,030000,CSD,Sainte-Émélie-de-l'Énergie,
-2462075,030000,CSD,Saint-Damien,
-2462080,030000,CSD,Saint-Zénon,
-2462085,032110,CSD,Saint-Michel-des-Saints,
-2462802,030000,CSD,Manawan,
-2462902,030000,CSD,Lac-Minaki,
-2462904,030000,CSD,Lac-Devenyns,
-2462906,030000,CSD,Baie-de-la-Bouteille,
-2462908,032720,CSD,Lac-Matawin,
-2462910,030000,CSD,Lac-Legendre,
-2462912,030000,CSD,Saint-Guillaume-Nord,
-2462914,030000,CSD,Lac-des-Dix-Milles,
-2462916,030000,CSD,Lac-Santé,
-2462918,030000,CSD,Baie-Obaoca,
-2462919,030000,CSD,Lac-Cabasta,
-2462920,030000,CSD,Baie-Atibenne,
-2462922,030000,CSD,Lac-du-Taureau,
-2463,030000,CD,,
-2463005,030000,CSD,Sainte-Marie-Salomé,
-2463013,030000,CSD,Saint-Jacques,
-2463023,030000,CSD,Saint-Alexis,
-2463030,030000,CSD,Saint-Esprit,
-2463035,030000,CSD,Saint-Roch-de-l'Achigan,
-2463040,030000,CSD,Saint-Roch-Ouest,
-2463048,030000,CSD,Saint-Lin - Laurentides,
-2463055,030000,CSD,Saint-Calixte,
-2463060,030000,CSD,Sainte-Julienne,
-2463065,030000,CSD,Saint-Liguori,
-2464,030000,CD,,
-2464008,030000,CSD,Terrebonne,
-2464015,032630,CSD,Mascouche,
-2465,030000,CD,,
-2465005,032420,CSD,Laval,
-2466,032400-032410-032420-032430-032440,CD,,
-2466007,032400,CSD,Montréal-Est,
-2466023,032400,CSD,Montréal,
-2466032,030000,CSD,Westmount,
-2466047,032400,CSD,Montréal-Ouest,
-2466058,030000,CSD,Côte-Saint-Luc,
-2466062,030000,CSD,Hampstead,
-2466072,030000,CSD,Mont-Royal,
-2466087,031610,CSD,Dorval,
-2466092,031610,CSD,L'Île-Dorval,
-2466097,030000,CSD,Pointe-Claire,
-2466102,030000,CSD,Kirkland,
-2466107,030000,CSD,Beaconsfield,
-2466112,030000,CSD,Baie-D'Urfé,
-2466117,030000,CSD,Sainte-Anne-de-Bellevue,
-2466127,030000,CSD,Senneville,
-2466142,030000,CSD,Dollard-Des Ormeaux,
-2466940,032400,CSD,TNO terrestre du TE de Montréal,
-2467,030000,CD,,
-2467005,030000,CSD,Saint-Mathieu,
-2467010,030000,CSD,Saint-Philippe,
-2467015,032440,CSD,La Prairie,
-2467020,030000,CSD,Candiac,
-2467025,030000,CSD,Delson,
-2467030,030000,CSD,Sainte-Catherine,
-2467035,030000,CSD,Saint-Constant,
-2467040,030000,CSD,Saint-Isidore,
-2467045,030000,CSD,Mercier,
-2467050,032440,CSD,Châteauguay,
-2467055,030000,CSD,Léry,
-2467802,030000,CSD,Kahnawake,
-2467940,030000,CSD,TNO terrestre de la MRC de Roussillon,
-2468,030000,CD,,
-2468005,030000,CSD,Saint-Bernard-de-Lacolle,
-2468010,032550,CSD,Hemmingford,
-2468015,032550,CSD,Hemmingford,
-2468020,030000,CSD,Sainte-Clotilde,
-2468025,030000,CSD,Saint-Patrice-de-Sherrington,
-2468030,030000,CSD,Napierville,
-2468035,030000,CSD,Saint-Cyprien-de-Napierville,
-2468040,030000,CSD,Saint-Jacques-le-Mineur,
-2468045,030000,CSD,Saint-Édouard,
-2468050,032110,CSD,Saint-Michel,
-2468055,032530,CSD,Saint-Rémi,
-2469,030000,CD,,
-2469005,030000,CSD,Havelock,
-2469010,030000,CSD,Franklin,
-2469017,030000,CSD,Saint-Chrysostome,
-2469025,030000,CSD,Howick,
-2469030,030000,CSD,Très-Saint-Sacrement,
-2469037,030000,CSD,Ormstown,
-2469045,030000,CSD,Hinchinbrooke,
-2469050,030000,CSD,Elgin,
-2469055,032560,CSD,Huntingdon,
-2469060,030000,CSD,Godmanchester,
-2469065,030000,CSD,Sainte-Barbe,
-2469070,030000,CSD,Saint-Anicet,
-2469075,030000,CSD,Dundee,
-2469802,030000,CSD,Akwesasne,
-2470,030000,CD,,
-2470005,030000,CSD,Saint-Urbain-Premier,
-2470012,030000,CSD,Sainte-Martine,
-2470022,032540,CSD,Beauharnois,
-2470030,030000,CSD,Saint-Étienne-de-Beauharnois,
-2470035,030000,CSD,Saint-Louis-de-Gonzague,
-2470040,030000,CSD,Saint-Stanislas-de-Kostka,
-2470052,032540,CSD,Salaberry-de-Valleyfield,
-2471,030000,CD,,
-2471005,030000,CSD,Rivière-Beaudette,
-2471015,030000,CSD,Saint-Télesphore,
-2471020,030000,CSD,Saint-Polycarpe,
-2471025,030000,CSD,Saint-Zotique,
-2471033,030000,CSD,Les Coteaux,
-2471040,030000,CSD,Coteau-du-Lac,
-2471045,030000,CSD,Saint-Clet,
-2471050,030000,CSD,Les Cèdres,
-2471055,030000,CSD,Pointe-des-Cascades,
-2471060,030000,CSD,L'Île-Perrot,
-2471065,030000,CSD,Notre-Dame-de-l'Île-Perrot,
-2471070,030000,CSD,Pincourt,
-2471075,032520,CSD,Terrasse-Vaudreuil,
-2471083,032520,CSD,Vaudreuil-Dorion,
-2471090,032520,CSD,Vaudreuil-sur-le-Lac,
-2471095,030000,CSD,L'Île-Cadieux,
-2471100,030000,CSD,Hudson,
-2471105,030000,CSD,Saint-Lazare,
-2471110,030000,CSD,Sainte-Marthe,
-2471115,030000,CSD,Sainte-Justine-de-Newton,
-2471125,030000,CSD,Très-Saint-Rédempteur,
-2471133,030000,CSD,Rigaud,
-2471140,030000,CSD,Pointe-Fortune,
-2472,030000,CD,,
-2472005,032330,CSD,Saint-Eustache,
-2472010,030000,CSD,Deux-Montagnes,
-2472015,030000,CSD,Sainte-Marthe-sur-le-Lac,
-2472020,030000,CSD,Pointe-Calumet,
-2472025,030000,CSD,Saint-Joseph-du-Lac,
-2472032,030000,CSD,Oka,
-2472043,030000,CSD,Saint-Placide,
-2472802,030000,CSD,Kanesatake,
-2473005,030000,CSD,Boisbriand,
-2473,030000,CD,,
-2473010,030000,CSD,Sainte-Thérèse,
-2473015,030000,CSD,Blainville,
-2473020,030000,CSD,Rosemère,
-2473025,030000,CSD,Lorraine,
-2473030,030000,CSD,Bois-des-Filion,
-2473035,030000,CSD,Sainte-Anne-des-Plaines,
-2474,030000,CD,,
-2474005,030000,CSD,Mirabel,
-2475,030000,CD,,
-2475005,030000,CSD,Saint-Colomban,
-2475017,032310,CSD,Saint-Jérôme,
-2475028,030000,CSD,Sainte-Sophie,
-2475040,030000,CSD,Prévost,
-2475045,030000,CSD,Saint-Hippolyte,
-2476,030000,CD,,
-2476008,030000,CSD,Saint-André-d'Argenteuil,
-2476020,032320,CSD,Lachute,
-2476025,030000,CSD,Gore,
-2476030,030000,CSD,Mille-Isles,
-2476035,030000,CSD,Wentworth,
-2476043,030000,CSD,Brownsburg-Chatham,
-2476052,030000,CSD,Grenville-sur-la-Rouge,
-2476055,030000,CSD,Grenville,
-2476065,030000,CSD,Harrington,
-2477,030000,CD,,
-2477011,030000,CSD,Estérel,
-2477012,030000,CSD,Sainte-Marguerite-du-Lac-Masson,
-2477022,032220,CSD,Sainte-Adèle,
-2477030,030000,CSD,Piedmont,
-2477035,030000,CSD,Sainte-Anne-des-Lacs,
-2477043,032220,CSD,Saint-Sauveur,
-2477050,030000,CSD,Morin-Heights,
-2477055,030000,CSD,Lac-des-Seize-Îles,
-2477060,030000,CSD,Wentworth-Nord,
-2477065,030000,CSD,Saint-Adolphe-d'Howard,
-2478,030000,CD,,
-2478005,030000,CSD,Val-Morin,
-2478010,030000,CSD,Val-David,
-2478015,030000,CSD,Lantier,
-2478020,030000,CSD,Sainte-Lucie-des-Laurentides,
-2478032,032210,CSD,Sainte-Agathe-des-Monts,
-2478042,030000,CSD,Ivry-sur-le-Lac,
-2478047,030000,CSD,Saint-Faustin - Lac-Carré,
-2478050,030000,CSD,Barkmere,
-2478055,030000,CSD,Montcalm,
-2478060,030000,CSD,Arundel,
-2478065,030000,CSD,Huberdeau,
-2478070,030000,CSD,Amherst,
-2478075,030000,CSD,Brébeuf,
-2478095,030000,CSD,Lac-Supérieur,
-2478100,030000,CSD,Val-des-Lacs,
-2478102,032120-032210,CSD,Mont-Tremblant,
-2478115,030000,CSD,La Conception,
-2478120,030000,CSD,Labelle,
-2478127,030000,CSD,Lac-Tremblant-Nord,
-2478130,031820,CSD,La Minerve,
-2478802,030000,CSD,Doncaster,
-2479,030000,CD,,
-2479005,030000,CSD,Notre-Dame-du-Laus,
-2479010,030000,CSD,Notre-Dame-de-Pontmain,
-2479015,030000,CSD,Lac-du-Cerf,
-2479022,030000,CSD,Saint-Aimé-du-Lac-des-Îles,
-2479025,030000,CSD,Kiamika,
-2479030,030000,CSD,Nominingue,
-2479037,031820,CSD,Rivière-Rouge,
-2479047,030000,CSD,La Macaza,
-2479050,030000,CSD,L'Ascension,
-2479060,030000,CSD,Lac-Saguay,
-2479065,030000,CSD,Chute-Saint-Philippe,
-2479078,030000,CSD,Lac-des-Écorces,
-2479088,031800-031810,CSD,Mont-Laurier,
-2479097,030000,CSD,Ferme-Neuve,
-2479105,030000,CSD,Lac-Saint-Paul,
-2479110,030000,CSD,Mont-Saint-Michel,
-2479115,030000,CSD,Sainte-Anne-du-Lac,
-2479902,030000,CSD,Lac-de-la-Pomme,
-2479904,030000,CSD,Lac-Akonapwehikan,
-2479906,030000,CSD,Lac-Wagwabika,
-2479910,030000,CSD,Lac-Bazinet,
-2479912,030000,CSD,Lac-De La Bidière,
-2479914,030000,CSD,Lac-Oscar,
-2479916,030000,CSD,Lac-de-la-Maison-de-Pierre,
-2479920,030000,CSD,Baie-des-Chaloupes,
-2479922,030000,CSD,Lac-Douaire,
-2479924,030000,CSD,Lac-Ernest,
-2479926,030000,CSD,Lac-Marguerite,
-2480,030000,CD,,
-2480005,030000,CSD,Fassett,
-2480010,030000,CSD,Montebello,
-2480015,030000,CSD,Notre-Dame-de-Bonsecours,
-2480020,030000,CSD,Notre-Dame-de-la-Paix,
-2480027,030000,CSD,Saint-André-Avellin,
-2480037,031930,CSD,Papineauville,
-2480045,030000,CSD,Plaisance,
-2480050,030000,CSD,Thurso,
-2480055,030000,CSD,Lochaber,
-2480060,030000,CSD,Lochaber-Partie-Ouest,
-2480065,030000,CSD,Mayo,
-2480070,030000,CSD,Saint-Sixte,
-2480078,030000,CSD,Ripon,
-2480085,030000,CSD,Mulgrave-et-Derry,
-2480090,030000,CSD,Montpellier,
-2480095,030000,CSD,Lac-Simon,
-2480103,031930,CSD,Chénéville,
-2480110,030000,CSD,Namur,
-2480115,030000,CSD,Boileau,
-2480125,030000,CSD,Saint-Émile-de-Suffolk,
-2480130,030000,CSD,Lac-des-Plages,
-2480135,030000,CSD,Duhamel,
-2480140,030000,CSD,Val-des-Bois,
-2480145,030000,CSD,Bowman,
-2481,030000,CD,,
-2481017,031100,CSD,Gatineau,
-2482,030000,CD,,
-2482005,030000,CSD,L'Ange-Gardien,
-2482010,030000,CSD,Notre-Dame-de-la-Salette,
-2482015,030000,CSD,Val-des-Monts,
-2482020,030000,CSD,Cantley,
-2482025,030000,CSD,Chelsea,
-2482030,031700,CSD,Pontiac,
-2482035,030000,CSD,La Pêche,
-2483,030000,CD,,
-2483005,030000,CSD,Denholm,
-2483010,031910,CSD,Low,
-2483015,030000,CSD,Kazabazua,
-2483020,030000,CSD,Lac-Sainte-Marie,
-2483032,031920,CSD,Gracefield,
-2483040,030000,CSD,Cayamant,
-2483045,030000,CSD,Blue Sea,
-2483050,030000,CSD,Bouchette,
-2483055,031100,CSD,Sainte-Thérèse-de-la-Gatineau,
-2483060,030000,CSD,Messines,
-2483065,031920,CSD,Maniwaki,
-2483070,030000,CSD,Déléage,
-2483075,030000,CSD,Egan-Sud,
-2483085,030000,CSD,Bois-Franc,
-2483088,030000,CSD,Montcerf-Lytton,
-2483090,030000,CSD,Aumond,
-2483095,030000,CSD,Grand-Remous,
-2483802,030000,CSD,Kitigan Zibi,
-2483804,030000,CSD,Lac-Rapide,
-2483902,030000,CSD,Lac-Pythonga,
-2483904,030000,CSD,Cascades-Malignes,
-2483906,030000,CSD,Lac-Lenôtre,
-2483908,030000,CSD,Lac-Moselle,
-2483912,030000,CSD,Dépôt-Échouani,
-2484,030000,CD,,
-2484005,030000,CSD,Bristol,
-2484010,031720,CSD,Shawville,
-2484015,030000,CSD,Clarendon,
-2484020,030000,CSD,Portage-du-Fort,
-2484025,030000,CSD,Bryson,
-2484030,030000,CSD,Campbell's Bay,
-2484035,030000,CSD,L'Île-du-Grand-Calumet,
-2484040,030000,CSD,Litchfield,
-2484045,030000,CSD,Thorne,
-2484050,030000,CSD,Alleyn-et-Cawood,
-2484055,030000,CSD,Otter Lake,
-2484060,030000,CSD,Fort-Coulonge,
-2484065,030000,CSD,Mansfield-et-Pontefract,
-2484070,030000,CSD,Waltham,
-2484082,030000,CSD,L'Isle-aux-Allumettes,
-2484090,030000,CSD,Chichester,
-2484095,030000,CSD,Sheenboro,
-2484100,031710,CSD,Rapides-des-Joachims,
-2484902,030000,CSD,Lac-Nilgaut,
-2485,030000,CD,,
-2485005,031520,CSD,Témiscaming,
-2485010,030000,CSD,Kipawa,
-2485015,030000,CSD,Saint-Édouard-de-Fabre,
-2485020,030000,CSD,Béarn,
-2485025,031510,CSD,Ville-Marie,
-2485030,030000,CSD,Duhamel-Ouest,
-2485037,030000,CSD,Lorrainville,
-2485045,030000,CSD,Saint-Bruno-de-Guigues,
-2485050,030000,CSD,Laverlochère,
-2485055,030000,CSD,Fugèreville,
-2485060,030000,CSD,Latulipe-et-Gaboury,
-2485065,030000,CSD,Belleterre,
-2485070,030000,CSD,Laforce,
-2485075,030000,CSD,Moffet,
-2485080,030000,CSD,Angliers,
-2485085,030000,CSD,Saint-Eugène-de-Guigues,
-2485090,030000,CSD,Notre-Dame-du-Nord,
-2485095,030000,CSD,Guérin,
-2485100,030000,CSD,Nédélec,
-2485105,030000,CSD,Rémigny,
-2485802,030000,CSD,Kebaowek,
-2485803,030000,CSD,Hunter's Point,
-2485804,030000,CSD,Winneway,
-2485806,030000,CSD,Timiskaming,
-2485905,030000,CSD,Laniel,
-2485907,031500,CSD,Les Lacs-du-Témiscamingue,
-2486,030000,CD,,
-2486042,031450,CSD,Rouyn-Noranda,
-2487,030000,CD,,
-2487005,030000,CSD,Duparquet,
-2487010,030000,CSD,Rapide-Danseur,
-2487015,030000,CSD,Roquemaure,
-2487020,030000,CSD,Gallichan,
-2487025,030000,CSD,Palmarolle,
-2487030,030000,CSD,Sainte-Germaine-Boulé,
-2487035,030000,CSD,Poularies,
-2487042,030000,CSD,Taschereau,
-2487050,030000,CSD,Authier,
-2487058,030000,CSD,Macamic,
-2487070,030000,CSD,Sainte-Hélène-de-Mancebourg,
-2487075,030000,CSD,Clerval,
-2487080,030000,CSD,La Reine,
-2487085,030000,CSD,Dupuy,
-2487090,031410,CSD,La Sarre,
-2487095,030000,CSD,Chazel,
-2487100,030000,CSD,Authier-Nord,
-2487105,030000,CSD,Val-Saint-Gilles,
-2487110,030000,CSD,Clermont,
-2487115,030000,CSD,Normétal,
-2487120,032823,CSD,Saint-Lambert,
-2487902,030000,CSD,Lac-Duparquet,
-2487904,030000,CSD,Rivière-Ojima,
-2488,030000,CD,,
-2488005,030000,CSD,Champneuf,
-2488010,030000,CSD,Rochebaucourt,
-2488015,030000,CSD,La Morandière,
-2488022,030000,CSD,Barraute,
-2488030,030000,CSD,La Corne,
-2488035,030000,CSD,Landrienne,
-2488040,030000,CSD,Saint-Marc-de-Figuery,
-2488045,030000,CSD,La Motte,
-2488050,030000,CSD,Saint-Mathieu-d'Harricana,
-2488055,031420,CSD,Amos,
-2488060,030000,CSD,Saint-Félix-de-Dalquier,
-2488065,030000,CSD,Saint-Dominique-du-Rosaire,
-2488070,030000,CSD,Berry,
-2488075,030000,CSD,Trécesson,
-2488080,030000,CSD,Launay,
-2488085,030000,CSD,Sainte-Gertrude-Manneville,
-2488090,030000,CSD,Preissac,
-2488802,030000,CSD,Pikogan,
-2488902,030000,CSD,Lac-Despinassy,
-2488904,030000,CSD,Lac-Chicobi,
-2489,030000,CD,,
-2489008,031470,CSD,Val-d'Or,
-2489010,030000,CSD,Rivière-Héva,
-2489015,031460,CSD,Malartic,
-2489040,031440,CSD,Senneterre,
-2489045,031440,CSD,Senneterre,
-2489050,030000,CSD,Belcourt,
-2489802,030000,CSD,Kitcisakik,
-2489804,030000,CSD,Lac-Simon,
-2489902,030000,CSD,Matchi-Manitou,
-2489908,030000,CSD,Lac-Metei,
-2489910,030000,CSD,Réservoir-Dozois,
-2489912,030000,CSD,Lac-Granet,
-2490,030000,CD,,
-2490012,030000,CSD,La Tuque,
-2490017,030000,CSD,La Bostonnais,
-2490027,030000,CSD,Lac-Édouard,
-2490801,030000,CSD,Coucoucache,
-2490802,030000,CSD,Wemotaci,
-2490804,030000,CSD,Obedjiwan,
-2491,030000,CD,,
-2491005,030000,CSD,Lac-Bouchette,
-2491010,030000,CSD,Saint-André-du-Lac-Saint-Jean,
-2491015,030000,CSD,Saint-François-de-Sales,
-2491020,030000,CSD,Chambord,
-2491025,034340,CSD,Roberval,
-2491030,030000,CSD,Sainte-Hedwidge,
-2491035,030000,CSD,Saint-Prime,
-2491042,034340,CSD,Saint-Félicien,
-2491050,030000,CSD,La Doré,
-2491802,030000,CSD,Mashteuiatsh,
-2491902,034310,CSD,Lac-Ashuapmushuan,
-2492,030000,CD,,
-2492005,030000,CSD,Saint-Augustin,
-2492010,034320,CSD,Péribonka,
-2492015,030000,CSD,Sainte-Jeanne-d'Arc,
-2492022,030000,CSD,Dolbeau-Mistassini,
-2492030,030000,CSD,Albanel,
-2492040,034320,CSD,Normandin,
-2492045,030000,CSD,Saint-Thomas-Didyme,
-2492050,030000,CSD,Saint-Edmond-les-Plaines,
-2492055,030000,CSD,Girardville,
-2492060,030000,CSD,Notre-Dame-de-Lorette,
-2492065,030000,CSD,Saint-Eugène-d'Argentenay,
-2492070,030000,CSD,Saint-Stanislas,
-2492902,030000,CSD,Passes-Dangereuses,
-2492904,030000,CSD,Rivière-Mistassini,
-2493,030000,CD,,
-2493005,034330,CSD,Desbiens,
-2493012,030000,CSD,Métabetchouan - Lac-à-la-Croix,
-2493020,030000,CSD,Hébertville,
-2493025,030000,CSD,Hébertville-Station,
-2493030,030000,CSD,Saint-Bruno,
-2493035,030000,CSD,Saint-Gédéon,
-2493042,034330,CSD,Alma,
-2493045,030000,CSD,Saint-Nazaire,
-2493055,030000,CSD,Labrecque,
-2493060,030000,CSD,Lamarche,
-2493065,030000,CSD,L'Ascension-de-Notre-Seigneur,
-2493070,030000,CSD,Saint-Henri-de-Taillon,
-2493075,030000,CSD,Sainte-Monique,
-2493080,030000,CSD,Saint-Ludger-de-Milot,
-2493902,030000,CSD,Mont-Apica,
-2493904,030000,CSD,Lac-Moncouche,
-2493906,030000,CSD,Lac-Achouakan,
-2493908,030000,CSD,Belle-Rivière,
-2494,030000,CD,,
-2494068,030000,CSD,Saguenay,
-2494205,030000,CSD,Petit-Saguenay,
-2494210,030000,CSD,L'Anse-Saint-Jean,
-2494215,030000,CSD,Rivière-Éternité,
-2494220,030000,CSD,Ferland-et-Boilleau,
-2494225,030000,CSD,Saint-Félix-d'Otis,
-2494230,030000,CSD,Sainte-Rose-du-Nord,
-2494235,030000,CSD,Saint-Fulgence,
-2494240,030000,CSD,Saint-Honoré,
-2494245,030000,CSD,Saint-David-de-Falardeau,
-2494250,030000,CSD,Bégin,
-2494255,030000,CSD,Saint-Ambroise,
-2494260,030000,CSD,Saint-Charles-de-Bourget,
-2494265,030000,CSD,Larouche,
-2494926,030000,CSD,Lalemant,
-2494928,030000,CSD,Lac-Ministuk,
-2494930,030000,CSD,Mont-Valin,
-2495,030000,CD,,
-2495005,030000,CSD,Tadoussac,
-2495010,030000,CSD,Sacré-Coeur,
-2495018,030000,CSD,Les Bergeronnes,
-2495025,030000,CSD,Les Escoumins,
-2495032,030000,CSD,Longue-Rive,
-2495040,032811,CSD,Portneuf-sur-Mer,
-2495045,030000,CSD,Forestville,
-2495050,030000,CSD,Colombier,
-2495902,030000,CSD,Lac-au-Brochet,
-2496,030000,CD,,
-2496005,030000,CSD,Baie-Trinité,
-2496010,030000,CSD,Godbout,
-2496015,030000,CSD,Franquelin,
-2496020,030000,CSD,Baie-Comeau,
-2496025,030000,CSD,Pointe-Lebel,
-2496030,030000,CSD,Pointe-aux-Outardes,
-2496035,030000,CSD,Chute-aux-Outardes,
-2496040,030000,CSD,Ragueneau,
-2496802,030000,CSD,Pessamit,
-2496902,030000,CSD,Rivière-aux-Outardes,
-2497,030000,CD,,
-2497007,030000,CSD,Sept-Îles,
-2497022,030000,CSD,Port-Cartier,
-2497035,033400,CSD,Fermont,
-2497040,033300,CSD,Schefferville,
-does not exist ,030000,CSD,,
-2497804,030000,CSD,Maliotenam,
-2497806,030000,CSD,Kawawachikamach,
-2497808,030000,CSD,Matimekosh,
-2497810,030000,CSD,Lac-John,
-2497902,030000,CSD,Rivière-Nipissis,
-2497904,030000,CSD,Lac-Walker,
-2497906,030000,CSD,Rivière-Mouchalagane,
-2497908,030000,CSD,Caniapiscau,
-2497912,030000,CSD,Lac-Juillet,
-2497914,030000,CSD,Lac-Vacher,
-2498,036600,CD,,
-2498005,036600,CSD,Blanc-Sablon,
-2498010,030000,CSD,Bonne-Espérance,
-2498012,030000,CSD,Saint-Augustin,
-2498014,030000,CSD,Gros-Mécatina,
-2498015,030000,CSD,Côte-Nord-du-Golfe-du-Saint-Laurent,
-2498020,036700,CSD,L'Île-d'Anticosti,
-2498025,036400,CSD,Natashquan,
-2498030,030000,CSD,Aguanish,
-2498035,030000,CSD,Baie-Johan-Beetz,
-2498040,030000,CSD,Havre-Saint-Pierre,
-2498045,030000,CSD,Longue-Pointe-de-Mingan,
-2498050,030000,CSD,Rivière-Saint-Jean,
-2498055,030000,CSD,Rivière-au-Tonnerre,
-2498802,030000,CSD,Pakuashipi,
-2498804,030000,CSD,La Romaine,
-2498808,030000,CSD,Mingan,
-2498904,030000,CSD,Lac-Jérôme,
-2498912,030000,CSD,Petit-Mécatina,
-2499,030000,CD,,
-2499005,031430,CSD,Lebel-sur-Quévillon,
-2499010,030000,CSD,Waswanipi,
-2499015,031300,CSD,Matagami,
-2499020,030000,CSD,Chapais,
-2499025,034100,CSD,Chibougamau,
-2499030,030000,CSD,Mistissini,
-2499035,031200,CSD,Waskaganish,
-2499040,030000,CSD,Nemaska,
-2499045,030000,CSD,Eastmain,
-2499050,030000,CSD,Wemindji,
-2499055,030000,CSD,Chisasibi,
-2499060,033100,CSD,Baie-James,
-2499065,030000,CSD,Kawawachikamach,
-2499070,030000,CSD,Whapmagoostui,
-2499075,038600,CSD,Kuujjuarapik,
-2499080,038500,CSD,Umiujaq,
-2499085,038400,CSD,Inukjuak,
-2499090,039800,CSD,Kangiqsualujjuaq,
-2499095,030000,CSD,Kuujjuaq,
-2499100,039600,CSD,Tasiujaq,
-2499105,039500,CSD,Aupaluk,
-2499110,039400,CSD,Kangirsuk,
-2499115,039300,CSD,Quaqtaq,
-2499120,038300,CSD,Puvirnituq,
-2499125,038200,CSD,Akulivik,
-2499130,039200,CSD,Kangiqsujuaq,
-2499135,039100,CSD,Salluit,
-2499140,038100,CSD,Ivujivik,
-2499802,030000,CSD,Waswanipi,
-2499804,030000,CSD,Mistissini,
-2499806,031200,CSD,Waskaganish,
-2499808,030000,CSD,Nemaska,
-2499810,030000,CSD,Eastmain,
-2499812,030000,CSD,Wemindji,
-2499814,030000,CSD,Chisasibi,
-2499816,030000,CSD,Whapmagoostui,
-2499818,030000,CSD,Oujé-Bougoumou,
-2499875,030000,CSD,Kiggaluk,
-2499877,038600,CSD,Kuujjuarapik,
-2499878,038500,CSD,Umiujaq,
-2499879,038400,CSD,Inukjuak,
-2499883,038200,CSD,Akulivik,
-2499887,039100,CSD,Salluit,
-2499888,039200,CSD,Kangiqsujuaq,
-2499891,039500,CSD,Aupaluk,
-2499892,039600,CSD,Tasiujaq,
-2499893,039700,CSD,Kuujjuaq,
-2499894,039800,CSD,Kangiqsualujjuaq,
-2499896,030000,CSD,Killiniq,
-2499902,030000,CSD,Rivière-Koksoak,
-2499904,030000,CSD,Baie-d'Hudson,
-13,010000,PT,New Brunswick,
-1301,015500,CD,Saint John,
-1301002,010000,CSD,St. Martins,
-1301006,015500,CSD,Saint John,
-1301016,010000,CSD,Musquash,
-1301001,010000,CSD,Saint Martins,
-1301004,010000,CSD,Simonds,
-1302,015600-015700,CD,Charlotte,
-1302044,010000,CSD,Dumbarton,
-1302012,010000,CSD,Blacks Harbour,
-1302006,010000,CSD,West Isles,
-1302008,010000,CSD,Lepreau,
-1302039,010000,CSD,Saint James,
-1302042,010000,CSD,Saint David,
-1302028,010000,CSD,Saint Croix,
-1302034,015600,CSD,Saint Stephen,
-1302024,010000,CSD,Saint Andrews,
-1302031,010000,CSD,Dufferin,
-1302001,015700,CSD,Grand Manan,
-1302016,010000,CSD,Saint George,
-1302021,010000,CSD,Saint Patrick,
-1302004,010000,CSD,Campobello,
-1302052,015700,CSD,Grand Manan,
-1302014,010000,CSD,Clarendon,
-1302037,015600,CSD,St. Stephen,
-1302026,010000,CSD,Saint Andrews,
-1302018,010000,CSD,St. George,
-1302011,010000,CSD,Pennfield,
-1303,015200,CD,Sunbury,
-1303001,010000,CSD,Blissville,
-1303006,010000,CSD,Fredericton Junction,
-1303016,010000,CSD,Maugerville,
-1303008,010000,CSD,Lincoln,
-1303018,010000,CSD,Northfield,
-1303012,015200,CSD,Oromocto,
-1303004,010000,CSD,Gladstone,
-1303014,010000,CSD,Sheffield,
-1303013,015200,CSD,Oromocto 26,
-1303011,010000,CSD,Burton,
-1303005,010000,CSD,Tracy,
-1304,010000,,CD,
-1304018,010000,CSD,Waterborough,
-1304011,010000,CSD,Cambridge,
-1304022,010000,CSD,Minto,
-1304013,010000,CSD,Cambridge-Narrows,
-1304021,010000,CSD,Canning,
-1304025,010000,CSD,Chipman,
-1304014,010000,CSD,Johnston,
-1304004,010000,CSD,Gagetown,
-1304016,010000,CSD,Brunswick,
-1304008,010000,CSD,Wickham,
-1304005,010000,CSD,Gagetown,
-1304006,010000,CSD,Hampstead,
-1304024,010000,CSD,Chipman,
-1305,015400,CD,Kings,
-1304001,010000,CSD,Petersville,
-1305034,010000,CSD,Springfield,
-1305004,010000,CSD,Upham,
-1305024,010000,CSD,Waterford,
-1305023,015400,CSD,Sussex Corner,
-1305018,010000,CSD,Norton,
-1305057,010000,CSD,Quispamsis,
-1305008,010000,CSD,Rothesay,
-1305011,010000,CSD,Westfield,
-1305015,010000,CSD,Grand Bay-Westfield,
-1305028,010000,CSD,Havelock,
-1305021,015400,CSD,Sussex,
-1305045,010000,CSD,Rothesay,
-1305031,010000,CSD,Studholm,
-1305036,010000,CSD,Kars,
-1305038,010000,CSD,Greenwich,
-1305014,010000,CSD,Kingston,
-1305007,010000,CSD,Hampton,
-1305001,010000,CSD,Hammond,
-1305006,010000,CSD,Hampton,
-1305026,010000,CSD,Cardwell,
-1305022,015400,CSD,Sussex,
-1305016,010000,CSD,Norton,
-1306,010000,CD,Albert,
-1306008,010000,CSD,Elgin,
-1306020,010000,CSD,Riverview,
-1306004,010000,CSD,Harvey,
-1306006,010000,CSD,Alma,
-1306007,010000,CSD,Alma,
-1306014,010000,CSD,Coverdale,
-1306011,010000,CSD,Hillsborough,
-1306025,010000,CSD,Hillsborough,
-1306003,010000,CSD,Riverside-Albert,
-1306001,010000,CSD,Hopewell,
-1307,010000,CD,Westmorland,
-1307016,010000,CSD,Shediac,
-1307008,010000,CSD,Sackville,
-1307022,016400,CSD,Moncton,
-1307013,010000,CSD,Memramcook,
-1307019,016400,CSD,Moncton,
-1307009,010000,CSD,Sackville,
-1307007,010000,CSD,Cap-Pelé,
-1307001,010000,CSD,Westmorland,
-1307045,010000,CSD,Dieppe,
-1307011,010000,CSD,Dorchester,
-1307029,010000,CSD,Petitcodiac,
-1307014,010000,CSD,Fort Folly 1,
-1307005,010000,CSD,Beaubassin East / Beaubassin-est,
-1307024,010000,CSD,Salisbury,
-1307002,010000,CSD,Port Elgin,
-1307052,010000,CSD,Shediac,
-1307012,010000,CSD,Dorchester,
-1307004,010000,CSD,Botsford,
-1307028,010000,CSD,Salisbury,
-1308,016300,CD,Kent,
-1308017,010000,CSD,Rexton,
-1308012,010000,CSD,Huskisson,
-1308008,010000,CSD,Saint-Paul,
-1308021,010000,CSD,Saint-Louis,
-1308020,010000,CSD,Indian Island 28,
-1308003,010000,CSD,Buctouche 16,
-1308014,010000,CSD,Weldford,
-1308007,010000,CSD,Saint-Antoine,
-1308026,016100,CSD,Carleton,
-1308016,010000,CSD,Richibucto,
-1308024,010000,CSD,Acadieville,
-1308022,010000,CSD,Saint-Louis de Kent,
-1308001,010000,CSD,Dundas,
-1308015,010000,CSD,Richibucto 15,
-1308010,010000,CSD,Harcourt,
-1308019,010000,CSD,Saint-Charles,
-1308006,010000,CSD,Saint Mary,
-1308018,010000,CSD,Richibucto,
-1308004,010000,CSD,Wellington,
-1308005,010000,CSD,Bouctouche,
-1309,010000,CD,Northumberland,
-1309044,010000,CSD,Burnt Church 14,
-1309031,010000,CSD,Newcastle,
-1309021,010000,CSD,Blissfield,
-1309006,010000,CSD,Chatham,
-1309018,016200,CSD,Blackville,
-1309011,010000,CSD,Derby,
-1309027,017600,CSD,Upper Miramichi,
-1309022,016200,CSD,Doaktown,
-1309036,010000,CSD,Alnwick,
-1309026,010000,CSD,Southesk,
-1309023,010000,CSD,Red Bank 4,
-1309017,010000,CSD,Rogersville,
-1309019,016200,CSD,Blackville,
-1309001,010000,CSD,Hardwicke,
-1309004,010000,CSD,Glenelg,
-1309034,010000,CSD,Big Hole Tract 8 (South Half),
-1309047,010000,CSD,Tabusintac 9,
-1309014,010000,CSD,Nelson,
-1309038,010000,CSD,Neguac,
-1309028,010000,CSD,Northesk,
-1309050,017600,CSD,Miramichi,
-1309035,010000,CSD,Eel Ground 2,
-1309016,010000,CSD,Rogersville,
-1310,015100,CD,York,
-1310005,010000,CSD,Harvey,
-1310006,010000,CSD,McAdam,
-1310013,010000,CSD,Meductic,
-1310011,010000,CSD,Canterbury,
-1310036,016200,CSD,Stanley,
-1310024,010000,CSD,Southampton,
-1310032,015100,CSD,Fredericton,
-1310021,010000,CSD,Queensbury,
-1310034,010000,CSD,Devon 30,
-1310001,010000,CSD,New Maryland,
-1310031,010000,CSD,Saint Marys,
-1310037,016200,CSD,Stanley,
-1310012,010000,CSD,Canterbury,
-1310025,010000,CSD,Millville,
-1310026,010000,CSD,Bright,
-1310018,010000,CSD,Kingsclear,
-1310002,010000,CSD,New Maryland,
-1310016,010000,CSD,Prince William,
-1310007,010000,CSD,McAdam,
-1310014,010000,CSD,Dumfries,
-1310054,010000,CSD,Nackawic,
-1310028,010000,CSD,Douglas,
-1310019,010000,CSD,Kingsclear 6,
-1310004,010000,CSD,Manners Sutton,
-1310008,010000,CSD,North Lake,
-1311,016100,CD,Carleton,
-1311018,010000,CSD,Wilmot,
-1311019,010000,CSD,Centreville,
-1311005,016100,CSD,Woodstock 23,
-1311024,010000,CSD,Peel,
-1311012,010000,CSD,Hartland,
-1311008,010000,CSD,Northampton,
-1311026,010000,CSD,Aberdeen,
-1311004,016100,CSD,Woodstock,
-1311001,010000,CSD,Richmond,
-1311028,016300,CSD,Kent,
-1311011,010000,CSD,Brighton,
-1311031,010000,CSD,Wicklow,
-1311027,010000,CSD,Florenceville-Bristol,
-1311014,010000,CSD,Wakefield,
-1311030,010000,CSD,Bath,
-1311021,010000,CSD,Simonds,
-1311006,016100,CSD,Woodstock,
-1312,017300,CD,Victoria,
-1312002,010000,CSD,Aroostook,
-1312023,010000,CSD,Drummond,
-1312019,017300,CSD,Grand Falls / Grand-Sault,
-1312008,010000,CSD,Gordon,
-1312006,010000,CSD,Perth-Andover,
-1312016,017300,CSD,Grand Falls,
-1312021,010000,CSD,Drummond,
-1312011,010000,CSD,Lorne,
-1312001,010000,CSD,Andover,
-1312014,010000,CSD,Denmark,
-1312009,010000,CSD,Plaster Rock,
-1312007,010000,CSD,Tobique 20,
-1312004,010000,CSD,Perth,
-1313,017100,CD,Madawaska,
-1313022,010000,CSD,Saint-Joseph,
-1313004,010000,CSD,Saint-Léonard,
-1313012,010000,CSD,Sainte-Anne-de-Madawaska,
-1313039,010000,CSD,Clair,
-1313024,010000,CSD,Saint-Jacques,
-1313028,017100,CSD,Madawaska,
-1313027,017100,CSD,Edmundston,
-1313033,010000,CSD,St. Hilaire,
-1313038,010000,CSD,Clair,
-1313042,010000,CSD,Saint-François de Madawaska,
-1313036,010000,CSD,Lac-Baker,
-1313020,010000,CSD,St. Basile 10,
-1313032,010000,CSD,Saint-Hilaire,
-1313008,010000,CSD,Notre-Dame-de-Lourdes,
-1313006,010000,CSD,St. Leonard,
-1313041,010000,CSD,Saint-François,
-1313001,010000,CSD,Saint-André,
-1313011,010000,CSD,Sainte-Anne,
-1313034,010000,CSD,Baker Brook,
-1313002,010000,CSD,Saint-André,
-1313037,010000,CSD,Lac Baker,
-1313015,010000,CSD,Rivière-Verte,
-1313035,010000,CSD,Baker-Brook,
-1313018,010000,CSD,Saint-Basile,
-1313014,010000,CSD,Rivière-Verte,
-1314,017210-017220,CD,Restigouche,
-1314015,010000,CSD,Tide Head,
-1314017,010000,CSD,Dalhousie,
-1314021,010000,CSD,Saint-Quentin,
-1314001,010000,CSD,Durham,
-1314004,010000,CSD,Charlo,
-1314012,010000,CSD,Addington,
-1314019,010000,CSD,Kedgwick,
-1314014,017200-017220,CSD,Campbellton,
-1314025,010000,CSD,Belledune,
-1314016,010000,CSD,Eldon,
-1314010,010000,CSD,Eel River 3,
-1314005,010000,CSD,Balmoral,
-1314008,010000,CSD,Dalhousie,
-1314011,010000,CSD,Eel River Crossing,
-1314022,010000,CSD,Saint-Quentin,
-1314006,010000,CSD,Balmoral,
-1314026,010000,CSD,Indian Ranch,
-1314013,010000,CSD,Atholville,
-1314003,010000,CSD,Colborne,
-1314018,010000,CSD,Grimmer,
-1315,010000,CD,Gloucester,
-1315029,010000,CSD,Shippagan,
-1315026,010000,CSD,Caraquet,
-1315038,010000,CSD,Grande-Anse,
-1315008,017500,CSD,Bathurst,
-1315006,010000,CSD,Allardville,
-1315013,010000,CSD,Pointe-Verte,
-1315032,010000,CSD,Lamèque,
-1315012,010000,CSD,Beresford,
-1315036,010000,CSD,Bertrand,
-1315022,010000,CSD,Saint-Isidore,
-1315033,010000,CSD,Sainte-Marie - Saint-Raphaël,
-1315028,010000,CSD,Caraquet,
-1315024,010000,CSD,Inkerman,
-1315037,010000,CSD,Nigadoo,
-1315011,017500,CSD,Bathurst,
-1315027,010000,CSD,Bas-Caraquet,
-1315001,010000,CSD,Saumarez,
-1315014,010000,CSD,Petit-Rocher,
-1315010,010000,CSD,Pabineau 11,
-1315040,010000,CSD,Maisonnette,
-1315017,010000,CSD,Saint-Léolin,
-1315021,010000,CSD,Saint-Isidore,
-1315015,010000,CSD,Beresford,
-1315016,010000,CSD,New Bandon,
-1315030,010000,CSD,Le Goulet,
-1315019,010000,CSD,Paquetville,
-1315020,010000,CSD,Paquetville,
-1315003,010000,CSD,Tracadie-Sheila,
-1315031,010000,CSD,Shippagan,
-12,010000,PT,Nova Scotia,
-1201,011600,CD,Shelburne,
-1201009,010000,CSD,Lockeport,
-1201006,011600,CSD,Shelburne,
-1201004,010000,CSD,Clark's Harbour,
-1201001,010000,CSD,Barrington,
-1201008,011600,CSD,Shelburne,
-1202,011700,CD,Yarmouth,
-1202006,011700,CSD,Yarmouth,
-1202001,010000,CSD,Argyle,
-1202004,011700,CSD,Yarmouth,
-1202040,011700,CSD,Yarmouth 33,
-1203,011300,CD,Digby,
-1203006,011300,CSD,Digby,
-1203009,010000,CSD,Bear River (Part) 6,
-1203004,011300,CSD,Digby,
-1203001,010000,CSD,Clare,
-1204,011500,CD,Queens,
-1204010,011500,CSD,Queens,
-1204009,010000,CSD,Ponhook Lake 10,
-1204015,010000,CSD,Wildcat 12,
-1205,011200,CD,Annapolis,
-1205009,011200,CSD,"Annapolis, Subd. B",
-1205002,010000,CSD,Bear River (Part) 6,
-1205006,010000,CSD,Bear River 6B,
-1205014,011200,CSD,"Annapolis, Subd. C",
-1205016,010000,CSD,Middleton,
-1205004,011200,CSD,"Annapolis, Subd. A",
-1205012,010000,CSD,Bridgetown,
-1205008,011200,CSD,Annapolis Royal,
-1205001,011200,CSD,"Annapolis, Subd. D",
-1206,011400,CD,Lunenburg,
-1206016,010000,CSD,New Ross 20,
-1206004,010000,CSD,Bridgewater,
-1206008,010000,CSD,Mahone Bay,
-1206014,010000,CSD,Pennal 19,
-1206009,010000,CSD,Chester,
-1206001,011400,CSD,Lunenburg,
-1206006,011400,CSD,Lunenburg,
-1206011,010000,CSD,Gold River 21,
-1207,011100,CD,Kings,
-1207012,010000,CSD,Kentville,
-1207024,010000,CSD,Wolfville,
-1207021,011100,CSD,"Kings, Subd. D",
-1207027,010000,CSD,Glooscap 35,
-1207001,011100,CSD,"Kings, Subd. A",
-1207016,011100,CSD,"Kings, Subd. B",
-1207002,010000,CSD,Cambridge 32,
-1207004,010000,CSD,Berwick,
-1207011,011100,CSD,"Kings, Subd. C",
-1208,012500,CD,Hants,
-1208001,012500,CSD,West Hants,
-1208008,012500,CSD,East Hants,
-1208014,010000,CSD,Indian Brook 14,
-1208002,010000,CSD,Windsor,
-1208004,010000,CSD,Hantsport,
-1209,012700-012800,CD,Halifax,
-1209038,010000,CSD,Sheet Harbour 36,
-1209029,010000,CSD,Shubenacadie 13,
-1209037,010000,CSD,Beaver Lake 17,
-1209019,010000,CSD,Cole Harbour 30,
-1209034,012700-012800,CSD,Halifax,
-1210,012300-012400-012600,CD,Colchester,
-1210006,010000,CSD,Truro,
-1210003,010000,CSD,Millbrook 27,
-1210002,010000,CSD,Stewiacke,
-1210008,012300-012400-012600,CSD,"Colchester, Subd. B",
-1210001,012300-012400-012600,CSD,"Colchester, Subd. C",
-1210012,012300-012400-012600,CSD,"Colchester, Subd. A",
-1211,012100-012200,CD,Cumberland,
-1211009,012100-012200,CSD,"Cumberland, Subd. C",
-1211006,012100-012200,CSD,"Cumberland, Subd. B",
-1211014,012100-012200,CSD,"Cumberland, Subd. D",
-1211011,010000,CSD,Amherst,
-1211002,010000,CSD,Parrsboro,
-1211012,010000,CSD,Oxford,
-1211001,012100-012200,CSD,"Cumberland, Subd. A",
-1211008,010000,CSD,Springhill,
-1212,013100,CD,Pictou,
-1212023,010000,CSD,Merigomish Harbour 31,
-1212016,010000,CSD,Trenton,
-1212001,013100,CSD,"Pictou, Subd. A",
-1212009,010000,CSD,Stellarton,
-1212019,010000,CSD,Fisher's Grant 24,
-1212006,013100,CSD,"Pictou, Subd. B",
-1212014,010000,CSD,New Glasgow,
-1212011,013100,CSD,"Pictou, Subd. C",
-1212008,010000,CSD,Westville,
-1212004,013100,CSD,Pictou,
-1213,013200,CD,Guysborough,
-1213004,013200,CSD,Guysborough,
-1213008,010000,CSD,Mulgrave,
-1213001,010000,CSD,St. Mary's,
-1213006,010000,CSD,Canso,
-1214,013300,CD,Antigonish,
-1214001,013300,CSD,"Antigonish, Subd. A",
-1214006,013300,CSD,"Antigonish, Subd. B",
-1214002,013300,CSD,Antigonish,
-1214010,010000,CSD,Pomquet And Afton 23,
-1215,014200-014300,CD,Inverness,
-1215002,010000,CSD,Port Hawkesbury,
-1215001,014200-014300,CSD,"Inverness, Subd. C",
-1215006,014200-014300,CSD,"Inverness, Subd. B",
-1215011,014200-014300,CSD,"Inverness, Subd. A",
-1215008,010000,CSD,Whycocomagh 2,
-1216,014100,CD,Richmond,
-1216011,014100,CSD,"Richmond, Subd. B",
-1216014,010000,CSD,Chapel Island 5,
-1216001,014100,CSD,"Richmond, Subd. C",
-1216006,014100,CSD,"Richmond, Subd. A",
-1217,014500,CD,Cape Breton,
-1217020,010000,CSD,Eskasoni 3,
-1217008,010000,CSD,Membertou 28B,
-1217030,014500,CSD,Cape Breton,
-1218,014400,CD,Victoria,
-1218003,010000,CSD,Wagmatcook 1,
-1218006,014400,CSD,"Victoria, Subd. A",
-1218001,014400,CSD,"Victoria, Subd. B",
-11,010000,PT,Prince Edward Island,
-1101,018100,CD,Kings,
-1101032,018100,CSD,Lot 44,
-1101031,018100,CSD,Lot 43,
-1101019,018100,CSD,Lot 53,
-1101038,018100,CSD,Lot 46,
-1101016,018100,CSD,Lot 52,
-1101011,018100,CSD,Lot 66,
-1101024,018100,CSD,Georgetown,
-1101051,018100,CSD,Lot 38,
-1101039,018100,CSD,Lot 47,
-1101041,018100,CSD,Lot 42,
-1101022,018100,CSD,"Kings, Royalty",
-1101006,018100,CSD,Lot 63,
-1101021,018100,CSD,Cardigan,
-1101048,018100,CSD,Morell,
-1101029,018100,CSD,Lot 56,
-1101046,018100,CSD,Lot 40,
-1101028,018100,CSD,Lot 55,
-1101014,018100,CSD,Lot 51,
-1101008,018100,CSD,Lot 61,
-1101004,018100,CSD,Murray River,
-1101036,018100,CSD,Souris,
-1101044,018100,CSD,St. Peters Bay,
-1101049,018100,CSD,Lot 39,
-1101050,018100,CSD,Morell 2,
-1101034,018100,CSD,Lot 45,
-1101009,018100,CSD,Lot 59,
-1101018,018100,CSD,Montague,
-1101002,018100,CSD,Murray Harbour,
-1101042,018100,CSD,Lot 41,
-1101026,018100,CSD,Lot 54,
-1101001,018100,CSD,Lot 64,
-1102,018300,CD,Queens,
-1102044,018300,CSD,Lot 24,
-1102008,018300,CSD,Lot 57,
-1102057,018300,CSD,Scotchfort 4,
-1102040,018300,CSD,Miltonvale Park,
-1102031,018300,CSD,Lot 29,
-1102030,018300,CSD,Rocky Point 3,
-1102043,018300,CSD,Hunter River,
-1102049,018300,CSD,Lot 33,
-1102050,018300,CSD,Union Road,
-1102058,018300,CSD,Lot 37,
-1102042,018300,CSD,Lot 23,
-1102009,018300,CSD,Lot 50,
-1102065,018300,CSD,Winsloe South,
-1102080,018300,CSD,Stratford,
-1102006,018300,CSD,Lot 58,
-1102001,018300,CSD,Lot 62,
-1102034,018300,CSD,Crapaud,
-1102032,018300,CSD,Victoria,
-1102039,018300,CSD,Lot 21,
-1102059,018300,CSD,Mount Stewart,
-1102052,018300,CSD,Lot 34,
-1102012,018300,CSD,Lot 49,
-1102041,018300,CSD,Lot 22,
-1102014,018300,CSD,Lot 48,
-1102004,018300,CSD,Lot 60,
-1102037,018300,CSD,Clyde River,
-1102048,018300,CSD,Brackley,
-1102051,018300,CSD,Breadalbane,
-1102045,018300,CSD,Resort Mun. Stan.B.-Hope R.-Bayv.-Cavend.-N.Rust.,
-1102038,018300,CSD,Lot 20,
-1102085,018300,CSD,Cornwall,
-1102029,018300,CSD,Lot 30,
-1102054,018300,CSD,Lot 35,
-1102046,018300,CSD,North Rustico,
-1102075,018300,CSD,Charlottetown,
-1102036,018300,CSD,Lot 67,
-1102028,018300,CSD,Lot 65,
-1102033,018300,CSD,Meadowbank,
-1102056,018300,CSD,Lot 36,
-1102026,018300,CSD,Lot 31,
-1102070,018300,CSD,Warren Grove,
-1103,018200,CD,Prince,
-1103054,018200,CSD,Lot 3,
-1103049,018200,CSD,Lot 5,
-1103008,018200,CSD,Kinkora,
-1103010,018200,CSD,Central Bedeque,
-1103052,018200,CSD,Alberton,
-1103016,018200,CSD,Lot 18,
-1103033,018200,CSD,Tyne Valley,
-1103013,018200,CSD,Bedeque,
-1103056,018200,CSD,Lot 2,
-1103041,018200,CSD,Lot 6,
-1103028,018200,CSD,Lot 16,
-1103011,018200,CSD,Lot 25,
-1103023,018200,CSD,Linkletter,
-1103038,018200,CSD,Lot 10,
-1103046,018200,CSD,Lot 8,
-1103012,018200,CSD,Lot 19,
-1103024,018200,CSD,Miscouche,
-1103029,018200,CSD,Wellington,
-1103031,018200,CSD,Lot 14,
-1103034,018200,CSD,Lot 12,
-1103014,018200,CSD,Kensington,
-1103058,018200,CSD,Lot 1,
-1103044,018200,CSD,Lot 9,
-1103009,018200,CSD,Lot 26,
-1103006,018200,CSD,Lot 27,
-1103059,018200,CSD,Tignish,
-1103051,018200,CSD,Lot 4,
-1103036,018200,CSD,Lot 11,
-1103032,018200,CSD,Lot 13,
-1103027,018200,CSD,Abrams Village,
-1103005,018200,CSD,Borden-Carleton,
-1103035,018200,CSD,Lennox Island 1,
-1103062,018200,CSD,Miminegash,
-1103048,018200,CSD,Lot 7,
-1103042,018200,CSD,O'Leary,
-1103018,018200,CSD,Sherbrooke,
-1103026,018200,CSD,Lot 15,
-1103025,018200,CSD,Summerside,
-1103019,018200,CSD,Lot 17,
-1103057,018200,CSD,St. Louis,
-1103001,018200,CSD,Lot 28,
-10,020000,PT,Newfoundland and Labrador,
-1001,021100-021200-021400,CD,Division No. 1,
-1001343,020000,CSD,Old Perlican,
-1001505,020000,CSD,Pouch Cove,
-1001511,020000,CSD,Logy Bay-Middle Cove-Outer Cove,
-1001509,020000,CSD,Torbay,
-1001519,021300-021310-021320,CSD,St. John's,
-1001149,020000,CSD,Ferryland,
-1001113,020000,CSD,Trepassey,
-1001379,020000,CSD,Harbour Grace,
-1001259,021100-021200-021400,CSD,"Division No. 1, Subd. A",
-1001203,021100-021200-021400,CSD,"Division No. 1, Subd. X",
-1001321,021100-021200-021400,CSD,"Division No. 1, Subd. F",
-1001357,021100-021200-021400,CSD,"Division No. 1, Subd. H",
-1001328,020000,CSD,New Perlican,
-1001490,021100-021200-021400,CSD,"Division No. 1, Subd. R",
-1001494,020000,CSD,Wabana,
-1001485,020000,CSD,Conception Bay South,
-1001415,021100-021200-021400,CSD,"Division No. 1, Subd. L",
-1001267,020000,CSD,Southern Harbour,
-1001263,020000,CSD,Long Harbour-Mount Arlington Heights,
-1001131,020000,CSD,Renews-Cappahayden,
-1001101,021100-021200-021400,CSD,"Division No. 1, Subd. V",
-1001405,021100-021200-021400,CSD,"Division No. 1, Subd. K",
-1001352,020000,CSD,Small Point-Adam's Cove-Blackhead-Broad Cove,
-1001517,020000,CSD,Paradise,
-1001316,020000,CSD,Heart's Desire,
-1001312,020000,CSD,Heart's Delight-Islington,
-1001396,020000,CSD,Spaniard's Bay,
-1001421,021100-021200-021400,CSD,"Division No. 1, Subd. M",
-1001289,020000,CSD,Chapel Arm,
-1001181,020000,CSD,Riverhead,
-1001186,020000,CSD,Admirals Beach,
-1001174,020000,CSD,Gaskiers-Point La Haye,
-1001219,020000,CSD,Branch,
-1001434,020000,CSD,South River,
-1001565,021100-021200-021400,CSD,"Division No. 1, Subd. D",
-1001361,020000,CSD,Salmon Cove,
-1001374,021100-021200-021400,CSD,"Division No. 1, Subd. I",
-1001308,020000,CSD,Whiteway,
-1001557,020000,CSD,Bay Bulls,
-1001429,020000,CSD,Clarke's Beach,
-1001472,020000,CSD,Holyrood,
-1001285,020000,CSD,Norman's Cove-Long Cove,
-1001234,021100-021200-021400,CSD,"Division No. 1, Subd. B",
-1001207,020000,CSD,Colinet,
-1001178,020000,CSD,St. Mary's,
-1001228,020000,CSD,St. Bride's,
-1001120,020000,CSD,St. Shott's,
-1001225,020000,CSD,Point Lance,
-1001512,020000,CSD,Bauline,
-1001469,020000,CSD,Harbour Main-Chapel's Cove-Lakeview,
-1001298,020000,CSD,Whitbourne,
-1001332,020000,CSD,Winterton,
-1001551,020000,CSD,Petty Harbour-Maddox Cove,
-1001385,020000,CSD,Upper Island Cove,
-1001456,020000,CSD,Colliers,
-1001559,020000,CSD,Witless Bay,
-1001240,020000,CSD,Placentia,
-1001169,020000,CSD,St. Vincent's-St. Stephen's-Peter's River,
-1001339,021100-021200-021400,CSD,"Division No. 1, Subd. G",
-1001347,020000,CSD,Bay de Verde,
-1001335,020000,CSD,Hant's Harbour,
-1001504,020000,CSD,Portugal Cove-St. Philip's,
-1001365,020000,CSD,Victoria,
-1001304,021100-021200-021400,CSD,"Division No. 1, Subd. E",
-1001409,020000,CSD,Bay Roberts,
-1001446,020000,CSD,Brigus,
-1001441,021100-021200-021400,CSD,"Division No. 1, Subd. N",
-1001426,020000,CSD,North River,
-1001124,021100-021200-021400,CSD,"Division No. 1, Subd. U",
-1001270,020000,CSD,Arnold's Cove,
-1001281,020000,CSD,Chance Cove,
-1001197,020000,CSD,Mount Carmel-Mitchells Brook-St. Catherines,
-1001144,020000,CSD,Aquaforte,
-1001140,020000,CSD,Port Kirwan,
-1001461,020000,CSD,Conception Harbour,
-1001437,020000,CSD,Cupids,
-1001391,021100-021200-021400,CSD,"Division No. 1, Subd. J",
-1001277,020000,CSD,Sunnyside,
-1001293,021100-021200-021400,CSD,"Division No. 1, Subd. Y",
-1001464,020000,CSD,Avondale,
-1001126,020000,CSD,Cape Broyle,
-1001254,020000,CSD,Fox Harbour,
-1001370,020000,CSD,Carbonear,
-1001105,020000,CSD,Portugal Cove South,
-1001325,020000,CSD,Heart's Content,
-1001542,020000,CSD,Mount Pearl,
-1001394,020000,CSD,Bishop's Cove,
-1001274,020000,CSD,Come By Chance,
-1001452,021100-021200-021400,CSD,"Division No. 1, Subd. O",
-1001155,021100-021200-021400,CSD,"Division No. 1, Subd. W",
-1001136,020000,CSD,Fermeuse,
-1001192,020000,CSD,St. Joseph's,
-1001214,021100-021200-021400,CSD,"Division No. 1, Subd. C",
-1001507,020000,CSD,Flatrock,
-1001375,020000,CSD,Bryant's Cove,
-1002,022100,CD,Division No. 2,
-1002023,020000,CSD,Winterland,
-1002011,020000,CSD,Lawn,
-1002029,022100,CSD,"Division No. 2, Subd. J",
-1002039,020000,CSD,English Harbour East,
-1002055,020000,CSD,Little Bay East,
-1002025,020000,CSD,Fox Cove-Mortier,
-1002002,020000,CSD,Lewin's Cove,
-1002026,022100,CSD,"Division No. 2, Subd. I",
-1002014,020000,CSD,Point May,
-1002027,020000,CSD,Bay L'Argent,
-1002041,020000,CSD,St. Bernard's-Jacques Fontaine,
-1002001,022100,CSD,"Division No. 2, Subd. E",
-1002009,022100,CSD,"Division No. 2, Subd. G",
-1002018,020000,CSD,Fortune,
-1002013,020000,CSD,Lord's Cove,
-1002034,020000,CSD,Parkers Cove,
-1002033,020000,CSD,Rushoon,
-1002016,022100,CSD,"Division No. 2, Subd. H",
-1002021,020000,CSD,Garnish,
-1002015,020000,CSD,Point au Gaul,
-1002040,020000,CSD,Baine Harbour,
-1002044,022100,CSD,"Division No. 2, Subd. L",
-1002012,020000,CSD,Lamaline,
-1002030,020000,CSD,Grand le Pierre,
-1002048,022100,CSD,"Division No. 2, Subd. K",
-1002022,022100,CSD,"Division No. 2, Subd. D",
-1002037,020000,CSD,Red Harbour,
-1002005,022100,CSD,Burin,
-1002019,020000,CSD,Grand Bank,
-1002031,022100,CSD,"Division No. 2, Subd. C",
-1002036,020000,CSD,Terrenceville,
-1002008,020000,CSD,St. Lawrence,
-1002006,022100,CSD,"Division No. 2, Subd. F",
-1002024,020000,CSD,Marystown,
-1002017,020000,CSD,Frenchman's Cove,
-1003,022400,CD,Division No. 3,
-1003001,022400,CSD,"Division No. 3, Subd. A",
-1003020,020000,CSD,Morrisville,
-1003003,020000,CSD,St. Jacques-Coomb's Cove,
-1003042,022400,CSD,"Division No. 3, Subd. J",
-1003032,020000,CSD,Isle aux Morts,
-1003801,020000,CSD,Samiajij Miawpukek,
-1003034,022400-022410-022420,CSD,Channel-Port aux Basques,
-1003010,020000,CSD,Seal Cove (Fortune Bay),
-1003005,020000,CSD,Pool's Cove,
-1003011,020000,CSD,Hermitage-Sandyville,
-1003038,022400,CSD,"Division No. 3, Subd. I",
-1003021,022400,CSD,"Division No. 3, Subd. E",
-1003008,020000,CSD,Harbour Breton,
-1003031,022400,CSD,"Division No. 3, Subd. H",
-1003024,022400,CSD,"Division No. 3, Subd. F",
-1003045,020000,CSD,Rose Blanche-Harbour le Cou,
-1003014,022400,CSD,"Division No. 3, Subd. D",
-1003019,020000,CSD,St. Alban's,
-1003012,020000,CSD,Gaultois,
-1003028,022300,CSD,Burgeo,
-1003009,022400,CSD,"Division No. 3, Subd. C",
-1003004,020000,CSD,Belleoram,
-1003018,020000,CSD,Milltown-Head of Bay d'Espoir,
-1003002,020000,CSD,Rencontre East,
-1003006,022400,CSD,"Division No. 3, Subd. B",
-1003033,020000,CSD,Burnt Islands,
-1003026,022300,CSD,Ramea,
-1004,023400,CD,Division No. 4,
-1004019,020000,CSD,Stephenville,
-1004020,020000,CSD,Kippens,
-1004042,020000,CSD,Port au Port West-Aguathuna-Felix Cove,
-1004011,023400,CSD,"Division No. 4, Subd. C",
-1004006,023400,CSD,"Division No. 4, Subd. B",
-1004017,020000,CSD,Gallants,
-1004021,020000,CSD,Port au Port East,
-1004033,020000,CSD,Cape St. George,
-1004001,023400,CSD,"Division No. 4, Subd. A",
-1004022,023400,CSD,"Division No. 4, Subd. E",
-1004016,023400,CSD,"Division No. 4, Subd. D",
-1004018,020000,CSD,Stephenville Crossing,
-1004013,020000,CSD,St. George's,
-1004037,020000,CSD,Lourdes,
-1005,023100,CD,Division No. 5,
-1005016,023100,CSD,"Division No. 5, Subd. C",
-1005019,023100,CSD,"Division No. 5, Subd. D",
-1005025,020000,CSD,Meadows,
-1005024,020000,CSD,Lark Harbour,
-1005035,020000,CSD,York Harbour,
-1005003,023100,CSD,"Division No. 5, Subd. G",
-1005017,020000,CSD,Massey Drive,
-1005033,020000,CSD,Mount Moriah,
-1005022,020000,CSD,McIvers,
-1005004,023200,CSD,Deer Lake,
-1005011,020000,CSD,Steady Brook,
-1005006,020000,CSD,Howley,
-1005005,020000,CSD,Jackson's Arm,
-1005008,020000,CSD,Hampden,
-1005009,020000,CSD,Reidville,
-1005023,020000,CSD,Cox's Cove,
-1005028,020000,CSD,Hughes Brook,
-1005020,020000,CSD,Humber Arm South,
-1005018,023100,CSD,Corner Brook,
-1005012,020000,CSD,Pasadena,
-1005007,023100,CSD,"Division No. 5, Subd. E",
-1005014,020000,CSD,Cormack,
-1005010,023100,CSD,"Division No. 5, Subd. F",
-1005030,020000,CSD,Irishtown-Summerside,
-1005015,020000,CSD,Gillams,
-1005001,023100,CSD,"Division No. 5, Subd. A",
-1006,024200,CD,Division No. 6,
-1006014,024200,CSD,"Division No. 6, Subd. C",
-1006008,024200,CSD,"Division No. 6, Subd. E",
-1006017,024200,CSD,Grand Falls-Windsor,
-1006015,020000,CSD,Northern Arm,
-1006029,024200,CSD,"Division No. 6, Subd. A",
-1006001,024200,CSD,"Division No. 6, Subd. D",
-1006011,020000,CSD,Appleton,
-1006003,020000,CSD,Norris Arm,
-1006021,020000,CSD,Peterview,
-1006009,025500,CSD,Gander,
-1006031,024100,CSD,Buchans,
-1006012,020000,CSD,Glenwood,
-1006022,020000,CSD,Botwood,
-1006019,020000,CSD,Bishop's Falls,
-1006026,020000,CSD,Badger,
-1006028,020000,CSD,Millertown,
-1007,025200-025300-025400,CD,Division No. 7,
-1007056,025200-025300-025400,CSD,"Division No. 7, Subd. A",
-1007017,020000,CSD,Little Catalina,
-1007046,020000,CSD,Salvage,
-1007047,020000,CSD,Gambo,
-1007039,020000,CSD,Savage Cove-Sandy Cove,
-1007031,025200-025300-025400,CSD,"Division No. 7, Subd. E",
-1007032,020000,CSD,Musgravetown,
-1007048,020000,CSD,St. Brendan's,
-1007054,020000,CSD,Greenspond,
-1007038,025200-025300-025400,CSD,"Division No. 7, Subd. D",
-1007057,020000,CSD,Dover,
-1007041,020000,CSD,Happy Adventure,
-1007040,025700,CSD,Terra Nova,
-1007013,025400,CSD,Clarenville,
-1007028,025200-025300-025400,CSD,"Division No. 7, Subd. F",
-1007014,025200-025300-025400,CSD,"Division No. 7, Subd. J",
-1007023,025200-025300,CSD,Bonavista,
-1007042,020000,CSD,Eastport,
-1007006,025200-025300-025400,CSD,"Division No. 7, Subd. L",
-1007022,020000,CSD,Trinity Bay North,
-1007044,020000,CSD,Glovertown,
-1007015,020000,CSD,Trinity (Trinity Bay),
-1007001,025200-025300-025400,CSD,"Division No. 7, Subd. M",
-1007036,020000,CSD,Port Blandford,
-1007018,025200-025300-025400,CSD,"Division No. 7, Subd. I",
-1007050,020000,CSD,Centreville-Wareham-Trinity,
-1007025,020000,CSD,Keels,
-1007049,020000,CSD,Hare Bay,
-1007027,020000,CSD,King's Cove,
-1007045,025200-025300-025400,CSD,"Division No. 7, Subd. N",
-1007016,020000,CSD,Port Rexton,
-1007009,025200-025300-025400,CSD,"Division No. 7, Subd. K",
-1007020,020000,CSD,Elliston,
-1007037,020000,CSD,Traytown,
-1007060,020000,CSD,New-Wes-Valley,
-1007026,020000,CSD,Duntara,
-1007067,020000,CSD,Indian Bay,
-1007043,020000,CSD,Sandringham,
-1007051,025200-025300-025400,CSD,"Division No. 7, Subd. B",
-1007024,025200-025300-025400,CSD,"Division No. 7, Subd. G",
-1008,020000,CD,Division No. 8,
-1008004,020000,CSD,Lumsden,
-1008052,020000,CSD,"Division No. 8, Subd. D",
-1008075,020000,CSD,Fleur de Lys,
-1008045,020000,CSD,Little Burnt Bay,
-1008093,020000,CSD,Westport,
-1008069,020000,CSD,King's Point,
-1008070,020000,CSD,Nippers Harbour,
-1008032,020000,CSD,Cottlesville,
-1008022,020000,CSD,Joe Batt's Arm-Barr'd Islands-Shoal Bay,
-1008025,020000,CSD,Seldom-Little Seldom,
-1008036,020000,CSD,"Division No. 8, Subd. G",
-1008073,020000,CSD,Tilt Cove,
-1008096,020000,CSD,Woodstock,
-1008072,020000,CSD,Middle Arm,
-1008008,020000,CSD,"Division No. 8, Subd. L",
-1008076,020000,CSD,LaScie,
-1008062,020000,CSD,Port Anson,
-1008001,020000,CSD,"Division No. 8, Subd. M",
-1008031,020000,CSD,"Division No. 8, Subd. H",
-1008067,020000,CSD,"Division No. 8, Subd. O",
-1008046,020000,CSD,"Division No. 8, Subd. E",
-1008079,020000,CSD,Baie Verte,
-1008038,020000,CSD,Birchy Bay,
-1008039,020000,CSD,Comfort Cove-Newstead,
-1008098,020000,CSD,Miles Cove,
-1008049,020000,CSD,Point Leamington,
-1008059,020000,CSD,South Brook,
-1008021,020000,CSD,Fogo,
-1008040,020000,CSD,Baytona,
-1008048,020000,CSD,Leading Tickles,
-1008060,020000,CSD,Robert's Arm,
-1008074,020000,CSD,"Division No. 8, Subd. A",
-1008006,020000,CSD,Musgrave Harbour,
-1008026,020000,CSD,"Division No. 8, Subd. I",
-1008077,020000,CSD,Brent's Cove,
-1008065,020000,CSD,"Division No. 8, Subd. P",
-1008037,020000,CSD,Campbellton,
-1008043,020000,CSD,Embree,
-1008035,020000,CSD,Twillingate,
-1008078,020000,CSD,Pacquet,
-1008020,020000,CSD,Fogo Island Region (Part),
-1008011,020000,CSD,Carmanville,
-1008092,020000,CSD,Coachman's Cove,
-1008058,020000,CSD,"Division No. 8, Subd. C",
-1008056,020000,CSD,Lushes Bight-Beaumont-Beaumont North,
-1008044,020000,CSD,Lewisporte,
-1008053,020000,CSD,Pilley's Island,
-1008054,020000,CSD,Triton,
-1008063,020000,CSD,Little Bay,
-1008024,020000,CSD,Change Islands,
-1008091,025600,CSD,Seal Cove (White Bay),
-1008042,020000,CSD,"Division No. 8, Subd. F",
-1008071,020000,CSD,Burlington,
-1008029,020000,CSD,Crow Head,
-1008047,020000,CSD,Point of Bay,
-1008033,020000,CSD,Summerford,
-1008095,020000,CSD,Ming's Bight,
-1008064,020000,CSD,Little Bay Islands,
-1008055,020000,CSD,Brighton,
-1008066,020000,CSD,Beachside,
-1008061,020000,CSD,Springdale,
-1008023,020000,CSD,Tilting,
-1009,026100,CD,Division No. 9,
-1009032,020000,CSD,St. Lunaire-Griquet,
-1009029,020000,CSD,St. Anthony,
-1009019,026300,CSD,Port Saunders,
-1009018,026200,CSD,Hawke's Bay,
-1009048,020000,CSD,River of Ponds,
-1009037,020000,CSD,Sally's Cove,
-1009009,026100,CSD,"Division No. 9, Subd. A",
-1009022,020000,CSD,Port au Choix,
-1009021,026100,CSD,"Division No. 9, Subd. C",
-1009030,020000,CSD,Glenburnie-Birchy Head-Shoal Brook,
-1009020,020000,CSD,St. Pauls,
-1009034,020000,CSD,Cook's Harbour,
-1009031,026100,CSD,"Division No. 9, Subd. D",
-1009013,020000,CSD,Rocky Harbour,
-1009008,020000,CSD,Conche,
-1009007,020000,CSD,Roddickton-Bide Arm,
-1009042,020000,CSD,Bellburns,
-1009016,020000,CSD,Cow Head,
-1009024,020000,CSD,Flower's Cove,
-1009026,020000,CSD,Bird Cove,
-1009041,026100,CSD,"Division No. 9, Subd. H",
-1009017,020000,CSD,Parson's Pond,
-1009012,020000,CSD,Norris Point,
-1009001,026100,CSD,"Division No. 9, Subd. F",
-1009035,020000,CSD,Raleigh,
-1009039,020000,CSD,Goose Cove East,
-1009028,020000,CSD,Main Brook,
-1009004,020000,CSD,Englee,
-1009047,026100,CSD,"Division No. 9, Subd. G",
-1009015,020000,CSD,Daniel's Harbour,
-1009011,020000,CSD,"Woody Point, Bonne Bay",
-1009023,020000,CSD,Anchor Point,
-1009010,020000,CSD,Trout River,
-1010,020000,CD,Division No. 10,
-1010020,020000,CSD,"Division No. 10, Subd. C",
-1010012,027300,CSD,"Cartwright, Labrador",
-1010034,029200,CSD,Wabush,
-1010008,020000,CSD,"Division No. 10, Subd. B",
-1010013,020000,CSD,Charlottetown (Labrador),
-1010001,020000,CSD,"Division No. 10, Subd. A",
-1010032,029200,CSD,Labrador City,
-1010042,020000,CSD,"Division No. 10, Subd. E",
-1010802,020000,CSD,Sheshatshiu 3,
-1010005,020000,CSD,Forteau,
-1010006,020000,CSD,West St. Modeste,
-1010025,020000,CSD,Happy Valley-Goose Bay,
-1010007,020000,CSD,Pinware,
-1010011,020000,CSD,Mary's Harbour,
-1010029,020000,CSD,"Division No. 10, Subd. D",
-1010002,020000,CSD,L'Anse-au-Loup,
-1010009,020000,CSD,Port Hope Simpson,
-1010004,027100,CSD,L'Anse-au-Clair,
-1010801,020000,CSD,Natuashish 2,
-1010003,027100,CSD,Red Bay,
-1010010,020000,CSD,St. Lewis,
-1010022,020000,CSD,North West River,
-1011,020000,CD,Division No. 11,
-1011030,027600,CSD,Hopedale,
-1011005,020000,CSD,"Division No. 11, Subd. C",
-1011040,020000,CSD,"Division No. 11, Subd. E",
-1011015,027500,CSD,Postville,
-1011035,027700,CSD,Nain,
-1011020,027500,CSD,Makkovik,
-1011010,027400,CSD,Rigolet,
-60,090000,PT,Yukon,
-6001,090000,CD,Yukon,
-6001003,092300,CSD,Watson Lake,
-6001004,092400,CSD,Faro,
-6001006,092100,CSD,Teslin,
-6001007,092100,CSD,Teslin Post 13,
-6001008,090000,CSD,Carcross 4,
-6001009,091700,CSD,Whitehorse,
-6001010,090000,CSD,Lake Laberge 1,
-6001012,091400,CSD,Carmacks,
-6001016,090000,CSD,Klukshu,
-6001018,091600,CSD,Haines Junction,
-6001019,090000,CSD,Kloo Lake,
-6001022,091200,CSD,Mayo,
-6001029,091100,CSD,Dawson,
-6001031,090000,CSD,Moosehide Creek 2,
-6001032,090000,CSD,Upper Liard,
-6001033,090000,CSD,Two Mile Village,
-6001034,090000,CSD,Two and One-Half Mile Village,
-6001036,090000,CSD,Tagish,
-6001037,092400,CSD,Ross River,
-6001038,090000,CSD,Champagne Landing 10,
-6001039,090000,CSD,Burwash Landing,
-6001041,091400,CSD,Pelly Crossing,
-6001042,091300,CSD,Beaver Creek,
-6001043,093200,CSD,Old Crow,
-6001044,090000,CSD,Mt. Lorne,
-6001045,090000,CSD,"Yukon, Unorganized",
-6001046,090000,CSD,Swift River,
-6001047,090000,CSD,Johnsons Crossing,
-6001048,090000,CSD,Carcross,
-6001049,090000,CSD,Destruction Bay,
-6001050,090000,CSD,Stewart Crossing,
-6001052,090000,CSD,Keno Hill,
-6001055,090000,CSD,Ibex Valley,
-6001057,092100,CSD,Teslin,
-6001058,090000,CSD,Marsh Lake,
-6001059,090000,CSD,Macpherson-Grizzly Valley,
-6001060,091700,CSD,"Whitehorse, Unorganized",
-61,090000,PT,Northwest Territories,
-6101,096540,CD,Region 1,
-6101007,094500,CSD,Norman Wells,
-6101003,094710,CSD,Déline,
-6101012,094720,CSD,Colville Lake,
-6101009,094600,CSD,Fort Good Hope,
-6101005,094500,CSD,Tulita,
-6102,094500,CD,Region 2,
-6102034,095320,CSD,Whatì,
-6102052,095320,CSD,Wekweètì,
-6102049,090000,CSD,Gamètì,
-6102031,095320,CSD,Behchokò,
-6103,095320,CD,Region 3,
-6103016,095400,CSD,Hay River,
-6103018,095600,CSD,Fort Resolution,
-6103003,095400,CSD,Enterprise,
-6103001,095500,CSD,Fort Smith,
-6103020,095700,CSD,Lutselk'e,
-6104,094300,CD,Region 4,
-6104023,095310,CSD,Yellowknife,
-6104021,090000,CSD,Detah,
-6106,095500,CD,Region 6 (5?),
-6106097,095500,CSD,"Fort Smith, Unorganized",
-6106013,094300,CSD,Jean Marie River,
-6106014,095200,CSD,Fort Providence,
-6106038,094300,CSD,Fort Simpson,
-6106017,095400,CSD,Hay River Dene 1,
-6106044,094400,CSD,Wrigley,
-6106010,090000,CSD,Nahanni Butte,
-6106005,090000,CSD,Kakisa,
-6106026,090000,CSD,Reliance,
-6106006,094200,CSD,Trout Lake,
-6106004,090000,CSD,Salt Plains 195,
-6106009,094200,CSD,Fort Liard,
-6107,095310,CD,Region 7 (6?),
-6107025,096530,CSD,Aklavik,
-6107010,096550,CSD,Tsiigehtchic,
-6107017,096540,CSD,Inuvik,
-6107015,096550,CSD,Fort McPherson,
-6107095,096310,CSD,Ulukhaktok,
-6107014,096420,CSD,Paulatuk,
-6107063,096540,CSD,"Inuvik, Unorganized",
-6107041,096210,CSD,Sachs Harbour,
-6107036,096520,CSD,Tuktoyaktuk,
-62,090000,PT,Nunavut,
-6204,090000,CD,Baffin,
-6204019,090000,CSD,Nanisivik,
-6204009,098220,CSD,Pangnirtung,
-6204025,099210,CSD,Grise Fiord,
-6204018,098110,CSD,Arctic Bay,
-6204003,098230,CSD,Iqaluit,
-6204005,098240,CSD,Kimmirut,
-6204030,090000,CSD,"Baffin, Unorganized",
-6204022,099110,CSD,Resolute,
-6204010,098210,CSD,Qikiqtarjuaq,
-6204020,098120,CSD,Pond Inlet,
-6204015,098130,CSD,Clyde River,
-6204012,097720,CSD,Igloolik,
-6204011,097710,CSD,Hall Beach,
-6204001,097910,CSD,Sanikiluaq,
-6204007,098250,CSD,Cape Dorset,
-6205,090000,CD,Keewatin,
-6205027,097730,CSD,Repulse Bay,
-6205017,097620,CSD,Rankin Inlet,
-6205016,090000,CSD,Whale Cove,
-6205014,097810,CSD,Coral Harbour,
-6205033,090000,CSD,"Keewatin, Unorganized",
-6205015,097610,CSD,Arviat,
-6205019,097630,CSD,Chesterfield Inlet,
-6205023,097510,CSD,Baker Lake,
-6208,090000,CD,Kitikmeot,
-6208098,090000,CSD,"Kitikmeot, Unorganized",
-6208068,090000,CSD,Umingmaktok,
-6208047,097420,CSD,Kugaaruk,
-6208073,097110,CSD,Cambridge Bay,
-6208059,097210,CSD,Kugluktuk,
-6208081,097410,CSD,Gjoa Haven,
-6208087,097310,CSD,Taloyoak,
+CAPCP Geocodes,EC CLC,UU Scale,UU Name,don't touch this tab
+0,000000,N,All of Canada,(ignore it)
+00,000000,N,All of Canada,
+001,001100,WB,Pacific Waters,
+00111,001110,WBD,Juan de Fuca Strait,
+00112,001120,WBD,Haro Strait,
+00113,001130,WBD,Strait of Georgia,
+00114,001140,WBD,Howe Sound,
+00115,001150,WBD,Johnstone Strait,
+00116,001160,WBD,Queen Charlotte Strait,
+00117,001170,WBD,West Coast Vancouver Island North,
+00118,001180,WBD,West Coast Vancouver Island South,
+00121,001210,WBD,Queen Charlotte Sound,
+00122,001220,WBD,Central Coast from McInnes Island to Pine Island,
+00123,001230,WBD,Douglas Channel,
+00124,001240,WBD,Hecate Strait,
+00125,001250,WBD,Dixon Entrance East,
+00126,001260,WBD,Dixon Entrance West,
+00127,001270,WBD,West Coast Haida Gwaii,
+00128,001280,WBD,North Coast Channels,
+00131,001310,WBD,Bowie,
+00132,001320,WBD,Explorer,
+002,002200,WB,Great Lakes,
+00221,002210,WBD,Lake Erie,
+00231,002310,WBD,Lake St. Clair,
+00241,002410,WBD,Lake Huron,
+00251,002510,WBD,Georgian Bay,
+00261,002610,WBD,North Channel,
+00271,002710,WBD,Whitefish Bay,
+00281,002810,WBD,Lake Superior,
+00291,002910,WBD,Lake Ontario,
+003,003000,WB,Atlantic Waters,
+00311,003110,WBD,Tadoussac to Pointe-des-Monts,
+00312,003120,WBD,Pointe-des-Monts to Anticosti,
+00314,003140,WBD,Anticosti,
+00315,003150,WBD,Chaleur - Miscou,
+00316,003160,WBD,Gulf - Magdalen,
+00317,003170,WBD,Northumberland Strait,
+00321,003210,WBD,Fundy,
+00322,003220,WBD,Grand Manan,
+00323,003230,WBD,Lurcher,
+00324,003240,WBD,Browns Bank,
+00325,003250,WBD,Georges Bank,
+00326,003260,WBD,Southwestern Shore,
+00327,003270,WBD,LaHave Bank,
+00328,003280,WBD,West Scotian Slope,
+00329,003290,WBD,Halifax Harbour and Approaches,
+00331,003310,WBD,Cabot Strait,
+00332,003320,WBD,Fourchu,
+00333,003330,WBD,Eastern Shore,
+00334,003340,WBD,Sable,
+00335,003350,WBD,East Scotian Slope,
+00336,003360,WBD,Southwest Coast,
+00337,003370,WBD,Banquereau,
+00338,003380,WBD,Laurentian Fan,
+00341,003410,WBD,Strait of Belle Isle,
+00342,003420,WBD,Northeast Gulf,
+00343,003430,WBD,Gulf - Port au Port,
+00344,003440,WBD,Northeast Coast,
+00345,003450,WBD,East Coast,
+00346,003460,WBD,South Coast,
+00347,003470,WBD,Southwestern Grand Banks,
+00351,003510,WBD,South Labrador Coast,
+00352,003520,WBD,Belle Isle Bank,
+00353,003530,WBD,Funk Island Bank,
+00354,003540,WBD,Northern Grand Banks,
+00355,003550,WBD,Southeastern Grand Banks,
+00356,003560,WBD,Southeast Labrador Sea,
+00357,003570,WBD,Flemish,
+00358,003580,WBD,Tail of the Grand Banks,
+00361,003610,WBD,North Labrador Coast,
+00362,003620,WBD,Mid Labrador Coast,
+00363,003630,WBD,Northwest Labrador Sea,
+00364,003640,WBD,South Labrador Sea,
+00365,003650,WBD,East Labrador Sea,
+00364,003640,WBD,South Labrador Sea,
+004,004000,WB,Inland Waters (Eastern Canada),
+00411,004110,WBD,Lake Melville,
+00421,004210,WBD,Bras d'Or Lakes,
+00431,004310,WBD,Saguenay to Tadoussac,
+00432,004320,WBD,Lake Saint-Jean,
+00441,004410,WBD,L'Isle-aux-Coudres to Tadoussac,
+00442,004420,WBD,St. Lawrence River - Donnacona to L'Isle-aux-Coudres,
+00443,004430,WBD,St. Lawrence River - Trois-Rivières to Donnacona,
+00444,004440,WBD,St. Lawrence River - Montréal to Trois-Rivières,
+00445,004450,WBD,St. Lawrence River - Cornwall to Montréal,
+00446,004460,WBD,St. Lawrence River - Prescott to Cornwall,
+00447,004470,WBD,St. Lawrence River - Kingston to Prescott,
+00471,004710,WBD,Lake Simcoe,
+00472,004720,WBD,Lake Nipissing,
+00481,004810,WBD,Lake Nipigon,
+00483,004830,WBD,Albany River,
+00484,004840,WBD,Big Trout Lake,
+00485,004850,WBD,Severn River,
+00473,004730,WBD,Lake Abitibi,
+00484,004840,WBD,Big Trout Lake,
+00412,004120,WBD,Meelpaeg Lake,
+00433,004330,WBD,La Grande River,
+00436,004360,WBD,Robert-Bourassa Reservoir,
+00435,004350,WBD,La Grande 3 Reservoir,
+00486,004860,WBD,Seul Lake,
+00413,004130,WBD,Smallwood Reservoir,
+00434,004340,WBD,Caniapiscau Reservoir,
+00437,004370,WBD,Mistassini Lake,
+005,005000,WB,Hudson Bay and Baffin Island Waters,
+00511,005110,WBD,Prince Charles,
+00512,005120,WBD,East Foxe,
+00513,005130,WBD,West Foxe,
+00514,005140,WBD,Igloolik,
+00521,005210,WBD,Nottingham,
+00522,005220,WBD,Resolution,
+00523,005230,WBD,Ungava,
+00531,005310,WBD,Puvirnituq,
+00532,005320,WBD,Belcher,
+00533,005330,WBD,James Bay,
+00541,005410,WBD,South-central Hudson,
+00542,005420,WBD,South Hudson,
+00543,005430,WBD,York,
+00551,005510,WBD,Arviat,
+00552,005520,WBD,Churchill,
+00553,005530,WBD,Central,
+00554,005540,WBD,Coats,
+00561,005610,WBD,Roes Welcome,
+00562,005620,WBD,Rankin,
+00563,005630,WBD,Chesterfield Inlet,
+006,006000,WB,Northeastern Arctic Waters,
+00611,006110,WBD,Robeson,
+00612,006120,WBD,Kane,
+00613,006130,WBD,Clarence,
+00614,006140,WBD,East Baffin,
+00615,006150,WBD,East Clyde,
+00616,006160,WBD,West Clyde,
+00617,006170,WBD,West Baffin,
+00618,006180,WBD,Pond,
+00621,006210,WBD,East Davis,
+00622,006220,WBD,East Brevoort,
+00623,006230,WBD,Central Brevoort,
+00624,006240,WBD,West Brevoort,
+00625,006250,WBD,Frobisher Bay,
+00626,006260,WBD,Cumberland,
+00627,006270,WBD,West Davis,
+00631,006310,WBD,Lancaster,
+00632,006320,WBD,Navy Board,
+00633,006330,WBD,Admiralty,
+00634,006340,WBD,Committee,
+00635,006350,WBD,Boothia,
+00636,006360,WBD,Regent,
+00641,006410,WBD,Barrow,
+00642,006420,WBD,Peel,
+00643,006430,WBD,St. Roch,
+00644,006440,WBD,Maud,
+00645,006450,WBD,Larsen,
+00646,006460,WBD,McClintock,
+00651,006510,WBD,Dease,
+00652,006520,WBD,Bathurst,
+00653,006530,WBD,Coronation,
+00654,006540,WBD,Dolphin,
+00655,006550,WBD,Amundsen,
+00656,006560,WBD,Holman,
+00657,006570,WBD,Prince of Wales,
+00661,006610,WBD,Rae,
+00662,006620,WBD,Melville,
+00663,006630,WBD,McClure,
+00664,006640,WBD,Liddon,
+00665,006650,WBD,Fitzwilliam,
+00666,006660,WBD,Griper,
+00667,006670,WBD,Ballantyne,
+00668,006680,WBD,Wilkins,
+00671,006710,WBD,Peary,
+00672,006720,WBD,Hassel,
+00673,006730,WBD,Maclean,
+00674,006740,WBD,Queens,
+00675,006750,WBD,Byam,
+00676,006760,WBD,Hazen,
+00677,006770,WBD,Gustaf,
+00681,006810,WBD,Greely,
+00682,006820,WBD,Eureka,
+00683,006830,WBD,Jones,
+00684,006840,WBD,Norwegian,
+00685,006850,WBD,Massey,
+00686,006860,WBD,South Sverdrup,
+00687,006870,WBD,North Sverdrup,
+00688,006880,WBD,Nansen,
+007,007000,WB,Western Arctic Waters,
+00711,007110,WBD,CZ1,
+00712,007120,WBD,CY3,
+00713,007130,WBD,CX5,
+00714,007140,WBD,CX4,
+00715,007150,WBD,CX3,
+00716,007160,WBD,CX2,
+00717,007170,WBD,CX1,
+00718,007180,WBD,CY1,
+00719,007190,WBD,CY2,
+00721,007210,WBD,CW6,
+00722,007220,WBD,CV7,
+00723,007230,WBD,CV6,
+00731,007310,WBD,CW5,
+00732,007320,WBD,Alert,
+00733,007330,WBD,Bartlett,
+00734,007340,WBD,Ward Hunt,
+00735,007350,WBD,Ellesmere,
+00736,007360,WBD,South Axel Heiberg,
+00737,007370,WBD,Axel Heiberg,
+00738,007380,WBD,CW4,
+00741,007410,WBD,Prince Patrick,
+00742,007420,WBD,Brock,
+00743,007430,WBD,South Prince Patrick,
+00744,007440,WBD,CT4,
+00745,007450,WBD,CU4,
+00746,007460,WBD,CU3,
+00751,007510,WBD,CW3,
+00752,007520,WBD,CV5,
+00753,007530,WBD,Ellef Ringnes,
+00754,007540,WBD,South Ellef Ringnes,
+00755,007550,WBD,Borden,
+00756,007560,WBD,North Prince Patrick,
+00757,007570,WBD,CV4,
+00758,007580,WBD,CV3,
+00759,007590,WBD,CW2,
+00761,007610,WBD,CW1,
+00762,007620,WBD,CV2,
+00763,007630,WBD,CU2,
+00764,007640,WBD,CT3,
+00765,007650,WBD,CT2,
+00766,007660,WBD,CT1,
+00767,007670,WBD,CU1,
+00768,007680,WBD,CV1,
+00771,007710,WBD,Prince Alfred,
+00772,007720,WBD,Banks,
+00773,007730,WBD,Baillie,
+00781,007810,WBD,West Prince Alfred,
+00782,007820,WBD,North Tuktoyaktuk,
+00783,007830,WBD,Tuktoyaktuk,
+00784,007840,WBD,Yukon Coast,
+00785,007850,WBD,Mackenzie,
+00786,007860,WBD,North Mackenzie,
+00787,007870,WBD,Northwest Beaufort,
+008,008000,WB,Inland Waters (Western Canada),
+00811,008110,WBD,Mackenzie River,
+00821,008210,WBD,Great Bear Lake,
+00822,008220,WBD,Eskimo Lakes,
+00831,008310,WBD,Great Slave Lake,
+00832,008320,WBD,Baker,
+00841,008410,WBD,Lake Athabasca,
+00851,008510,WBD,Reindeer Lake,
+00861,008610,WBD,Cedar Lake,
+00862,008620,WBD,Lake Winnipegosis,
+00863,008630,WBD,Lake Winnipeg,
+00864,008640,WBD,Lake Manitoba,
+00871,008710,WBD,Fraser River Waterways,
+00812,008120,WBD,Anderson River,
+00813,008130,WBD,Horton River,
+00814,008140,WBD,Liard River,
+00815,008150,WBD,Pelly River,
+00816,008160,WBD,Yukon River,
+00842,008420,WBD,Athabasca River,
+00843,008430,WBD,North Saskatchewan River,
+00844,008440,WBD,Peace River,
+00845,008450,WBD,South Saskatchewan River,
+00846,008460,WBD,Old Wives Lake,
+00847,008470,WBD,Big Quill Lake,
+00848,008480,WBD,Lesser Slave Lake,
+00849,008490,WBD,Utikuma Lake,
+00852,008520,WBD,Churchill River,
+00853,008530,WBD,Nelson River,
+00854,008540,WBD,Red River,
+00855,008550,WBD,Saskatchewan River,
+00856,008560,WBD,Lac la Ronge,
+00865,008650,WBD,Dauphin Lake,
+00866,008660,WBD,Swan Lake,
+00867,008670,WBD,Lake St. Martin,
+00868,008680,WBD,Red Deer Lake,
+00872,008720,WBD,Columbia Riverr,
+00873,008730,WBD,Fraser River,
+00874,008740,WBD,Kootenay River,
+00833,008330,WBD,Slave River,
+00881,008810,WBD,Gods Lake,
+00886,008860,WBD,Island Lake,
+00834,008340,WBD,Dubawnt Lake,
+00857,008570,WBD,Wollaston Lake,
+00883,008830,WBD,North Moose Lake,
+00885,008850,WBD,South Moose Lake,
+00869,008690,WBD,Playgreen Lake,
+00882,008820,WBD,Little Playgreen Lake,
+00884,008840,WBD,Pipestone Lake,
+00887,008870,WBD,Cross Lake,
+00888,008880,WBD,Kiskittogisu Lake,
+00889,008890,WBD,Kiskitto Lake,
+59,080000,PT,British Columbia,
+5901,084300-084400-084500-085600,CD,East Kootenay,
+5901022,084510,CSD,Cranbrook,
+5901805,080000,CSD,Cassimayooks (Mayook) 5,
+5901012,080000,CSD,Fernie,
+5901040,080000,CSD,Radium Hot Springs,
+5901006,080000,CSD,Sparwood,
+5901801,080000,CSD,Tobacco Plains 2,
+5901804,085200-085400-085500,CSD,Columbia Lake 3,
+5901039,084520,CSD,Invermere,
+5901003,080000,CSD,Elkford,
+5901028,080000,CSD,Kimberley,
+5901043,080000,CSD,Canal Flats,
+5901037,084300-084400-084500-085600,CSD,East Kootenay E,
+5901035,084300-084400-084500-085600,CSD,East Kootenay C,
+5901019,084300-084400-084500-085600,CSD,East Kootenay B,
+5901048,084300-084400-084500-085600,CSD,East Kootenay G,
+5901046,084300-084400-084500-085600,CSD,East Kootenay F,
+5901803,084300-084400-084500-085600,CSD,Kootenay 1,
+5901802,080000,CSD,Isidore's Ranch 4,
+5901806,083600,CSD,Shuswap,
+5901017,084300-084400-084500-085600,CSD,East Kootenay A,
+5903,084300-084400-084500-085600,CD,Central Kootenay,
+5903019,080000,CSD,Slocan,
+5903010,084300-084400-084500-085600,CSD,Central Kootenay A,
+5903011,080000,CSD,Salmo,
+5903017,084300-084400-084500-085600,CSD,Central Kootenay C,
+5903052,084300-084400-084500-085600,CSD,Central Kootenay H,
+5903032,080000,CSD,New Denver,
+5903015,080000,CSD,Nelson,
+5903013,084300-084400-084500-085600,CSD,Central Kootenay B,
+5903058,084300-084400-084500-085600,CSD,Central Kootenay J,
+5903004,080000,CSD,Creston,
+5903047,084300-084400-084500-085600,CSD,Central Kootenay G,
+5903023,080000,CSD,Kaslo,
+5903041,084300-084400-084500-085600,CSD,Central Kootenay E,
+5903056,084300-084400-084500-085600,CSD,Central Kootenay I,
+5903039,084300-084400-084500-085600,CSD,Central Kootenay D,
+5903050,080000,CSD,Nakusp,
+5903027,080000,CSD,Silverton,
+5903045,080000,CSD,Castlegar,
+5903807,080000,CSD,Creston 1,
+5903060,084300-084400-084500-085600,CSD,Central Kootenay K,
+5903043,084300-084400-084500-085600,CSD,Central Kootenay F,
+5905,084200-084300-084400-084500-085600,CD,Kootenay Boundary,
+5905037,080000,CSD,Midway,
+5905042,080000,CSD,Greenwood,
+5905018,080000,CSD,Warfield,
+5905052,084200-084300-084400-084500-085600,CSD,Kootenay Boundary D,
+5905050,084200-084300-084400-084500-085600,CSD,Kootenay Boundary C,
+5905023,080000,CSD,Rossland,
+5905030,084200-084300-084400-084500-085600,CSD,Kootenay Boundary B,
+5905014,080000,CSD,Trail,
+5905026,084200-084300-084400-084500-085600,CSD,Kootenay Boundary A,
+5905054,084200-084300-084400-084500-085600,CSD,Kootenay Boundary E,
+5905005,080000,CSD,Fruitvale,
+5905009,080000,CSD,Montrose,
+5905032,080000,CSD,Grand Forks,
+5907,083400-083500,CD,Okanagan-Similkameen,
+5907807,080000,CSD,Chuchuwayha 2,
+5907041,083530,CSD,Penticton,
+5907049,083400-083500,CSD,Okanagan-Similkameen E,
+5907809,080000,CSD,Ashnola 10,
+5907028,083400-083500,CSD,Okanagan-Similkameen C,
+5907802,080000,CSD,Osoyoos 1,
+5907053,083400-083500,CSD,Okanagan-Similkameen G,
+5907024,080000,CSD,Princeton,
+5907805,080000,CSD,Chopaka 7 & 8,
+5907035,080000,CSD,Summerland,
+5907801,083400,CSD,Lower Similkameen 2,
+5907803,083530,CSD,Penticton 1,
+5907047,083400-083500,CSD,Okanagan-Similkameen D,
+5907806,080000,CSD,Blind Creek 6,
+5907051,083400-083500,CSD,Okanagan-Similkameen F,
+5907009,080000,CSD,Keremeos,
+5907808,080000,CSD,Alexis 9,
+5907026,083400-083500,CSD,Okanagan-Similkameen B,
+5907014,080000,CSD,Oliver,
+5907055,083400-083500,CSD,Okanagan-Similkameen H,
+5907022,083400-083500,CSD,Okanagan-Similkameen A,
+5907005,080000,CSD,Osoyoos,
+5909,082710-082720,CD,Fraser Valley,
+5909804,080000,CSD,Chawathil 4,
+5909814,080000,CSD,Skawahlook 1,
+5909834,080000,CSD,Tseatah 2,
+5909823,080000,CSD,Skowkale 11,
+5909848,080000,CSD,Tipella 7,
+5909852,080000,CSD,Baptiste Smith 1A,
+5909855,080000,CSD,Sachteen 2,
+5909817,080000,CSD,Tuckkwiowhum 1,
+5909833,080000,CSD,Scowlitz 1,
+5909832,080000,CSD,Seabird Island,
+5909837,080000,CSD,Cheam 1,
+5909881,080000,CSD,Skweahm 10,
+5909843,080000,CSD,Peters 1,
+5909826,080000,CSD,Skway 5,
+5909877,080000,CSD,Upper Sumas 6,
+5909822,080000,CSD,Skowkale 10,
+5909831,080000,CSD,Yakweakwioose 12,
+5909860,080000,CSD,Sachteen 2A,
+5909805,080000,CSD,Inkahtsaph 6,
+5909836,080000,CSD,Boston Bar 1A,
+5909809,080000,CSD,Saddle Rock 9,
+5909062,082710-082720,CSD,Fraser Valley G,
+5909879,080000,CSD,Holachten 8,
+5909064,082710-082720,CSD,Fraser Valley H,
+5909821,080000,CSD,Kwawkwawapilt 6,
+5909875,080000,CSD,Baptiste Smith 1B,
+5909815,080000,CSD,Speyum 3,
+5909806,080000,CSD,Kopchitchin 2,
+5909812,080000,CSD,Schkam 2,
+5909828,080000,CSD,Squiaala 7,
+5909827,080000,CSD,Soowahlie 14,
+5909048,082710-082720,CSD,Fraser Valley C,
+5909845,080000,CSD,Skookumchuck 4,
+5909847,080000,CSD,Bucktum 4,
+5909056,080000,CSD,Mission,
+5909818,080000,CSD,Yale Town 1,
+5909876,080000,CSD,Albert Flat 5,
+5909808,080000,CSD,Puckatholetchin 11,
+5909009,080000,CSD,Hope,
+5909810,080000,CSD,Lukseetsissum 9,
+5909880,080000,CSD,Lakahahmen 11,
+5909016,082710-082720,CSD,Fraser Valley B,
+5909825,080000,CSD,Skwali 3,
+5909824,080000,CSD,Skwah 4,
+5909849,080000,CSD,Skwahla 2,
+5909807,080000,CSD,Ohamil 1,
+5909841,080000,CSD,Stullawheets 8,
+5909842,080000,CSD,Douglas 8,
+5909819,080000,CSD,Kahmoose 4,
+5909839,080000,CSD,Chehalis 5,
+5909882,080000,CSD,Squawkum Creek 3,
+5909027,080000,CSD,Harrison Hot Springs,
+5909844,080000,CSD,Popkum 1,
+5909830,080000,CSD,Tzeachten 13,
+5909036,082710-082720,CSD,Fraser Valley E,
+5909838,080000,CSD,Schelowat 1,
+5909034,082710-082720,CSD,Fraser Valley D,
+5909835,080000,CSD,Aitchelitch 9,
+5909014,082710-082720,CSD,Fraser Valley A,
+5909816,080000,CSD,Spuzzum 1,
+5909020,082720,CSD,Chilliwack,
+5909032,080000,CSD,Kent,
+5909878,080000,CSD,Matsqui Main 2,
+5909829,080000,CSD,Squiaala 8,
+5909060,082710-082720,CSD,Fraser Valley F,
+5909052,082710,CSD,Abbotsford,
+5915,081200-081300-081400-081500-082600,CD,Greater Vancouver,
+5915051,081200,CSD,North Vancouver,
+5915816,080000,CSD,McMillan Island 6,
+5915811,080000,CSD,Seymour Creek 2,
+5915034,080000,CSD,Coquitlam,
+5915809,080000,CSD,Barnston Island 3,
+5915840,080000,CSD,Whonnock 1,
+5915825,080000,CSD,Matsqui 4,
+5915029,080000,CSD,New Westminster,
+5915039,080000,CSD,Port Coquitlam,
+5915055,081400,CSD,West Vancouver,
+5915808,080000,CSD,Capilano 5,
+5915807,080000,CSD,Mission 1,
+5915803,080000,CSD,Musqueam 2,
+5915810,080000,CSD,Musqueam 4,
+5915802,080000,CSD,Tsawwassen,
+5915002,080000,CSD,Langley,
+5915801,080000,CSD,Semiahmoo,
+5915025,080000,CSD,Burnaby,
+5915004,080000,CSD,Surrey,
+5915015,080000,CSD,Richmond,
+5915043,080000,CSD,Port Moody,
+5915075,080000,CSD,Maple Ridge,
+5915804,080000,CSD,Coquitlam 2,
+5915835,080000,CSD,Langley 5,
+5915036,080000,CSD,Belcarra,
+5915830,080000,CSD,Katzie 1,
+5915020,080000,CSD,Greater Vancouver A,
+5915070,080000,CSD,Pitt Meadows,
+5915805,080000,CSD,Coquitlam 1,
+5915001,080000,CSD,Langley,
+5915007,080000,CSD,White Rock,
+5915011,080000,CSD,Delta,
+5915046,081200,CSD,North Vancouver,
+5915022,082600,CSD,Vancouver,
+5915038,080000,CSD,Anmore,
+5915806,080000,CSD,Burrard Inlet 3,
+5915813,080000,CSD,Katzie 2,
+5915065,080000,CSD,Lions Bay,
+5915062,080000,CSD,Bowen Island,
+5917,080000,CD,Capital,
+5917817,080000,CSD,T'Sou-ke 1 (Sooke 1),
+5917815,080000,CSD,Gordon River 2,
+5917010,080000,CSD,Sidney,
+5917015,080000,CSD,Central Saanich,
+5917040,080000,CSD,Esquimalt,
+5917005,080000,CSD,North Saanich,
+5917042,080000,CSD,Metchosin,
+5917809,080000,CSD,Becher Bay 1,
+5917041,080000,CSD,Colwood,
+5917056,080000,CSD,Capital H (Part 2),
+5917803,080000,CSD,East Saanich 2,
+5917044,080000,CSD,Langford,
+5917818,080000,CSD,T'Sou-ke 2 (Sooke 2),
+5917805,080000,CSD,Galiano Island 9,
+5917029,080000,CSD,Capital G,
+5917021,080000,CSD,Saanich,
+5917811,080000,CSD,Esquimalt,
+5917027,080000,CSD,Capital F,
+5917804,080000,CSD,South Saanich 1,
+5917052,080000,CSD,Sooke,
+5917049,080000,CSD,Highlands,
+5917812,080000,CSD,New Songhees 1A,
+5917054,080000,CSD,Capital H (Part 1),
+5917034,081600,CSD,Victoria,
+5917802,080000,CSD,Union Bay 4,
+5917801,080000,CSD,Cole Bay 3,
+5917047,080000,CSD,View Royal,
+5917030,080000,CSD,Oak Bay,
+5919,080000,CD,Cowichan Valley,
+5919814,080000,CSD,Malachan 11,
+5919807,080000,CSD,Cowichan 1,
+5919809,080000,CSD,Kuper Island 7,
+5919051,080000,CSD,Cowichan Valley E,
+5919820,080000,CSD,Est-Patrolas 4,
+5919043,080000,CSD,Cowichan Valley A,
+5919815,080000,CSD,Malahat 11,
+5919033,080000,CSD,Cowichan Valley F,
+5919804,080000,CSD,Chemainus 13,
+5919812,080000,CSD,Cowichan Lake,
+5919035,080000,CSD,Cowichan Valley I,
+5919015,080000,CSD,Cowichan Valley G,
+5919802,080000,CSD,Squaw-hay-one 11,
+5919803,080000,CSD,Tsussie 6,
+5919816,080000,CSD,Oyster Bay 12,
+5919801,080000,CSD,Halalt 2,
+5919021,080000,CSD,Ladysmith,
+5919811,080000,CSD,Shingle Point 4,
+5919817,080000,CSD,Portier Pass 5,
+5919013,080000,CSD,Cowichan Valley D,
+5919046,080000,CSD,Cowichan Valley B,
+5919818,080000,CSD,Theik 2,
+5919808,080000,CSD,Kil-pah-las 3,
+5919049,080000,CSD,Cowichan Valley C,
+5919016,080000,CSD,Lake Cowichan,
+5919017,080000,CSD,Cowichan Valley H,
+5919806,080000,CSD,Cowichan 9,
+5919821,080000,CSD,Tzart-Lam 5,
+5919012,080000,CSD,Duncan,
+5919008,080000,CSD,North Cowichan,
+5921,080000,CD,Nanaimo,
+5921014,080000,CSD,Nanaimo B,
+5921806,080000,CSD,Qualicum,
+5921032,080000,CSD,Nanaimo F,
+5921007,080000,CSD,Nanaimo,
+5921010,080000,CSD,Nanaimo A,
+5921016,080000,CSD,Nanaimo C,
+5921018,080000,CSD,Parksville,
+5921805,080000,CSD,Nanoose,
+5921804,080000,CSD,Nanaimo Town 1,
+5921801,080000,CSD,Nanaimo River 3,
+5921023,080000,CSD,Qualicum Beach,
+5921034,080000,CSD,Nanaimo G,
+5921036,080000,CSD,Nanaimo H,
+5921030,080000,CSD,Nanaimo E,
+5921802,080000,CSD,Nanaimo River 2,
+5921803,080000,CSD,Nanaimo River 4,
+5921008,080000,CSD,Lantzville,
+5923,080000,CD,Alberni-Clayoquot,
+5923049,080000,CSD,Alberni-Clayoquot C,
+5923806,080000,CSD,Hesquiat 1,
+5923808,080000,CSD,Marktosis 15,
+5923824,080000,CSD,Refuge Cove 6,
+5923825,080000,CSD,Tin Wis 11,
+5923822,080000,CSD,Klehkoot 2,
+5923810,080000,CSD,Macoah 1,
+5923816,080000,CSD,Tsahaheh 1,
+5923047,080000,CSD,Alberni-Clayoquot A,
+5923813,080000,CSD,Opitsat 1,
+5923025,080000,CSD,Tofino,
+5923033,080000,CSD,Alberni-Clayoquot B,
+5923019,080000,CSD,Ucluelet,
+5923802,080000,CSD,Alberni 2,
+5923801,080000,CSD,Ahahswinis 1,
+5923804,080000,CSD,Clakamucus 2,
+5923803,080000,CSD,Anacla 12,
+5923809,080000,CSD,Numukamis 1,
+5923805,080000,CSD,Elhlateese 2,
+5923008,080000,CSD,Port Alberni,
+5923814,080000,CSD,Sachsa 4,
+5923035,080000,CSD,Alberni-Clayoquot D,
+5923823,080000,CSD,Esowista 3,
+5923037,080000,CSD,Alberni-Clayoquot E,
+5923039,080000,CSD,Alberni-Clayoquot F,
+5923807,080000,CSD,Ittatsoo 1,
+5924,080000,CD,Strathcona,
+5924806,080000,CSD,Houpsitas 6,
+5924805,080000,CSD,Chenahkint 12,
+5924052,080000,CSD,Strathcona B,
+5924025,080000,CSD,Gold River,
+5924812,080000,CSD,Quinsam 12,
+5924813,080000,CSD,Village Island 1,
+5924835,080000,CSD,Tsa Xana 18,
+5924804,080000,CSD,Campbell River 11,
+5924034,080000,CSD,Campbell River,
+5924048,080000,CSD,Strathcona A,
+5924042,080000,CSD,Strathcona D (Oyster Bay - Buttle Lake),
+5924840,080000,CSD,Homalco 9,
+5924814,080000,CSD,Yuquot 1,
+5924817,080000,CSD,Cape Mudge 10,
+5924030,080000,CSD,Tahsis,
+5924803,080000,CSD,Ahaminaquus 12,
+5924054,080000,CSD,Strathcona C,
+5924833,080000,CSD,Oclucje 7,
+5924039,080000,CSD,Sayward,
+5924836,080000,CSD,Ehatis 11,
+5924029,080000,CSD,Zeballos,
+5924818,080000,CSD,Squirrel Cove 8,
+5924820,080000,CSD,Tork 7,
+5926,080000,CD,Comox Valley,
+5926022,080000,CSD,Comox Valley B (Lazo North),
+5926801,080000,CSD,Comox 1,
+5926014,080000,CSD,Cumberland,
+5926021,080000,CSD,Comox Valley A,
+5926024,080000,CSD,Comox Valley C (Puntledge - Black Creek),
+5926010,080000,CSD,Courtenay,
+5926802,080000,CSD,Pentledge 2,
+5926005,080000,CSD,Comox,
+5927,080000,CD,Powell River,
+5927018,080000,CSD,Powell River D,
+5927806,080000,CSD,Sechelt (Part),
+5927012,080000,CSD,Powell River B,
+5927020,080000,CSD,Powell River E,
+5927008,080000,CSD,Powell River,
+5927016,080000,CSD,Powell River C,
+5927802,080000,CSD,Sliammon 1,
+5927010,080000,CSD,Powell River A,
+5929,082300,CD,Sunshine Coast,
+5929005,080000,CSD,Gibsons,
+5929801,080000,CSD,Chekwelp 26,
+5929011,080000,CSD,Sechelt,
+5929803,080000,CSD,Sechelt (Part),
+5929018,082300,CSD,Sunshine Coast A,
+5929028,082300,CSD,Sunshine Coast F,
+5929026,082300,CSD,Sunshine Coast E,
+5929022,082300,CSD,Sunshine Coast B,
+5929024,082300,CSD,Sunshine Coast D,
+5931,080000,CD,Squamish-Lillooet,
+5931826,080000,CSD,Necait 6,
+5931026,080000,CSD,Lillooet,
+5931823,080000,CSD,McCartney's Flat 4,
+5931832,080000,CSD,Towinock 2,
+5931806,080000,CSD,Seaichem 16,
+5931807,080000,CSD,Stawamus 24,
+5931816,080000,CSD,Fountain 1,
+5931840,080000,CSD,Nequatque 2,
+5931034,080000,CSD,Squamish-Lillooet B,
+5931837,080000,CSD,Mount Currie 8,
+5931813,080000,CSD,Bridge River 1,
+5931817,080000,CSD,Fountain 3,
+5931809,080000,CSD,Yekwaupsum 18,
+5931842,080000,CSD,Fountain 1B,
+5931811,080000,CSD,Mount Currie 2,
+5931021,080000,CSD,Squamish-Lillooet D,
+5931829,080000,CSD,Pavilion 1,
+5931818,080000,CSD,Fountain 10,
+5931827,080000,CSD,Nesikep 6,
+5931801,080000,CSD,Cheakamus 11,
+5931006,080000,CSD,Squamish,
+5931824,080000,CSD,Seton Lake 5,
+5931032,080000,CSD,Squamish-Lillooet A,
+5931821,080000,CSD,Lillooet 1,
+5931810,080000,CSD,Nequatque 3A,
+5931822,080000,CSD,Fountain Creek 8,
+5931804,080000,CSD,Mount Currie 10,
+5931017,080000,CSD,Squamish-Lillooet C,
+5931805,080000,CSD,Nequatque 1,
+5931820,080000,CSD,Fountain 12,
+5931812,080000,CSD,Nesuch 3,
+5931020,082400,CSD,Whistler,
+5931808,080000,CSD,Waiwakum 14,
+5931802,080000,CSD,Kowtain 17,
+5931819,080000,CSD,Fountain 11,
+5931815,080000,CSD,Chilhil 6,
+5931838,080000,CSD,Mount Currie 6,
+5931012,080000,CSD,Pemberton,
+5931803,080000,CSD,Mount Currie 1,
+5931831,080000,CSD,Slosh 1,
+5931833,080000,CSD,Mission 5,
+5931814,080000,CSD,Cayoosh Creek 1,
+5931828,080000,CSD,Pashilqua 2,
+5933,083200-085100-083300,CD,Thompson-Nicola,
+5933836,080000,CSD,Lower Hat Creek 2,
+5933042,080000,CSD,Kamloops,
+5933822,080000,CSD,Chuchhriaschin 5A,
+5933894,080000,CSD,Inkluckcheen 21B,
+5933879,080000,CSD,Zacht 5,
+5933817,080000,CSD,Skeetchestn,
+5933068,083200-085100-083300,CSD,Thompson-Nicola A (Wells Gray Country),
+5933819,080000,CSD,High Bar 1,
+5933845,080000,CSD,105 Mile Post 2,
+5933037,083200-085100-083300,CSD,Thompson-Nicola I (Blue Sky Country),
+5933880,080000,CSD,Kamloops 1,
+5933842,080000,CSD,Lytton 9B,
+5933852,080000,CSD,Nohomeen 23,
+5933896,080000,CSD,Nekliptum 1,
+5933897,080000,CSD,Boothroyd 8A (Part),
+5933805,080000,CSD,Joeyaska 2,
+5933809,080000,CSD,Paul's Basin 2,
+5933015,080000,CSD,Lytton,
+5933865,080000,CSD,Skuppah 4,
+5933814,080000,CSD,Canoe Creek 1,
+5933821,080000,CSD,Canoe Creek 2,
+5933887,083200-085100-083300,CSD,North Thompson 1,
+5933812,080000,CSD,Bonaparte 3,
+5933876,080000,CSD,Upper Nepa 6,
+5933840,080000,CSD,Lytton 4E,
+5933861,080000,CSD,Kloklowuck 7,
+5933060,083200-085100-083300,CSD,Thompson-Nicola L,
+5933883,080000,CSD,Neskonlith 1 (Neskainlith 1),
+5933864,080000,CSD,Siska Flat 8,
+5933802,080000,CSD,Douglas Lake 3,
+5933072,083200-085100-083300,CSD,Thompson-Nicola O (Lower North Thompson),
+5933860,080000,CSD,Siska Flat 3,
+5933878,080000,CSD,Yawaucht 11,
+5933070,083200-085100-083300,CSD,Thompson-Nicola B (Thompson Headwaters),
+5933889,080000,CSD,Squaam 2,
+5933054,080000,CSD,Chase,
+5933870,080000,CSD,Nkaih 10,
+5933895,080000,CSD,Shawniken 4B,
+5933820,080000,CSD,Inkluckcheen 21,
+5933853,080000,CSD,Nuuautin 2,
+5933855,080000,CSD,Papyum 27,
+5933006,080000,CSD,Merritt,
+5933806,080000,CSD,Nicola Lake 1,
+5933801,080000,CSD,Coldwater 1,
+5933867,080000,CSD,Spences Bridge 4,
+5933829,080000,CSD,Klahkamich 17,
+5933872,080000,CSD,Marble Canyon 3,
+5933886,080000,CSD,Nekalliston 2,
+5933858,080000,CSD,Seah 5,
+5933848,080000,CSD,Nickel Palm 4,
+5933839,080000,CSD,Lytton 4A,
+5933874,080000,CSD,Tsaukan 12,
+5933868,080000,CSD,Spintlum Flat 3,
+5933826,080000,CSD,Kanaka Bar 1A,
+5933808,080000,CSD,Nooaitch 10,
+5933008,083200-085100-083300,CSD,Thompson-Nicola M,
+5933039,083200-085100-083300,CSD,Thompson-Nicola J (Copper Desert Country),
+5933024,080000,CSD,Cache Creek,
+5933844,080000,CSD,Ashcroft 4,
+5933877,080000,CSD,Whispering Pines 4,
+5933828,080000,CSD,Basque 18,
+5933837,080000,CSD,Peq-Paq 22,
+5933834,080000,CSD,Kumcheen 1,
+5933841,080000,CSD,Lytton 9A,
+5933873,080000,CSD,Stryen 9,
+5933815,080000,CSD,Halhalaeden 14A,
+5933832,080000,CSD,Klickkumcheen 18,
+5933850,080000,CSD,Nickeyeah 25,
+5933824,080000,CSD,Skuppah 2A,
+5933825,080000,CSD,Inklyuhkinatko 2,
+5933827,080000,CSD,Kanaka Bar 2,
+5933019,080000,CSD,Ashcroft,
+5933032,083200-085100-083300,CSD,Thompson-Nicola E (Bonaparte Plateau),
+5933067,080000,CSD,Clearwater,
+5933028,080000,CSD,Clinton,
+5933875,080000,CSD,Upper Hat Creek 1,
+5933044,083200-085100-083300,CSD,Thompson-Nicola P (Rivers and the Peaks),
+5933888,080000,CSD,Louis Creek 4,
+5933854,080000,CSD,Paska Island 3,
+5933857,080000,CSD,Pemynoos 9,
+5933871,080000,CSD,Spences Bridge 4C,
+5933818,080000,CSD,Halhalaeden 14,
+5933884,080000,CSD,Sahhaltkum 4,
+5933823,080000,CSD,Kitzowit 20,
+5933803,080000,CSD,Hamilton Creek 2,
+5933012,083200-085100-083300,CSD,Thompson-Nicola N,
+5933811,080000,CSD,Zoht 4,
+5933830,080000,CSD,Klahkowit 5,
+5933035,080000,CSD,Logan Lake,
+5933816,080000,CSD,Chuchhriaschin 5,
+5933831,080000,CSD,Kleetlekut 22,
+5933851,080000,CSD,Nicomen 1,
+5933859,080000,CSD,Shackan 11,
+5933885,080000,CSD,Neskonlith 2,
+5933866,080000,CSD,Skwayaynope 26,
+5933807,080000,CSD,Nicola Mameet 1,
+5933846,080000,CSD,Oregon Jack Creek 5,
+5933074,080000,CSD,Barriere,
+5935,083520,CD,Central Okanagan,
+5935016,080000,CSD,Lake Country,
+5935802,080000,CSD,Tsinstikeptum 9,
+5935010,083520,CSD,Kelowna,
+5935803,080000,CSD,Tsinstikeptum 10,
+5935029,083520,CSD,West Kelowna,
+5935020,083520,CSD,Central Okanagan J,
+5935018,080000,CSD,Peachland,
+5935012,083520,CSD,Central Okanagan,
+5935801,080000,CSD,Duck Lake 7,
+5937,083510,CD,North Okanagan,
+5937802,080000,CSD,Enderby 2,
+5937805,080000,CSD,Harris 3,
+5937014,083510,CSD,Vernon,
+5937005,080000,CSD,Lumby,
+5937801,083500,CSD,Okanagan (Part) 1,
+5937024,080000,CSD,Spallumcheen,
+5937017,083510,CSD,North Okanagan B,
+5937033,080000,CSD,Enderby,
+5937010,080000,CSD,Coldstream,
+5937022,083510,CSD,North Okanagan D,
+5937028,080000,CSD,Armstrong,
+5937803,080000,CSD,Priest's Valley 6,
+5937041,083510,CSD,North Okanagan F,
+5937021,083510,CSD,North Okanagan C,
+5937023,083510,CSD,North Okanagan E,
+5939,083600-085200-085400-085500,CD,Columbia-Shuswap,
+5939804,083500,CSD,Okanagan (Part) 1,
+5939809,080000,CSD,Switsemalph 6,
+5939019,080000,CSD,Revelstoke,
+5939023,083600-085200-085400-085500,CSD,Columbia-Shuswap B,
+5939807,080000,CSD,Scotch Creek 4,
+5939801,080000,CSD,Chum Creek 2,
+5939803,080000,CSD,North Bay 5,
+5939007,080000,CSD,Golden,
+5939044,083600-085200-085400-085500,CSD,Columbia-Shuswap F,
+5939037,083600-085200-085400-085500,CSD,Columbia-Shuswap C,
+5939032,080000,CSD,Salmon Arm,
+5939808,080000,CSD,Switsemalph 3,
+5939011,083600-085200-085400-085500,CSD,Columbia-Shuswap A,
+5939802,080000,CSD,Hustalen 1,
+5939805,080000,CSD,Quaaout 1,
+5939806,080000,CSD,Salmon River 1,
+5939810,080000,CSD,Switsemalph 7,
+5939043,083600-085200-085400-085500,CSD,Columbia-Shuswap E,
+5939039,083600-085200-085400-085500,CSD,Columbia-Shuswap D,
+5939045,080000,CSD,Sicamous,
+5941,086210-086220,CD,Cariboo,
+5941835,080000,CSD,Coglistiko River 29,
+5941881,080000,CSD,Baezaeko River 27,
+5941871,080000,CSD,Fishtrap 19,
+5941827,080000,CSD,Charley Boy's Meadow 3,
+5941818,080000,CSD,Alexis Creek 16,
+5941822,080000,CSD,Anahim's Meadow 2,
+5941810,080000,CSD,Soda Creek 1,
+5941831,080000,CSD,Tanakut 4,
+5941872,080000,CSD,Swan Lake 3,
+5941807,080000,CSD,Dog Creek 2,
+5941864,080000,CSD,Sundayman's Meadow 3,
+5941010,086210-086220,CSD,Cariboo D,
+5941834,080000,CSD,Louis Squinas Ranch 14,
+5941852,080000,CSD,Trout Lake Alec 16,
+5941837,080000,CSD,Nazco 20,
+5941821,080000,CSD,Anahim's Flat 1,
+5941841,080000,CSD,Stone 1,
+5941832,080000,CSD,Garden 2A,
+5941808,080000,CSD,Lohbiee 3,
+5941850,080000,CSD,Toosey 1,
+5941868,080000,CSD,Sandy Harry 4,
+5941803,080000,CSD,Canim Lake 4,
+5941861,080000,CSD,Betty Creek 18,
+5941801,080000,CSD,Alkali Lake 1,
+5941858,080000,CSD,Cahoose 10,
+5941854,080000,CSD,Ulkatcho 13,
+5941846,080000,CSD,Toby's Meadow 4,
+5941014,086210-086220,CSD,Cariboo F,
+5941815,080000,CSD,Alexandria 1,
+5941849,080000,CSD,Baptiste Meadow 2,
+5941813,080000,CSD,Canim Lake 2,
+5941005,080000,CSD,One Hundred Mile House,
+5941880,080000,CSD,Ulkatcho 14A,
+5941811,080000,CSD,Johny Sticks 2,
+5941865,080000,CSD,Tatelkus Lake 28,
+5941866,080000,CSD,Euchinico Creek 17,
+5941856,080000,CSD,Alexis Creek 34,
+5941019,086210-086220,CSD,Cariboo A,
+5941820,080000,CSD,Alexis Creek 25,
+5941819,080000,CSD,Alexis Creek 24,
+5941009,086220,CSD,Williams Lake,
+5941812,086220,CSD,Williams Lake 1,
+5941874,080000,CSD,Little Springs 8,
+5941855,080000,CSD,Windy Mouth 7,
+5941806,080000,CSD,Dog Creek 1,
+5941017,086210-086220,CSD,Cariboo L,
+5941860,080000,CSD,Cahoose 12,
+5941840,080000,CSD,Squinas 2,
+5941026,086210-086220,CSD,Cariboo C,
+5941870,080000,CSD,Alexandria 1A,
+5941823,080000,CSD,Anahim's Meadow 2A,
+5941876,080000,CSD,Lezbye 6,
+5941804,080000,CSD,Canoe Creek 3,
+5941802,080000,CSD,Canim Lake 1,
+5941027,086210-086220,CSD,Cariboo I,
+5941859,080000,CSD,Blackwater Meadow 11,
+5941845,080000,CSD,Thomas Squinas Ranch 2A,
+5941851,080000,CSD,Towdystan Lake 3,
+5941843,080000,CSD,Seymour Meadows 19,
+5941844,080000,CSD,Agats Meadow 8,
+5941012,086210-086220,CSD,Cariboo E,
+5941830,080000,CSD,Garden 2,
+5941015,086210-086220,CSD,Cariboo G,
+5941875,080000,CSD,Little Springs 18,
+5941809,086210,CSD,Quesnel 1,
+5941863,080000,CSD,Tzetzi Lake 11,
+5941833,080000,CSD,Kluskus 1,
+5941847,080000,CSD,Alexis Creek 6,
+5941879,080000,CSD,Michel Gardens 36,
+5941816,080000,CSD,Alexandria 3,
+5941873,080000,CSD,Alkali Lake 4A,
+5941039,086210-086220,CSD,Cariboo J,
+5941862,080000,CSD,Salmon River Meadow 7,
+5941021,086210-086220,CSD,Cariboo B,
+5941013,086210,CSD,Quesnel,
+5941041,086210-086220,CSD,Cariboo K,
+5941817,080000,CSD,Alexis Creek 14,
+5941838,080000,CSD,Puntzi Lake 2,
+5941839,080000,CSD,Redstone Flat 1,
+5941805,080000,CSD,Deep Creek 2,
+5941829,080000,CSD,Chilco Lake 1A,
+5941016,086210-086220,CSD,Cariboo H,
+5941025,080000,CSD,Wells,
+5941814,080000,CSD,Alexandria 3A,
+5941828,080000,CSD,Chilco Lake 1,
+5941842,080000,CSD,Alexis Creek 17,
+5941848,080000,CSD,Alexis Creek 21,
+5943,080000,CD,Mount Waddington,
+5943023,080000,CSD,Port Hardy,
+5943017,080000,CSD,Port Alice,
+5943801,080000,CSD,Alert Bay 1,
+5943008,080000,CSD,Alert Bay,
+5943807,080000,CSD,Dead Point 5,
+5943836,080000,CSD,Hope Island 1,
+5943809,080000,CSD,Hopetown 10A,
+5943802,080000,CSD,Alert Bay 1A,
+5943817,080000,CSD,Thomas Point 5,
+5943012,080000,CSD,Port McNeill,
+5943033,080000,CSD,Mount Waddington D,
+5943031,080000,CSD,Mount Waddington C,
+5943808,080000,CSD,Gwayasdums 1,
+5943806,080000,CSD,Tsulquate 4,
+5943813,080000,CSD,Quaee 7,
+5943037,080000,CSD,Mount Waddington A,
+5943027,080000,CSD,Mount Waddington B,
+5943804,080000,CSD,Fort Rupert 1,
+5943815,080000,CSD,Kippase 2,
+5943816,080000,CSD,Quatsino Subdivision 18,
+5945,082100-082200,CD,Central Coast,
+5945012,082100-082200,CSD,Central Coast D,
+5945006,082100-082200,CSD,Central Coast A,
+5945802,080000,CSD,Bella Coola 1,
+5945801,080000,CSD,Bella Bella 1,
+5945014,082100-082200,CSD,Central Coast E,
+5945803,080000,CSD,Katit 1,
+5945010,082100-082200,CSD,Central Coast C,
+5947,080000,CD,Skeena-Queen Charlotte,
+5947809,080000,CSD,Lax Kw'alaams 1,
+5947810,080000,CSD,S1/2 Tsimpsean 2,
+5947021,080000,CSD,Skeena-Queen Charlotte C,
+5947030,080000,CSD,Port Clements,
+5947027,080000,CSD,Skeena-Queen Charlotte D,
+5947007,080000,CSD,Port Edward,
+5947807,080000,CSD,Dolphin Island 1,
+5947023,080000,CSD,Masset,
+5947012,080000,CSD,Prince Rupert,
+5947026,080000,CSD,Queen Charlotte,
+5947032,080000,CSD,Skeena-Queen Charlotte E,
+5947806,080000,CSD,Kulkayu (Hartley Bay) 4,
+5947016,080000,CSD,Skeena-Queen Charlotte A,
+5947803,080000,CSD,Masset 1,
+5947804,080000,CSD,Skidegate 1,
+5949,080000,CD,Kitimat-Stikine,
+5949845,089300,CSD,Dease Lake 9,
+5949840,080000,CSD,Laxgalts'ap,
+5949024,080000,CSD,New Hazelton,
+5949804,080000,CSD,Kitsumkaylum 1,
+5949020,080000,CSD,Kitimat-Stikine C (Part 2),
+5949830,080000,CSD,Kluachon Lake 1,
+5949032,080000,CSD,Stewart,
+5949844,080000,CSD,Kitselas 1,
+5949842,080000,CSD,Gingolx,
+5949838,080000,CSD,Gitwinksihlkw,
+5949811,080000,CSD,Hagwilget 1,
+5949807,080000,CSD,Kulspai 6,
+5949826,080000,CSD,Telegraph Creek 6,
+5949846,080000,CSD,Tahltan 1,
+5949013,080000,CSD,Kitimat-Stikine C (Part 1),
+5949812,080000,CSD,Gitanmaax 1,
+5949028,080000,CSD,Kitimat-Stikine B,
+5949041,080000,CSD,Kitimat-Stikine D,
+5949832,080000,CSD,Iskut 6,
+5949022,080000,CSD,Hazelton,
+5949817,080000,CSD,Moricetown 1,
+5949816,080000,CSD,Gitwangak 1,
+5949802,080000,CSD,Kitasoo 1,
+5949843,080000,CSD,Guhthe Tah 12,
+5949815,080000,CSD,Gitanyow 1,
+5949820,087110-087120,CSD,Bulkley River 19,
+5949805,080000,CSD,Kshish 4,
+5949039,080000,CSD,Kitimat-Stikine A,
+5949035,080000,CSD,Nisga'a,
+5949818,080000,CSD,Sik-e-dakh 2,
+5949810,080000,CSD,Coryatsaqua (Moricetown) 2,
+5949005,080000,CSD,Kitimat,
+5949018,080000,CSD,Kitimat-Stikine E,
+5949011,080000,CSD,Terrace,
+5949803,080000,CSD,Kitamaat 2,
+5949038,080000,CSD,Kitimat-Stikine F,
+5949827,080000,CSD,Telegraph Creek 6A,
+5949836,080000,CSD,Aiyansh (Kitladamas) 1,
+5949834,080000,CSD,New Aiyansh,
+5949814,080000,CSD,Gitsegukla 1,
+5949819,080000,CSD,Babine 17,
+5949813,080000,CSD,Kispiox 1,
+5951,087110-087120,CD,Bulkley-Nechako,
+5951053,087110-087120,CSD,Bulkley-Nechako G,
+5951051,087110-087120,CSD,Bulkley-Nechako A,
+5951845,080000,CSD,Tadinlay 15,
+5951034,080000,CSD,Houston,
+5951805,080000,CSD,Binche 2 (Pinchie 2),
+5951013,080000,CSD,Fort St. James,
+5951009,080000,CSD,Fraser Lake,
+5951032,080000,CSD,Granisle,
+5951043,087110,CSD,Smithers,
+5951801,080000,CSD,Ye Koo Che 3,
+5951815,087120,CSD,Burns Lake 18,
+5951818,080000,CSD,Cheslatta 1,
+5951804,080000,CSD,Sowchea 3,
+5951007,080000,CSD,Vanderhoof,
+5951015,087110-087120,CSD,Bulkley-Nechako C,
+5951830,080000,CSD,Jean Baptiste 28,
+5951031,087110-087120,CSD,Bulkley-Nechako E,
+5951812,080000,CSD,North Tacla Lake 7,
+5951846,080000,CSD,Nedoats 11,
+5951814,080000,CSD,Dzitline Lee 9,
+5951824,080000,CSD,Skins Lake 16B,
+5951019,087110-087120,CSD,Bulkley-Nechako F,
+5951822,080000,CSD,Francois Lake 7,
+5951823,080000,CSD,Skins Lake 16A,
+5951819,080000,CSD,Omineca 1,
+5951840,080000,CSD,Williams Prairie Meadow 1A,
+5951833,080000,CSD,Tatla't East 2,
+5951803,080000,CSD,Nak'azdli (Necoslie 1),
+5951841,080000,CSD,North Tacla Lake 7A,
+5951811,080000,CSD,Tacla Lake (Ferry Landing) 9,
+5951821,080000,CSD,Duncan Lake 2,
+5951847,080000,CSD,Babine Lake 21B,
+5951810,080000,CSD,Tache 1,
+5951825,080000,CSD,Tatla West 11,
+5951022,087120,CSD,Burns Lake,
+5951826,080000,CSD,Uncha Lake 13A,
+5951813,080000,CSD,Laketown 3,
+5951038,080000,CSD,Telkwa,
+5951844,080000,CSD,Poison Creek 17A,
+5951809,080000,CSD,Stony Creek 1,
+5951828,080000,CSD,Babine 6,
+5951820,080000,CSD,Palling 1,
+5951827,080000,CSD,Woyenne 27,
+5951829,080000,CSD,Babine 25,
+5951028,087110-087120,CSD,Bulkley-Nechako B,
+5951017,087110-087120,CSD,Bulkley-Nechako D,
+5951806,080000,CSD,Seaspunkut 4,
+5951802,080000,CSD,Nautley (Fort Fraser) 1,
+5951807,080000,CSD,Stellaquo (Stella) 1,
+5953,080000,CD,Fraser-Fort George,
+5953044,080000,CSD,Fraser-Fort George D,
+5953019,080000,CSD,Fraser-Fort George H,
+5953042,080000,CSD,Fraser-Fort George C,
+5953007,080000,CSD,Valemount,
+5953023,087400,CSD,Prince George,
+5953012,080000,CSD,McBride,
+5953050,080000,CSD,Fraser-Fort George G,
+5953033,080000,CSD,Mackenzie,
+5953048,080000,CSD,Fraser-Fort George F,
+5953801,080000,CSD,Fort George (Shelley) 2,
+5953046,080000,CSD,Fraser-Fort George E,
+5953038,080000,CSD,Fraser-Fort George A,
+5953802,080000,CSD,McLeod Lake 1,
+5955,087310-087320,CD,Peace River,
+5955034,080000,CSD,Fort St. John,
+5955812,080000,CSD,Ingenika Point,
+5955005,080000,CSD,Pouce Coupe,
+5955040,087310-087320,CSD,Peace River B,
+5955807,080000,CSD,Fort Ware 1,
+5955808,080000,CSD,Halfway River 168,
+5955010,080000,CSD,Chetwynd,
+5955014,080000,CSD,Dawson Creek,
+5955042,087310-087320,CSD,Peace River C,
+5955802,080000,CSD,West Moberly Lake 168A,
+5955803,080000,CSD,Blueberry River 205,
+5955804,080000,CSD,Doig River 206,
+5955003,080000,CSD,Tumbler Ridge,
+5955023,087310-087320,CSD,Peace River E,
+5955025,080000,CSD,Hudson's Hope,
+5955021,087310-087320,CSD,Peace River D,
+5955801,080000,CSD,East Moberly Lake 169,
+5955030,080000,CSD,Taylor,
+5957,080000,CD,Stikine,
+5957814,080000,CSD,Liard River 3,
+5957022,080000,CSD,Stikine Region,
+5957802,080000,CSD,Unnamed 10,
+5957813,080000,CSD,Lower Post,
+5957804,080000,CSD,Good Hope Lake,
+5957803,080000,CSD,Five Mile Point 3,
+5959,080000,CD,Northern Rockies,
+5959810,080000,CSD,Prophet River 4,
+5959805,080000,CSD,Fontas 1,
+5959806,088100,CSD,Fort Nelson 2,
+5959809,080000,CSD,Kahntah 3,
+5959007,080000,CSD,Northern Rockies,
+48,070000,PT,Alberta,
+4801,074200,CD,Division No. 1,
+4801018,074242,CSD,Redcliff,
+4801009,074310,CSD,Foremost,
+4801003,074211-074212-074241-074242-074251-074252-074253-074261-074262-074340-074360,CSD,Cypress County,
+4801008,073350-074280-074310-074320-074330-074350,CSD,Forty Mile County No. 8,
+4801006,074270,CSD,Medicine Hat,
+4801014,074280,CSD,Bow Island,
+4802,073300,CD,Division No. 2,
+4802032,074232,CSD,Tilley,
+4802011,073311-073312-073313,CSD,Lethbridge County,
+4802008,070000,CSD,Raymond,
+4802016,073311,CSD,Barons,
+4802018,073312,CSD,Picture Butte,
+4802006,073341,CSD,Warner,
+4802002,073342,CSD,Coutts,
+4802036,072653,CSD,Duchess,
+4802034,072600,CSD,Brooks,
+4802012,073314,CSD,Lethbridge,
+4802014,073311,CSD,Nobleford,
+4802013,073311,CSD,Coalhurst,
+4802001,073331-073332-073341-073342-073343,CSD,Warner County No. 5,
+4802029,073321,CSD,Vauxhall,
+4802031,072651-072652-072653-072654-074231-074232,CSD,Newell County No. 4,
+4802004,073342,CSD,Milk River,
+4802038,072653,CSD,Rosemary,
+4802023,073322,CSD,Barnwell,
+4802022,073321-073322-073323,CSD,Taber,
+4802039,072651,CSD,Bassano,
+4802009,072240,CSD,Stirling,
+4802019,073313,CSD,Coaldale,
+4802021,073321-073322-073323,CSD,Taber,
+4803,072500,CD,Division No. 3,
+4803011,073150-073160,CSD,Pincher Creek No. 9,
+4803003,073170,CSD,Improvement District No. 4 Waterton,
+4803801,073130,CSD,Piikani 147,
+4803022,072542,CSD,Claresholm,
+4803004,073242,CSD,Cardston,
+4803021,073211,CSD,Granum,
+4803019,073212,CSD,Fort Macleod,
+4803026,072541,CSD,Nanton,
+4803803,073170-073221,CSD,Blood 148A,
+4803024,072542,CSD,Stavely,
+4803008,073222,CSD,Hill Spring,
+4803002,073222,CSD,Magrath,
+4803006,073222,CSD,Glenwood,
+4803014,073160,CSD,Pincher Creek,
+4803001,073222-073231-073232-073241-073242,CSD,Cardston County,
+4803016,073120,CSD,Cowley,
+4803802,073170-073221,CSD,Blood 148,
+4803018,072541-072542-073211-073212,CSD,Willow Creek No. 26,
+4804,074100,CD,Division No. 4,
+4804014,074144,CSD,Oyen,
+4804001,074160,CSD,Acadia No. 34,
+4804006,074224,CSD,Empress,
+4804016,074144,CSD,Cereal,
+4804020,070000,CSD,Special Area No. 4,
+4804021,074131,CSD,Veteran,
+4804011,074122,CSD,Hanna,
+4804022,074131,CSD,Consort,
+4804012,070000,CSD,Special Area No. 3,
+4804019,074141,CSD,Youngstown,
+4804004,070000,CSD,Special Area No. 2,
+4805,072600,CD,Division No. 5,
+4805021,072632,CSD,Standard,
+4805004,072643,CSD,Champion,
+4805009,072645,CSD,Milo,
+4805802,072633,CSD,Siksika 146,
+4805042,072322,CSD,Carbon,
+4805022,072341,CSD,Rockyford,
+4805012,072341-072342-072631-072632-072634,CSD,Wheatland County,
+4805044,072321,CSD,Acme,
+4805026,072350,CSD,Drumheller,
+4805001,072641-072642-072643-072644-072645,CSD,Vulcan County,
+4805006,072642,CSD,Vulcan,
+4805011,072641,CSD,Arrowwood,
+4805002,072643,CSD,Carmangay,
+4805008,072644,CSD,Lomond,
+4805019,072634,CSD,Hussar,
+4805018,072631,CSD,Strathmore,
+4805046,072321,CSD,Linden,
+4805048,072313,CSD,Three Hills,
+4805036,072332,CSD,Munson,
+4805049,070000,CSD,Trochu,
+4805034,072333,CSD,Delia,
+4805038,072332,CSD,Morrin,
+4805041,072311-072312-072313-072321-072322,CSD,Kneehill County,
+4805031,072331-072332-072333,CSD,Starland County,
+4806,072400,CD,Division No. 6,
+4806014,072250-072260-072270-072360-072510-072610,CSD,Rocky View County,
+4806804,072510,CSD,Tsuu T'ina Nation 145 (Sarcee 145),
+4806019,072270,CSD,Cochrane,
+4806017,072610,CSD,Chestermere,
+4806803,072523,CSD,Eden Valley 216,
+4806006,072532,CSD,High River,
+4806001,072521-072522-072523-072531-072532-072533-072620,CSD,Foothills No. 31,
+4806011,072522,CSD,Black Diamond,
+4806021,072250,CSD,Airdrie,
+4806012,072531,CSD,Okotoks,
+4806009,072522,CSD,Turner Valley,
+4806022,072360,CSD,Irricana,
+4806026,072250,CSD,Crossfield,
+4806008,072523,CSD,Longview,
+4806016,072400,CSD,Calgary,
+4806024,072360,CSD,Beiseker,
+4806031,072230,CSD,Cremona,
+4806036,072210,CSD,Sundre,
+4806034,072220,CSD,Olds,
+4806029,072240,CSD,Carstairs,
+4806032,072220,CSD,Didsbury,
+4806028,072210-072220-072230-072240,CSD,Mountain View County,
+4807,075200,CD,Division No. 7,
+4807006,075281,CSD,Hughenden,
+4807052,075273,CSD,Edgerton,
+4807048,075242,CSD,Hardisty,
+4807044,075241,CSD,Sedgewick,
+4807038,076660,CSD,Heisler,
+4807036,072160,CSD,Forestburg,
+4807001,075281-075282-075283,CSD,Provost No. 52,
+4807008,075281,CSD,Amisk,
+4807046,075242,CSD,Lougheed,
+4807034,072160,CSD,Galahad,
+4807012,074113,CSD,Coronation,
+4807026,072131-072132-072133-072134-072135,CSD,Stettler,
+4807004,075282,CSD,Czar,
+4807042,075241,CSD,Killam,
+4807032,075243,CSD,Alliance,
+4807029,072133,CSD,Donalda,
+4807022,072134,CSD,Gadsby,
+4807014,074111,CSD,Castor,
+4807011,074111-074112-074113,CSD,Paintearth County No. 18,
+4807021,072132,CSD,Big Valley,
+4807051,075274,CSD,Chauvin,
+4807039,076660,CSD,Daysland,
+4807027,070000,CSD,White Sands,
+4807041,076660,CSD,Strome,
+4807054,075272,CSD,Wainwright,
+4807002,075283,CSD,Provost,
+4807016,072150,CSD,Halkirk,
+4807028,072131,CSD,Rochon Sands,
+4807024,072134,CSD,Botha,
+4807031,072160-075241-075242-075243-076660,CSD,Flagstaff County,
+4807019,072131-072132-072133-072134-072135,CSD,Stettler County No. 6,
+4807056,075271,CSD,Irma,
+4807049,075271-075272-075273-075274,CSD,Wainwright No. 61,
+4808,072100,CD,Division No. 8,
+4808042,072541,CSD,Parkland Beach,
+4808012,072121,CSD,Sylvan Lake,
+4808004,072125,CSD,Delburne,
+4808032,072113,CSD,Clive,
+4808013,070000,CSD,Norglenwold,
+4808008,072100,CSD,Innisfail,
+4808026,072112,CSD,Bentley,
+4808023,070000,CSD,Birchcliff,
+4808028,070000,CSD,Gull Lake,
+4808029,072112,CSD,Blackfalds,
+4808027,070000,CSD,Sunbreaker Cove,
+4808024,072111,CSD,Eckville,
+4808031,072111-072112-072113,CSD,Lacombe,
+4808011,072140,CSD,Red Deer,
+4808034,070000,CSD,Alix,
+4808038,072180-076560-076570,CSD,Ponoka County,
+4808813,070000,CSD,Montana 139,
+4808001,072121-072122-072123-072124-072125,CSD,Red Deer County,
+4808022,072111-072112-072113,CSD,Lacombe County,
+4808812,070000,CSD,Samson 137A,
+4808006,072123,CSD,Bowden,
+4808811,070000,CSD,Samson 137,
+4808039,072180,CSD,Ponoka,
+4808025,070000,CSD,Half Moon Bay,
+4808005,070000,CSD,Jarvis Bay,
+4808002,072125,CSD,Elnora,
+4808044,076560,CSD,Rimbey,
+4808009,072123,CSD,Penhold,
+4809,071300,CD,Division No. 9,
+4809809,071330,CSD,Sunchild 202,
+4809005,070000,CSD,Burnstick Lake,
+4809010,071360,CSD,Caroline,
+4809015,071350,CSD,Rocky Mountain House,
+4809806,071330,CSD,O'Chiese 203,
+4809810,071230,CSD,Big Horn 144A,
+4809002,071220-071230-071240-071330-071350-071360-071410,CSD,Clearwater County,
+4810,075200,CD,Division No. 10,
+4810021,076642,CSD,Holden,
+4810031,075221,CSD,Innisfree,
+4810016,075230-076641-076642,CSD,Beaver County,
+4810038,070000,CSD,Paradise Valley,
+4810002,072170,CSD,Bashaw,
+4810034,075222,CSD,Mannville,
+4810003,076654,CSD,Rosalind,
+4810018,076641,CSD,Tofield,
+4810061,076333,CSD,Mundare,
+4810011,072170-076652,CSD,Camrose,
+4810059,076332,CSD,Andrew,
+4810056,076350,CSD,Willingdon,
+4810012,076652,CSD,Bittern Lake,
+4810001,072170-076651-076652-076653-076654,CSD,Camrose County,
+4810004,076653,CSD,Ferintosh,
+4810051,075212,CSD,Myrnam,
+4810041,075255,CSD,Kitscoty,
+4810046,075253,CSD,Dewberry,
+4810028,076380,CSD,Vegreville,
+4810039,075260,CSD,Lloydminster (Part),
+4810019,076642,CSD,Ryley,
+4810032,075222,CSD,Minburn,
+4810036,075251-075252-075253-075254-075255-075256,CSD,Vermilion River County,
+4810042,075251,CSD,Vermilion,
+4810062,076333,CSD,Chipman,
+4810044,075255,CSD,Marwayne,
+4810058,076331-076332-076333,CSD,Lamont County,
+4810006,076653,CSD,Edberg,
+4810008,076653,CSD,New Norway,
+4810048,075211-075212-076350,CSD,Two Hills County No. 21,
+4810066,076331,CSD,Bruderheim,
+4810805,070000,CSD,Makaoo (Part) 120,
+4810052,075211,CSD,Two Hills,
+4810026,075221-075222-076380,CSD,Minburn County No. 27,
+4810022,075230,CSD,Viking,
+4810014,076651,CSD,Hay Lakes,
+4810064,076331,CSD,Lamont,
+4810068,076370,CSD,Improvement District No. 13 Elk Island,
+4810009,076654,CSD,Bawlf,
+4811,076400,CD,Division No. 11,
+4811052,076400,CSD,Sherwood Park,
+4811023,070000,CSD,Golden Days,
+4811042,070000,CSD,Lakeview,
+4811056,076360,CSD,Fort Saskatchewan,
+4811002,076620,CSD,Wetaskiwin,
+4811059,076241-076242-076243-076321-076322,CSD,Sturgeon County,
+4811024,076510,CSD,Warburg,
+4811803,070000,CSD,Louis Bull 138B,
+4811805,070000,CSD,Alexander 134,
+4811048,076233,CSD,Stony Plain,
+4811011,076620,CSD,Millet,
+4811804,076233,CSD,Stony Plain 135,
+4811013,076611,CSD,Beaumont,
+4811032,071310-071340-076530,CSD,Brazeau County,
+4811065,076321,CSD,Redwater,
+4811018,076520,CSD,Devon,
+4811068,076243,CSD,Morinville,
+4811066,076321,CSD,Bon Accord,
+4811016,076611,CSD,Leduc,
+4811034,072541-076231-076232-076233,CSD,Parkland County,
+4811039,070000,CSD,Betula Beach,
+4811031,076530,CSD,Drayton Valley,
+4811806,076232,CSD,Wabamun 133A,
+4811026,076530,CSD,Breton,
+4811003,070000,CSD,Argentia Beach,
+4811007,070000,CSD,Norris Beach,
+4811001,076540-076550-076620,CSD,Wetaskiwin County No. 10,
+4811006,070000,CSD,Crystal Springs,
+4811064,076321,CSD,Gibbons,
+4811009,070000,CSD,Silver Beach,
+4811061,076400,CSD,Edmonton,
+4811008,070000,CSD,Ma-Me-O Beach,
+4811022,070000,CSD,Itaska Beach,
+4811045,076232,CSD,Wabamun,
+4811044,070000,CSD,Kapasiwin,
+4811019,076520,CSD,Calmar,
+4811801,070000,CSD,Ermineskin 138,
+4811046,070000,CSD,Spring Lake,
+4811004,070000,CSD,Grandview,
+4811052,076360-076630,CSD,Strathcona County,
+4811038,070000,CSD,Seba Beach,
+4811041,070000,CSD,Point Alison,
+4811062,076400,CSD,St. Albert,
+4811020,070000,CSD,Sundance Beach,
+4811005,070000,CSD,Poplar Bay,
+4811802,076510-076540,CSD,Pigeon Lake 138A,
+4811021,076510,CSD,Thorsby,
+4811069,076242,CSD,Legal,
+4811012,076510-076520-076611-076612,CSD,Leduc County,
+4811049,076233,CSD,Spruce Grove,
+4811807,076232,CSD,Wabamun 133B,
+4812,075100,CD,Division No. 12,
+4812020,070000,CSD,Horseshoe Bay,
+4812806,070000,CSD,Saddle Lake 125,
+4812016,075133,CSD,Elk Point,
+4812815,075116-075144,CSD,Cold Lake 149B,
+4812004,075141-075142-075143-075144-075145-075146,CSD,Bonnyville No. 87,
+4812024,075122,CSD,Vilna,
+4812009,075143,CSD,Bonnyville,
+4812012,075142,CSD,Glendon,
+4812810,075116-075144,CSD,Cold Lake 149,
+4812811,075143,CSD,Kehewin 123,
+4812813,075116-075144,CSD,Cold Lake 149A,
+4812011,075141-075142-075143-075144-075145-075146,CSD,Bonnyville Beach,
+4812840,075112,CSD,Heart Lake 167,
+4812026,076340,CSD,Waskatenau,
+4812018,075132,CSD,St. Paul,
+4812014,075131-075132-075133-075134,CSD,St. Paul County No. 19,
+4812804,070000,CSD,Puskiakiwenin 122,
+4812029,076340,CSD,Smoky Lake,
+4812037,075111-075112-075113-075114-075115-075116-079241,CSD,Lac la Biche County,
+4812037,070000,CSD,Improvement District No. 349,
+4812828,070000,CSD,Beaver Lake 131,
+4812802,070000,CSD,Unipouheos 121,
+4812808,070000,CSD,White Fish Lake 128,
+4812022,075121-075122-076340,CSD,Smoky Lake County,
+4812002,075116-075144,CSD,Cold Lake,
+4812013,070000,CSD,Pelican Narrows,
+4812022,075121,CSD,Buffalo Lake Metis Settlement,
+4812022,075121,CSD,Kikino Metis Settlement,
+4812004,070000,CSD,Elizabeth Metis Settlement,
+4812004,075146,CSD,Fishing Lake Metis Settlement,
+4813,077400,CD,Division No. 13,
+4813047,070000,CSD,Sunset Beach,
+4813005,070000,CSD,Val Quentin,
+4813036,076160-076310,CSD,Thorhild County No. 7,
+4813019,076123,CSD,Barrhead,
+4813002,076221,CSD,Mayerthorpe,
+4813030,077434,CSD,Whitecourt,
+4813044,076151-076152-076153-076154-077340,CSD,Athabasca County,
+4813008,070000,CSD,Ross Haven,
+4813031,076142,CSD,Westlock,
+4813051,070000,CSD,Island Lake South,
+4813028,076141-076142,CSD,Westlock County,
+4813009,070000,CSD,Castle Island,
+4813015,070000,CSD,South View,
+4813016,070000,CSD,Sandy Beach,
+4813013,070000,CSD,Birch Cove,
+4813014,076223,CSD,Onoway,
+4813006,070000,CSD,West Cove,
+4813029,076110-077431-077432-077433-077434,CSD,Woodlands County,
+4813055,070000,CSD,South Baptiste,
+4813011,070000,CSD,Sunset Point,
+4813046,076154,CSD,Boyle,
+4813018,076121-076122-076123,CSD,Barrhead County No. 11,
+4813061,070000,CSD,Whispering Hills,
+4813811,070000,CSD,Alexis 133,
+4813001,076221-076222-076223,CSD,Lac Ste. Anne County,
+4813045,070000,CSD,Mewatha Beach,
+4813003,070000,CSD,Nakamun Park,
+4813048,076151,CSD,Athabasca,
+4813032,076142,CSD,Clyde,
+4813033,070000,CSD,Larkspur,
+4813017,070000,CSD,Sunrise Beach,
+4813057,070000,CSD,West Baptiste,
+4813012,070000,CSD,Alberta Beach,
+4813010,070000,CSD,Silver Sands,
+4813049,076151,CSD,Island Lake,
+4813007,070000,CSD,Yellowstone,
+4813053,070000,CSD,Bondiss,
+4814,077200,CD,Division No. 14,
+4814028,077250,CSD,Improvement District No. 25 Willmore Wilderness,
+4814024,077421,CSD,Edson,
+4814003,071210-071320-076210-077230-077240-077260-077421-077422,CSD,Yellowhead County,
+4814019,077260,CSD,Hinton,
+4815,071500,CD,Division No. 15,
+4815027,071520,CSD,Ghost Lake,
+4815007,073140,CSD,Crowsnest Pass,
+4815045,073110,CSD,Ranchland No. 66,
+4815035,071400-071420-071430-071440,CSD,Banff,
+4815802,070000,CSD,"Stoney 142, 143, 144",
+4815013,071530-071540,CSD,Kananaskis,
+4815023,071520,CSD,Canmore,
+4815030,070000,CSD,Waiparous,
+4815033,071100,CSD,Jasper,
+4815037,071100,CSD,Improvement District No. 12 Jasper Park,
+4815032,071400-071420-071430-071440,CSD,Improvement District No. 9 Banff,
+4815015,071510-071520,CSD,Bighorn No. 8,
+4816,079200,CD,Division No. 16,
+4816037,079221,CSD,Fort McMurray,
+4816856,079210,CSD,Fort Mackay,
+4816857,079121,CSD,Namur River 174A,
+4816821,070000,CSD,Gregoire Lake 176,
+4816831,079133,CSD,Chipewyan 201A,
+4816051,079121-079122-079123-079131-079132-079133-079210-079221-079222-079223-079231-079232-079242-079243,CSD,Improvement District No. 24 Wood Buffalo,
+4816849,070000,CSD,Old Fort 217,
+4816037,079111-079112-079113-079114,CSD,Wood Buffalo,
+4816817,079243,CSD,Janvier 194,
+4816822,070000,CSD,Gregoire Lake 176A,
+4816860,070000,CSD,Thebathi 196,
+4816858,079121,CSD,Namur Lake 174B,
+4816856,070000,CSD,Fort McKay 174,
+4816850,070000,CSD,Allison Bay 219,
+4816855,070000,CSD,Charles Lake 225,
+4816852,070000,CSD,Dog Head 218,
+4816861,070000,CSD,Thabacha Náre 196A,
+4817,077300,CD,Division No. 17,
+4817027,076243-077311-077312-077313-077440-078280-078320,CSD,Big Lakes,
+4817031,077330-078331-078332-078333-078334,CSD,Opportunity No. 17,
+4817833,070000,CSD,Sawridge 150H,
+4817856,070000,CSD,Woodland Cree 226,
+4817860,078332,CSD,Loon Lake 235,
+4817039,078262,CSD,Nampa,
+4817838,070000,CSD,Tall Cree 173,
+4817033,076130-077321-077322-077323,CSD,Lesser Slave River No.124,
+4817855,078333,CSD,Desmarais,
+4817817,070000,CSD,Jean Baptiste Gambler 183,
+4817848,078116,CSD,Bushe River 207,
+4817830,070000,CSD,Kapawe'no First Nation (Pakashan 150D),
+4817078,078241,CSD,Manning,
+4817858,070000,CSD,Kapawe'no First Nation (Grouard 230),
+4817841,070000,CSD,Beaver Ranch 163,
+4817076,078241-078242,CSD,Northern Lights County,
+4817821,078333,CSD,Wabasca 166B,
+4817842,070000,CSD,Boyer 164,
+4817840,070000,CSD,Tall Cree 173A,
+4817062,078211-078212-078213,CSD,Clear Hills,
+4817093,078116,CSD,High Level,
+4817029,077321,CSD,Slave Lake,
+4817823,078333,CSD,Wabasca 166D,
+4817843,070000,CSD,Child Lake 164A,
+4817824,078313,CSD,Utikoomak Lake 155,
+4817835,078133,CSD,Fox Lake 162,
+4817828,077313,CSD,Drift Pile River 150,
+4817837,078133,CSD,John d'Or Prairie 215,
+4817857,070000,CSD,Woodland Cree 228,
+4817097,078112,CSD,Rainbow Lake,
+4817064,078213,CSD,Hines Creek,
+4817832,070000,CSD,Sawridge 150G,
+4817849,070000,CSD,Upper Hay River 212,
+4817845,070000,CSD,Hay Lake 209,
+4817021,078280,CSD,High Prairie,
+4817026,078261-078262-078311-078312-078313,CSD,Northern Sunrise County,
+4817829,070000,CSD,Sucker Creek 150A,
+4817825,078211-078212-078213,CSD,Clear Hills 152C,
+4817852,070000,CSD,Kapawe'no First Nation (Halcro 150C),
+4817836,070000,CSD,Kapawe'no First Nation (Freeman 150B),
+4817819,078333,CSD,Wabasca 166A,
+4817853,070000,CSD,Little Buffalo,
+4817024,077440,CSD,Swan Hills,
+4817095,078111-078112-078113-078114-078115-078116-078131-078132-078133-078134-078135,CSD,Mackenzie County,
+4817827,078313,CSD,Utikoomak Lake 155A,
+4817831,077440,CSD,Swan River 150E,
+4817818,078333,CSD,Wabasca 166,
+4817822,078333,CSD,Wabasca 166C,
+4817859,078132,CSD,Fort Vermilion 173B,
+4817854,070000,CSD,Carcajou 187,
+4817027,078320,CSD,Peavine Metis Settlement,
+4817027,078320,CSD,Gift Lake Metis Settlement,
+4817076,078120,CSD,Paddle Prairie Metis Settlement,
+4817027,070000,CSD,East Prairie Metis Settlement,
+4818,077200,CD,Division No. 18,
+4818002,077410,CSD,Fox Creek,
+4818015,077121-077122-077123-077124-077125-077126-077210-077220-077410,CSD,Greenview No. 16,
+4818005,077210,CSD,Grande Cache,
+4818818,077125,CSD,Sturgeon Lake 154A,
+4818816,077125,CSD,Sturgeon Lake 154,
+4818018,077126,CSD,Valleyview,
+4819,077100,CD,Division No. 19,
+4819826,070000,CSD,Duncan's 151A,
+4819066,078232,CSD,Fairview No. 136,
+4819038,078210-078220-078262,CSD,Peace River,
+4819042,078270,CSD,McLennan,
+4819044,070000,CSD,Donnelly,
+4819071,078233,CSD,Peace No. 135,
+4819058,078231,CSD,Spirit River,
+4819068,078232,CSD,Fairview,
+4819012,077113,CSD,Grande Prairie,
+4819072,070000,CSD,Berwyn,
+4819054,078231,CSD,Spirit River No. 133,
+4819059,078221-078222-078223,CSD,Saddle Hills County,
+4819046,078270,CSD,Falher,
+4819008,077111,CSD,Hythe,
+4819009,077111,CSD,Beaverlodge,
+4819014,077112,CSD,Sexsmith,
+4819048,070000,CSD,Girouxville,
+4819011,077113,CSD,Wembley,
+4819074,078233,CSD,Grimshaw,
+4819815,070000,CSD,Horse Lakes 152B,
+4819041,078270,CSD,Smoky River No. 130,
+4819056,078231,CSD,Rycroft,
+4819049,078251-078252,CSD,Birch Hills County,
+4819006,077111-077112-077113,CSD,Grande Prairie County No. 1,
+47,060000,PT,Saskatchewan,
+4701,060000,CD,Division No. 1,
+4701811,060000,CSD,Ocean Man 69B,
+4701816,060000,CSD,Ocean Man 69I,
+4701814,060000,CSD,Ocean Man 69F,
+4701067,060000,CSD,Heward,
+4701072,060000,CSD,Hazelwood No. 94,
+4701808,060000,CSD,White Bear 70,
+4701054,060000,CSD,Manor,
+4701036,060000,CSD,Moose Creek No. 33,
+4701006,060000,CSD,Mount Pleasant No. 2,
+4701817,060000,CSD,Ocean Man 69H,
+4701053,060000,CSD,Moose Mountain No. 63,
+4701094,060000,CSD,Maryfield No. 91,
+4701809,060000,CSD,Ocean Man 69,
+4701058,060000,CSD,Brock No. 64,
+4701044,060000,CSD,Storthoaks,
+4701016,060000,CSD,Coalfields No. 4,
+4701014,060000,CSD,Oxbow,
+4701001,060000,CSD,Argyle No. 1,
+4701018,060000,CSD,North Portal,
+4701079,060000,CSD,Kenosee Lake,
+4701078,060000,CSD,Wawota,
+4701048,060000,CSD,Antler,
+4701032,060000,CSD,Lampman,
+4701037,060000,CSD,Alameda,
+4701063,060000,CSD,Tecumseh No. 65,
+4701091,060000,CSD,Walpole No. 92,
+4701011,060000,CSD,Enniskillen No. 3,
+4701818,060000,CSD,Ocean Man 69D,
+4701819,060000,CSD,Pheasant Rump 68,
+4701069,060000,CSD,Golden West No. 95,
+4701098,060000,CSD,Fairlight,
+4701043,060000,CSD,Storthoaks No. 31,
+4701004,060000,CSD,Carievale,
+4701076,060000,CSD,Wawken No. 93,
+4701077,060000,CSD,Kennedy,
+4701066,060000,CSD,Stoughton,
+4701019,060000,CSD,Roche Percee,
+4701041,060000,CSD,Alida,
+4701810,060000,CSD,Ocean Man 69A,
+4701815,060000,CSD,Ocean Man 69G,
+4701096,060000,CSD,Maryfield,
+4701047,060000,CSD,Antler No. 61,
+4701049,060000,CSD,Redvers,
+4701021,060000,CSD,Bienfait,
+4701012,060000,CSD,Glen Ewen,
+4701008,060000,CSD,Carnduff,
+4701812,060000,CSD,Ocean Man 69C,
+4701813,060000,CSD,Ocean Man 69E,
+4701064,060000,CSD,Forget,
+4701061,060000,CSD,Kisbey,
+4701059,060000,CSD,Arcola,
+4701056,060000,CSD,Carlyle,
+4701027,060000,CSD,Benson No. 35,
+4701031,060000,CSD,Browning No. 34,
+4701039,060000,CSD,Reciprocity No. 32,
+4701022,060000,CSD,Estevan No. 5,
+4701024,060000,CSD,Estevan,
+4701017,060000,CSD,Frobisher,
+4701002,060000,CSD,Gainsborough,
+4702,060000,CD,Division No. 2,
+4702069,060000,CSD,Scott No. 98,
+4702052,060000,CSD,Norton No. 69,
+4702048,060000,CSD,McTaggart,
+4702058,060000,CSD,Ogema,
+4702026,060000,CSD,The Gap No. 39,
+4702011,060000,CSD,Lake Alma No. 8,
+4702016,060000,CSD,Minton,
+4702078,060000,CSD,Fillmore,
+4702051,060000,CSD,Brokenshell No. 68,
+4702024,060000,CSD,Bengough No. 40,
+4702028,060000,CSD,Ceylon,
+4702038,060000,CSD,Halbrite,
+4702039,060000,CSD,Midale,
+4702800,060000,CSD,Piapot Cree First Nation 75H,
+4702057,060000,CSD,Key West No. 70,
+4702054,060000,CSD,Pangman,
+4702031,060000,CSD,Radville,
+4702036,060000,CSD,Goodwater,
+4702041,060000,CSD,Macoun,
+4702072,060000,CSD,Yellow Grass,
+4702062,060000,CSD,Avonlea,
+4702073,060000,CSD,Wellington No. 97,
+4702042,060000,CSD,Griffin No. 66,
+4702047,060000,CSD,Weyburn,
+4702029,060000,CSD,Laurier No. 38,
+4702012,060000,CSD,Lake Alma,
+4702076,060000,CSD,Fillmore No. 96,
+4702023,060000,CSD,Bengough,
+4702018,060000,CSD,Happy Valley No. 10,
+4702014,060000,CSD,Surprise Valley No. 9,
+4702015,060000,CSD,Gladmar,
+4702066,060000,CSD,Caledonia No. 99,
+4702061,060000,CSD,Elmsthorpe No. 100,
+4702071,060000,CSD,Lang,
+4702067,060000,CSD,Milestone,
+4702077,060000,CSD,Osage,
+4702044,060000,CSD,Weyburn No. 67,
+4702079,060000,CSD,Creelman,
+4702033,060000,CSD,Lomond No. 37,
+4702006,060000,CSD,Souris Valley No. 7,
+4702001,060000,CSD,Cambria No. 6,
+4702037,060000,CSD,Cymri No. 36,
+4702008,060000,CSD,Tribune,
+4702002,060000,CSD,Torquay,
+4703,060000,CD,Division No. 3,
+4703052,060000,CSD,Hazenmore,
+4703011,060000,CSD,Old Post No. 43,
+4703028,060000,CSD,Willow Bunch,
+4703036,060000,CSD,Assiniboia,
+4703009,060000,CSD,Rockglen,
+4703064,060000,CSD,Glen Bain No. 105,
+4703074,060000,CSD,Sutton No. 103,
+4703048,060000,CSD,Pinto Creek No. 75,
+4703026,060000,CSD,Willow Bunch No. 42,
+4703068,060000,CSD,Gravelbourg No. 104,
+4703061,060000,CSD,Neville,
+4703092,060000,CSD,Mossbank,
+4703042,060000,CSD,Wood River No. 74,
+4703034,060000,CSD,Lake of the Rivers No. 72,
+4703016,060000,CSD,Glen McPherson No. 46,
+4703018,060000,CSD,Mankota No. 45,
+4703019,060000,CSD,Mankota,
+4703001,060000,CSD,Hart Butte No. 11,
+4703059,060000,CSD,Whiska Creek No. 106,
+4703071,060000,CSD,Gravelbourg,
+4703029,060000,CSD,Excel No. 71,
+4703006,060000,CSD,Poplar Valley No. 12,
+4703004,060000,CSD,Coronach,
+4703058,060000,CSD,Ponteix,
+4703038,060000,CSD,Stonehenge No. 73,
+4703051,060000,CSD,Kincaid,
+4703044,060000,CSD,Lafleche,
+4703801,060000,CSD,Wood Mountain 160,
+4703062,060000,CSD,Vanguard,
+4703093,060000,CSD,Lake Johnston No. 102,
+4703054,060000,CSD,Auvergne No. 76,
+4703096,060000,CSD,Terrell No. 101,
+4703041,060000,CSD,Limerick,
+4703022,060000,CSD,Waverley No. 44,
+4703012,060000,CSD,Wood Mountain,
+4704,060000,CD,Division No. 4,
+4704048,060000,CSD,Maple Creek,
+4704058,060000,CSD,Bone Creek No. 108,
+4704003,060000,CSD,Val Marie No. 17,
+4704050,060000,CSD,Piapot No. 110,
+4704038,060000,CSD,Arlington No. 79,
+4704028,060000,CSD,Wise Creek No. 77,
+4704006,060000,CSD,Lone Tree No. 18,
+4704026,060000,CSD,Eastend,
+4704011,060000,CSD,Frontier No. 19,
+4704061,060000,CSD,Lac Pelletier No. 107,
+4704019,060000,CSD,Reno No. 51,
+4704021,060000,CSD,Consul,
+4704002,060000,CSD,Val Marie,
+4704045,060000,CSD,Maple Creek No. 111,
+4704056,060000,CSD,Carmichael,
+4704024,060000,CSD,White Valley No. 49,
+4704036,060000,CSD,Shaunavon,
+4704012,060000,CSD,Frontier,
+4704802,060000,CSD,Nekaneet Cree Nation,
+4704034,060000,CSD,Grassy Creek No. 78,
+4704054,060000,CSD,Carmichael No. 109,
+4704008,060000,CSD,Bracken,
+4704009,060000,CSD,Climax,
+4704029,060000,CSD,Cadillac,
+4705,060000,CD,Division No. 5,
+4705093,060000,CSD,Churchbridge No. 211,
+4705094,060000,CSD,Churchbridge,
+4705803,060000,CSD,Cowessess 73,
+4705052,060000,CSD,Esterhazy,
+4705037,060000,CSD,Rocanville No. 151,
+4705042,060000,CSD,Tantallon,
+4705021,060000,CSD,Glenavon,
+4705009,060000,CSD,Wapella,
+4705804,060000,CSD,Kahkewistahaw 72,
+4705808,060000,CSD,Little Bone 74B,
+4705068,060000,CSD,Duff,
+4705061,060000,CSD,Waldron,
+4705044,060000,CSD,Gerald,
+4705050,060000,CSD,West End,
+4705806,060000,CSD,Ochapowace 71,
+4705024,060000,CSD,Wolseley,
+4705029,060000,CSD,Grenfell,
+4705014,060000,CSD,Kingsley No. 124,
+4705011,060000,CSD,Silverwood No. 123,
+4705016,060000,CSD,Kipling,
+4705825,060000,CSD,Ochapowace 71-51,
+4705027,060000,CSD,Wolseley No. 155,
+4705060,060000,CSD,Melville Beach,
+4705033,060000,CSD,Willowdale No. 153,
+4705031,060000,CSD,Broadview,
+4705059,060000,CSD,Grayson,
+4705028,060000,CSD,Elcapo No. 154,
+4705814,060000,CSD,Ochapowace 71-10,
+4705038,060000,CSD,Rocanville,
+4705006,060000,CSD,Welwyn,
+4705821,060000,CSD,Ochapowace 71-26,
+4705822,060000,CSD,Ochapowace 71-70,
+4705019,060000,CSD,Windthorst,
+4705004,060000,CSD,Moosomin,
+4705043,060000,CSD,Spy Hill,
+4705077,060000,CSD,Saltcoats No. 213,
+4705071,060000,CSD,Fenwood,
+4705063,060000,CSD,McLeod No. 185,
+4705823,060000,CSD,Ochapowace 71-7,
+4705818,060000,CSD,Ochapowace 71-54,
+4705066,060000,CSD,Lemberg,
+4705067,060000,CSD,Stanley No. 215,
+4705073,060000,CSD,Cana No. 214,
+4705078,060000,CSD,Saltcoats,
+4705079,060000,CSD,Bredenbury,
+4705051,060000,CSD,Fertile Belt No. 183,
+4705062,060000,CSD,Killaly,
+4705826,060000,CSD,Ochapowace 71-44,
+4705041,060000,CSD,Spy Hill No. 152,
+4705002,060000,CSD,Fleming,
+4705057,060000,CSD,Grayson No. 184,
+4705054,060000,CSD,Bangor,
+4705058,060000,CSD,Dubuc,
+4705805,060000,CSD,Sakimay 74,
+4705055,060000,CSD,Bird's Point,
+4705069,060000,CSD,Goodeve,
+4705096,060000,CSD,MacNutt,
+4705047,060000,CSD,Langenburg No. 181,
+4705824,060000,CSD,Ochapowace 71-18,
+4705064,060000,CSD,Neudorf,
+4705048,060000,CSD,Langenburg,
+4705053,060000,CSD,Atwater,
+4705807,060000,CSD,Shesheep 74A,
+4705049,060000,CSD,Yarbo,
+4705018,060000,CSD,Chester No. 125,
+4705034,060000,CSD,Whitewood,
+4705007,060000,CSD,Martin No. 122,
+4705074,060000,CSD,Melville,
+4705056,060000,CSD,Stockholm,
+4705001,060000,CSD,Moosomin No. 121,
+4706,060000,CD,Division No. 6,
+4706070,060000,CSD,Longlaketon No. 219,
+4706096,060000,CSD,Lipton No. 217,
+4706828,060000,CSD,Star Blanket 83C,
+4706042,060000,CSD,Abernethy No. 186,
+4706820,060000,CSD,Wa-Pii Moos-Toosis (White Calf) 83A,
+4706030,060000,CSD,White City,
+4706014,060000,CSD,Wilcox,
+4706060,060000,CSD,Wee Too Beach,
+4706048,060000,CSD,North Qu'Appelle No. 187,
+4706056,062313,CSD,Lumsden,
+4706034,060000,CSD,South Qu'Appelle No. 157,
+4706026,060000,CSD,Sherwood No. 159,
+4706032,060000,CSD,Balgonie,
+4706016,060000,CSD,Redburn No. 130,
+4706007,060000,CSD,Vibank,
+4706017,060000,CSD,Rouleau,
+4706080,060000,CSD,Glen Harbour,
+4706023,060000,CSD,Pense,
+4706073,060000,CSD,Bulyea,
+4706076,060000,CSD,Sunset Cove,
+4706091,060000,CSD,Cupar No. 218,
+4706065,060000,CSD,Alice Beach,
+4706815,060000,CSD,Okanese 82,
+4706811,060000,CSD,Standing Buffalo 78,
+4706047,060000,CSD,Balcarres,
+4706049,060000,CSD,Lebret,
+4706004,060000,CSD,Francis No. 127,
+4706039,060000,CSD,Indian Head,
+4706067,060000,CSD,Holdfast,
+4706021,060000,CSD,Pense No. 160,
+4706027,062100,CSD,Regina,
+4706003,060000,CSD,Kendal,
+4706009,060000,CSD,Francis,
+4706081,060000,CSD,North Grove,
+4706054,060000,CSD,Disley,
+4706074,060000,CSD,Strasbourg,
+4706059,060000,CSD,Dufferin No. 190,
+4706068,060000,CSD,Dilke,
+4706055,060000,CSD,Buena Vista,
+4706098,060000,CSD,Lipton,
+4706057,060000,CSD,Lumsden Beach,
+4706813,060000,CSD,Muscowpetung 80,
+4706812,060000,CSD,Pasqua 79,
+4706045,060000,CSD,Fort San,
+4706022,060000,CSD,Belle Plaine,
+4706031,060000,CSD,Pilot Butte,
+4706013,060000,CSD,Bratt's Lake No. 129,
+4706011,060000,CSD,Lajord No. 128,
+4706001,060000,CSD,Montmartre No. 126,
+4706810,060000,CSD,Assiniboine 76,
+4706018,060000,CSD,Briercrest,
+4706002,060000,CSD,Montmartre,
+4706046,060000,CSD,Abernethy,
+4706079,060000,CSD,Earl Grey,
+4706063,060000,CSD,Sarnia No. 221,
+4706085,060000,CSD,Island View,
+4706099,060000,CSD,Tullymet No. 216,
+4706093,060000,CSD,Markinch,
+4706072,060000,CSD,Saskatchewan Beach,
+4706809,060000,CSD,Piapot 75,
+4706829,060000,CSD,Treaty Four Reserve Grounds 77,
+4706033,060000,CSD,Edenwold,
+4706036,060000,CSD,Qu'Appelle,
+4706028,060000,CSD,Grand Coulee,
+4706019,060000,CSD,Drinkwater,
+4706041,060000,CSD,Sintaluta,
+4706064,060000,CSD,Chamberlain,
+4706094,060000,CSD,Cupar,
+4706814,060000,CSD,Little Black Bear 84,
+4706097,060000,CSD,Dysart,
+4706053,062313,CSD,Lumsden No. 189,
+4706077,060000,CSD,Silton,
+4706058,062313,CSD,Regina Beach,
+4706075,060000,CSD,Kannata Valley,
+4706051,060000,CSD,Fort Qu'Appelle,
+4706050,060000,CSD,Katepwa,
+4706038,060000,CSD,Indian Head No. 156,
+4706008,060000,CSD,Sedley,
+4706029,060000,CSD,Edenwold No. 158,
+4706082,060000,CSD,Pelican Pointe,
+4706061,060000,CSD,Bethune,
+4706071,060000,CSD,McKillop No. 220,
+4706069,060000,CSD,Grandview Beach,
+4706092,060000,CSD,Southey,
+4706818,060000,CSD,Star Blanket 83,
+4706078,062313,CSD,Craven,
+4706052,060000,CSD,B-Say-Tah,
+4706037,060000,CSD,McLean,
+4706006,060000,CSD,Odessa,
+4706816,060000,CSD,Peepeekisis 81,
+4706062,060000,CSD,Findlater,
+4707,060000,CD,Division No. 7,
+4707093,060000,CSD,Aylesbury,
+4707045,060000,CSD,Sun Valley,
+4707028,060000,CSD,Ernfold,
+4707016,060000,CSD,Hodgeville,
+4707012,060000,CSD,Shamrock,
+4707036,060000,CSD,Caron No. 162,
+4707021,060000,CSD,Excelsior No. 166,
+4707077,060000,CSD,Tugaske,
+4707020,060000,CSD,Beaver Flat,
+4707044,060000,CSD,Marquis,
+4707043,060000,CSD,Tuxford,
+4707014,060000,CSD,Lawtonia No. 135,
+4707066,060000,CSD,King George No. 256,
+4707091,060000,CSD,Craik No. 222,
+4707031,060000,CSD,Chaplin,
+4707034,060000,CSD,Mortlach,
+4707037,060000,CSD,Caronport,
+4707011,060000,CSD,Shamrock No. 134,
+4707006,060000,CSD,Rodgers No. 133,
+4707071,060000,CSD,Maple Bush No. 224,
+4707076,060000,CSD,Huron No. 223,
+4707053,060000,CSD,Enfield No. 194,
+4707029,060000,CSD,Chaplin No. 164,
+4707046,060000,CSD,Keeler,
+4707026,060000,CSD,Herbert,
+4707039,060000,CSD,Moose Jaw,
+4707054,060000,CSD,Central Butte,
+4707049,060000,CSD,Eyebrow,
+4707022,060000,CSD,Waldeck,
+4707027,060000,CSD,Morse,
+4707008,060000,CSD,Coderre,
+4707004,060000,CSD,Hillsborough No. 132,
+4707068,060000,CSD,Coteau Beach,
+4707063,060000,CSD,Victory No. 226,
+4707059,060000,CSD,Lucky Lake,
+4707074,060000,CSD,Mistusinne,
+4707048,060000,CSD,Brownlee,
+4707051,060000,CSD,South Lake,
+4707038,060000,CSD,Moose Jaw No. 161,
+4707058,060000,CSD,Canaan No. 225,
+4707092,060000,CSD,Craik,
+4707024,060000,CSD,Morse No. 165,
+4707023,060000,CSD,Rush Lake,
+4707018,060000,CSD,Coulee No. 136,
+4707067,060000,CSD,Coteau No. 255,
+4707062,060000,CSD,Beechy,
+4707072,060000,CSD,Riverhurst,
+4707047,060000,CSD,Eyebrow No. 193,
+4707042,060000,CSD,Marquis No. 191,
+4707032,060000,CSD,Wheatlands No. 163,
+4707001,060000,CSD,Baildon No. 131,
+4708,060000,CD,Division No. 8,
+4708076,060000,CSD,Eston,
+4708034,060000,CSD,Pennant,
+4708042,060000,CSD,Lacadena No. 228,
+4708071,060000,CSD,Newcombe No. 260,
+4708068,060000,CSD,Eatonia,
+4708046,060000,CSD,Miry Creek No. 229,
+4708057,060000,CSD,Prelate,
+4708059,060000,CSD,Mendham,
+4708021,060000,CSD,Enterprise No. 142,
+4708038,060000,CSD,Saskatchewan Landing No. 167,
+4708008,060000,CSD,Webb,
+4708053,060000,CSD,Clinworth No. 230,
+4708058,060000,CSD,Leader,
+4708054,060000,CSD,Sceptre,
+4708039,060000,CSD,Stewart Valley,
+4708018,060000,CSD,Golden Prairie,
+4708006,060000,CSD,Webb No. 138,
+4708032,060000,CSD,Cabri,
+4708009,060000,CSD,Gull Lake No. 139,
+4708001,060000,CSD,Swift Current No. 137,
+4708065,060000,CSD,Chesterfield No. 261,
+4708092,060000,CSD,Monet No. 257,
+4708049,060000,CSD,Lancer,
+4708028,060000,CSD,Pittville No. 169,
+4708029,060000,CSD,Hazlet,
+4708036,060000,CSD,Success,
+4708004,060000,CSD,Swift Current,
+4708094,060000,CSD,Elrose,
+4708024,060000,CSD,Fox Valley No. 171,
+4708047,060000,CSD,Shackleton,
+4708061,060000,CSD,Deer Forks No. 232,
+4708062,060000,CSD,Burstall,
+4708012,060000,CSD,Tompkins,
+4708031,060000,CSD,Riverside No. 168,
+4708048,060000,CSD,Abbey,
+4708044,060000,CSD,Kyle,
+4708022,060000,CSD,Richmound,
+4708026,060000,CSD,Fox Valley,
+4708016,060000,CSD,Big Stick No. 141,
+4708011,060000,CSD,Gull Lake,
+4708074,060000,CSD,Snipe Lake No. 259,
+4708056,060000,CSD,Happyland No. 231,
+4709,060000,CD,Division No. 9,
+4709062,060000,CSD,Preeceville No. 334,
+4709065,060000,CSD,Endeavour,
+4709056,060000,CSD,Rama,
+4709076,060000,CSD,Arran,
+4709029,060000,CSD,Good Lake No. 274,
+4709039,060000,CSD,Kamsack,
+4709824,060000,CSD,Keeseekoose 66-CA-04,
+4709060,060000,CSD,Hazel Dell No. 335,
+4709049,060000,CSD,Buchanan No. 304,
+4709067,060000,CSD,Clayton No. 333,
+4709023,060000,CSD,Insinger No. 275,
+4709006,060000,CSD,Wallace No. 243,
+4709032,060000,CSD,Canora,
+4709071,060000,CSD,Hyas,
+4709024,060000,CSD,Sheho,
+4709012,060000,CSD,Yorkton,
+4709002,060000,CSD,Calder,
+4709075,060000,CSD,Livingston No. 331,
+4709058,060000,CSD,Invermay,
+4709072,060000,CSD,Norquay,
+4709042,060000,CSD,St. Philips No. 301,
+4709820,060000,CSD,Keeseekoose 66,
+4709001,060000,CSD,Calder No. 241,
+4709054,060000,CSD,Invermay No. 305,
+4709066,060000,CSD,Sturgis,
+4709028,060000,CSD,Theodore,
+4709016,060000,CSD,Springside,
+4709828,060000,CSD,Keeseekoose 66-CA-06,
+4709011,060000,CSD,Orkney No. 244,
+4709009,060000,CSD,Rhein,
+4709061,060000,CSD,Lintlaw,
+4709046,060000,CSD,Keys No. 303,
+4709044,060000,CSD,Pelly,
+4709819,060000,CSD,Cote 64,
+4709019,060000,CSD,Garry No. 245,
+4709038,060000,CSD,Togo,
+4709826,060000,CSD,Keeseekoose 66-CA-05,
+4709037,060000,CSD,Cote No. 271,
+4709064,060000,CSD,Preeceville,
+4709821,060000,CSD,The Key 65,
+4709832,060000,CSD,Keeseekoose 66-KE-05,
+4709822,060000,CSD,Keeseekoose 66A,
+4709033,060000,CSD,Sliding Hills No. 273,
+4709069,060000,CSD,Stenen,
+4709830,060000,CSD,Keeseekoose 66-KE-04,
+4709014,060000,CSD,Ebenezer,
+4709053,060000,CSD,Buchanan,
+4710,060000,CD,Division No. 10,
+4710826,060000,CSD,Fishing Lake 89,
+4710847,060000,CSD,Muskowekwan 85-10,
+4710848,060000,CSD,Muskowekwan 85-1,
+4710047,060000,CSD,Wynyard,
+4710043,060000,CSD,Elfros,
+4710031,060000,CSD,Emerald No. 277,
+4710825,060000,CSD,Poorman 88,
+4710008,060000,CSD,Kellross No. 247,
+4710849,060000,CSD,Muskowekwan 85-8,
+4710014,060000,CSD,Touchwood No. 248,
+4710011,060000,CSD,Leross,
+4710846,060000,CSD,Muskowekwan 85-27,
+4710056,060000,CSD,Leroy No. 339,
+4710054,060000,CSD,Jansen,
+4710051,060000,CSD,Dafoe,
+4710036,060000,CSD,Foam Lake No. 276,
+4710828,060000,CSD,Beardy's and Okemasis 96 and 97A,
+4710012,060000,CSD,Lestock,
+4710842,060000,CSD,Muskowekwan 85-23,
+4710035,060000,CSD,Leslie Beach,
+4710824,060000,CSD,Day Star 87,
+4710061,060000,CSD,Lakeside No. 338,
+4710071,060000,CSD,Sasman No. 336,
+4710854,060000,CSD,Fishing Lake 89A,
+4710852,060000,CSD,Muskowekwan 85-31,
+4710823,060000,CSD,Gordon 86,
+4710845,060000,CSD,Muskowekwan 85-22,
+4710844,060000,CSD,Muskowekwan 85-24,
+4710836,060000,CSD,Muskowekwan 85-33,
+4710003,060000,CSD,Ituna Bon Accord No. 246,
+4710834,060000,CSD,Muskowekwan 85-26,
+4710840,060000,CSD,Muskowekwan 85-29,
+4710068,060000,CSD,Wadena,
+4710027,060000,CSD,Raymore,
+4710028,060000,CSD,Quinton,
+4710850,060000,CSD,Muskowekwan 85-15,
+4710066,060000,CSD,Lakeview No. 337,
+4710072,060000,CSD,Margo,
+4710024,060000,CSD,Mount Hope No. 279,
+4710029,060000,CSD,Punnichy,
+4710838,060000,CSD,Muskowekwan 85-28,
+4710832,060000,CSD,Muskowekwan 85-17,
+4710004,060000,CSD,Ituna,
+4710052,060000,CSD,Prairie Rose No. 309,
+4710062,060000,CSD,Watson,
+4710058,060000,CSD,Leroy,
+4710843,060000,CSD,Muskowekwan 85-12,
+4710009,060000,CSD,Kelliher,
+4710002,060000,CSD,Hubbard,
+4710022,060000,CSD,Semans,
+4710064,060000,CSD,Quill Lake,
+4710041,060000,CSD,Elfros No. 307,
+4710034,060000,CSD,Chorney Beach,
+4710046,060000,CSD,Big Quill No. 308,
+4710038,060000,CSD,Foam Lake,
+4710822,060000,CSD,Muskowekwan 85,
+4710851,060000,CSD,Muskowekwan 85-2A,
+4711,060000,CD,Division No. 11,
+4711061,065521,CSD,Dundurn No. 314,
+4711039,060000,CSD,Wood Creek No. 281,
+4711022,060000,CSD,Strongfield,
+4711016,065542,CSD,Willner No. 253,
+4711008,065543,CSD,Imperial,
+4711014,065541,CSD,Davidson,
+4711065,065432,CSD,Corman Park No. 344,
+4711066,065100,CSD,Saskatoon,
+4711069,065453,CSD,Blucher No. 343,
+4711079,065451,CSD,Colonsay,
+4711041,060000,CSD,Simpson,
+4711021,065524,CSD,Loreburn,
+4711067,065432,CSD,Langham,
+4711068,065432,CSD,Warman,
+4711076,065451,CSD,Colonsay No. 342,
+4711074,065453,CSD,Elstow,
+4711046,060000,CSD,Usborne No. 310,
+4711027,060000,CSD,Outlook,
+4711054,060000,CSD,Manitou Beach,
+4711029,060000,CSD,Glenside,
+4711003,060000,CSD,Last Mountain Valley No. 250,
+4711009,060000,CSD,Liberty,
+4711073,060000,CSD,Dalmeny,
+4711070,065432,CSD,Martensville,
+4711091,060000,CSD,Viscount No. 341,
+4711072,065453,CSD,Allan,
+4711048,060000,CSD,Drake,
+4711036,060000,CSD,Kenaston,
+4711031,060000,CSD,Rosedale No. 283,
+4711028,060000,CSD,Broderick,
+4711024,065524,CSD,Hawarden,
+4711002,060000,CSD,Duval,
+4711092,060000,CSD,Viscount,
+4711078,060000,CSD,Meacham,
+4711064,060000,CSD,Shields,
+4711063,060000,CSD,Dundurn,
+4711060,060000,CSD,Thode,
+4711018,065524,CSD,Loreburn No. 254,
+4711042,060000,CSD,Wreford No. 280,
+4711019,065524,CSD,Elbow,
+4711004,060000,CSD,Govan,
+4711007,060000,CSD,Etters Beach,
+4711044,060000,CSD,Nokomis,
+4711096,060000,CSD,Wolverine No. 340,
+4711077,065453,CSD,Clavet,
+4711828,060000,CSD,Whitecap,
+4711071,065453,CSD,Bradwell,
+4711058,060000,CSD,Zelma,
+4711032,060000,CSD,Hanley,
+4711034,060000,CSD,McCraney No. 282,
+4711006,060000,CSD,Big Arm No. 251,
+4711053,060000,CSD,Watrous,
+4711075,060000,CSD,Osler,
+4711059,060000,CSD,Lost River No. 313,
+4711052,060000,CSD,Morris No. 312,
+4711094,060000,CSD,Plunkett,
+4711026,060000,CSD,Rudy No. 284,
+4711056,060000,CSD,Young,
+4711049,060000,CSD,Lanigan,
+4711038,060000,CSD,Bladworth,
+4711011,060000,CSD,Arm River No. 252,
+4712,060000,CD,Division No. 12,
+4712833,060000,CSD,Sweet Grass 113,
+4712050,060000,CSD,Perdue No. 346,
+4712059,065434,CSD,Asquith,
+4712072,060000,CSD,Rosemount No. 378,
+4712031,060000,CSD,Tessier,
+4712032,060000,CSD,Harris,
+4712006,066364,CSD,Rosetown,
+4712079,066260,CSD,Battleford,
+4712034,060000,CSD,Marriott No. 317,
+4712056,065434,CSD,Delisle,
+4712020,060000,CSD,Fertile Valley No. 285,
+4712014,060000,CSD,Wiseton,
+4712001,060000,CSD,Pleasant Valley No. 288,
+4712830,060000,CSD,Mosquito 109,
+4712058,065434,CSD,Vanscoy,
+4712008,060000,CSD,Zealandia,
+4712042,060000,CSD,Biggar No. 347,
+4712837,060000,CSD,Sweet Grass 113-M16,
+4712829,060000,CSD,Red Pheasant 108,
+4712054,060000,CSD,Vanscoy No. 345,
+4712051,060000,CSD,Perdue,
+4712011,060000,CSD,Milden No. 286,
+4712012,060000,CSD,Milden,
+4712022,060000,CSD,Conquest,
+4712016,060000,CSD,Dinsmore,
+4712078,060000,CSD,Battle River No. 438,
+4712832,060000,CSD,Grizzly Bear's Head 110 and Lean Man 111,
+4712046,060000,CSD,Biggar,
+4712029,060000,CSD,Harris No. 316,
+4712026,060000,CSD,Montrose No. 315,
+4712019,060000,CSD,Macrorie,
+4712064,060000,CSD,Eagle Creek No. 376,
+4712038,060000,CSD,Mountain View No. 318,
+4712004,060000,CSD,St. Andrews No. 287,
+4712069,060000,CSD,Glenside No. 377,
+4712052,060000,CSD,Kinley,
+4713,060000,CD,Division No. 13,
+4713079,060000,CSD,Manitou Lake No. 442,
+4713096,060000,CSD,Cut Knife No. 439,
+4713049,060000,CSD,Eye Hill No. 382,
+4713038,060000,CSD,Mariposa No. 350,
+4713011,060000,CSD,Milton No. 292,
+4713004,060000,CSD,Netherhill,
+4713835,060000,CSD,Poundmaker 114,
+4713069,060000,CSD,Wilkie,
+4713028,060000,CSD,Winslow No. 319,
+4713006,060000,CSD,Kindersley No. 290,
+4713836,060000,CSD,Little Pine 116,
+4713044,060000,CSD,Luseland,
+4713021,060000,CSD,Major,
+4713042,060000,CSD,Kerrobert,
+4713002,060000,CSD,Brock,
+4713091,060000,CSD,Marsden,
+4713098,060000,CSD,Cut Knife,
+4713059,060000,CSD,Tramping Lake No. 380,
+4713062,060000,CSD,Scott,
+4713054,060000,CSD,Denzil,
+4713009,060000,CSD,Flaxcombe,
+4713051,060000,CSD,Macklin,
+4713056,060000,CSD,Grass Lake No. 381,
+4713074,060000,CSD,Unity,
+4713033,060000,CSD,Ruthilda,
+4713041,060000,CSD,Progress No. 351,
+4713064,060000,CSD,Reford No. 379,
+4713046,060000,CSD,Heart's Hill No. 352,
+4713032,060000,CSD,Grandview No. 349,
+4713019,060000,CSD,Prairiedale No. 321,
+4713029,060000,CSD,Dodsland,
+4713022,060000,CSD,Smiley,
+4713008,060000,CSD,Kindersley,
+4713026,060000,CSD,Coleville,
+4713094,060000,CSD,Neilburg,
+4713068,060000,CSD,Buffalo No. 409,
+4713078,060000,CSD,Senlac,
+4713014,060000,CSD,Marengo,
+4713039,060000,CSD,Tramping Lake,
+4713076,060000,CSD,Senlac No. 411,
+4713072,060000,CSD,Round Valley No. 410,
+4713053,060000,CSD,Primate,
+4713067,060000,CSD,Landis,
+4713016,060000,CSD,Antelope Park No. 322,
+4713031,060000,CSD,Plenty,
+4713092,060000,CSD,Hillsdale No. 440,
+4713024,060000,CSD,Oakdale No. 320,
+4714,060000,CD,Division No. 14,
+4714068,060000,CSD,Tobin Lake,
+4714043,060000,CSD,Tisdale No. 427,
+4714030,060000,CSD,Pleasantdale,
+4714007,060000,CSD,Porcupine Plain,
+4714026,060000,CSD,Spalding No. 368,
+4714036,060000,CSD,Archerwill,
+4714092,060000,CSD,Choiceland,
+4714839,060000,CSD,Shoal Lake 28A,
+4714056,060000,CSD,Connaught No. 457,
+4714041,060000,CSD,Bjorkdale,
+4714023,060000,CSD,Ponass Lake No. 367,
+4714840,060000,CSD,Red Earth 29,
+4714077,060000,CSD,Torch River No. 488,
+4714001,060000,CSD,Hudson Bay No. 394,
+4714079,060000,CSD,White Fox,
+4714076,060000,CSD,Nipawin,
+4714074,060000,CSD,Codette,
+4714053,060000,CSD,Willow Creek No. 458,
+4714062,060000,CSD,Arborfield,
+4714038,060000,CSD,Bjorkdale No. 426,
+4714842,060000,CSD,Kinistin 91,
+4714047,060000,CSD,Star City No. 428,
+4714039,060000,CSD,Mistatim,
+4714032,060000,CSD,Naicam,
+4714021,060000,CSD,Kelvington No. 366,
+4714067,060000,CSD,Moose Range No. 486,
+4714846,060000,CSD,Opaskwayak Cree Nation 27A (Carrot River),
+4714069,060000,CSD,Carrot River,
+4714049,060000,CSD,Star City,
+4714004,060000,CSD,Hudson Bay,
+4714072,060000,CSD,Nipawin No. 487,
+4714073,060000,CSD,Aylsham,
+4714841,060000,CSD,Yellowquill 90,
+4714022,060000,CSD,Kelvington,
+4714059,060000,CSD,Arborfield No. 456,
+4714058,060000,CSD,Ridgedale,
+4714061,060000,CSD,Zenon Park,
+4714048,060000,CSD,Valparaiso,
+4714006,060000,CSD,Porcupine No. 395,
+4714028,060000,CSD,Spalding,
+4714025,060000,CSD,Fosston,
+4714009,060000,CSD,Weekes,
+4714093,060000,CSD,Smeaton,
+4714091,060000,CSD,Love,
+4714845,060000,CSD,Carrot River 29A,
+4714051,060000,CSD,Melfort,
+4714044,060000,CSD,Tisdale,
+4714034,060000,CSD,Barrier Valley No. 397,
+4714024,060000,CSD,Rose Valley,
+4714035,060000,CSD,Pleasantdale No. 398,
+4715,060000,CD,Division No. 15,
+4715099,060000,CSD,Paddockwood No. 520,
+4715847,060000,CSD,Muskoday First Nation,
+4715845,060000,CSD,Beardy's 97 and Okemasis 96,
+4715861,060000,CSD,One Arrow 95-1D,
+4715018,065441,CSD,Aberdeen No. 373,
+4715041,060000,CSD,Cudworth,
+4715006,060000,CSD,Lake Lenore,
+4715012,060000,CSD,Bruno,
+4715085,060000,CSD,Albertville,
+4715092,060000,CSD,Meath Park,
+4715064,060000,CSD,Prince Albert No. 461,
+4715071,060000,CSD,Kinistino No. 459,
+4715067,060000,CSD,Birch Hills No. 460,
+4715029,060000,CSD,Laird,
+4715038,060000,CSD,Alvena,
+4715002,060000,CSD,Englefeld,
+4715859,060000,CSD,Beardy's and Okemasis 96 and 97B,
+4715036,060000,CSD,Fish Creek No. 402,
+4715072,060000,CSD,Weldon,
+4715052,060000,CSD,Beatty,
+4715848,060000,CSD,Wahpaton 94A,
+4715057,060000,CSD,St. Louis No. 431,
+4715039,060000,CSD,Hoodoo No. 401,
+4715028,060000,CSD,Waldheim,
+4715048,060000,CSD,Lake Lenore No. 399,
+4715017,060000,CSD,Vonda,
+4715045,060000,CSD,Pilger,
+4715004,060000,CSD,Muenster,
+4715862,060000,CSD,One Arrow 95-1A,
+4715850,060000,CSD,Cumberland 100A,
+4715849,060000,CSD,James Smith 100,
+4715091,060000,CSD,Weirdale,
+4715066,060000,CSD,Prince Albert,
+4715068,060000,CSD,Birch Hills,
+4715042,060000,CSD,Wakaw,
+4715003,060000,CSD,St. Gregor,
+4715070,060000,CSD,Candle Lake,
+4715853,060000,CSD,Montreal Lake 106B,
+4715076,060000,CSD,Christopher Lake,
+4715846,060000,CSD,Opawakoscikan,
+4715061,060000,CSD,Duck Lake No. 463,
+4715026,060000,CSD,Laird No. 404,
+4715043,060000,CSD,Wakaw Lake,
+4715857,060000,CSD,One Arrow 95-1C,
+4715047,060000,CSD,Middle Lake,
+4715007,060000,CSD,Humboldt No. 370,
+4715005,060000,CSD,Annaheim,
+4715098,060000,CSD,Paddockwood,
+4715075,060000,CSD,Lakeland No. 521,
+4715054,060000,CSD,Invergordon No. 430,
+4715062,060000,CSD,Duck Lake,
+4715034,060000,CSD,Hague,
+4715014,060000,CSD,Grant No. 372,
+4715049,060000,CSD,St. Brieux,
+4715008,060000,CSD,Humboldt,
+4715079,060000,CSD,Garden River No. 490,
+4715031,060000,CSD,Rosthern No. 403,
+4715051,060000,CSD,Flett's Springs No. 429,
+4715844,060000,CSD,One Arrow 95,
+4715001,060000,CSD,St. Peter No. 369,
+4715094,060000,CSD,Buckland No. 491,
+4715059,060000,CSD,St. Louis,
+4715074,060000,CSD,Kinistino,
+4715032,060000,CSD,Rosthern,
+4715027,060000,CSD,Hepburn,
+4715044,060000,CSD,Three Lakes No. 400,
+4715046,060000,CSD,St. Benedict,
+4715019,065441,CSD,Aberdeen,
+4715016,060000,CSD,Prud'Homme,
+4715851,060000,CSD,Little Red River 106C,
+4715011,060000,CSD,Bayne No. 371,
+4716,060000,CD,Division No. 16,
+4716863,060000,CSD,Chitek Lake 191,
+4716894,060000,CSD,Pelican Lake 191A,
+4716856,060000,CSD,Sturgeon Lake 101,
+4716047,060000,CSD,Shellbrook,
+4716023,060000,CSD,Douglas No. 436,
+4716891,060000,CSD,Muskeg Lake 102D,
+4716016,060000,CSD,Blaine Lake,
+4716003,060000,CSD,Ruddell,
+4716008,060000,CSD,Great Bend No. 405,
+4716880,060000,CSD,Pelican Lake 191B,
+4716063,060000,CSD,Medstead,
+4716002,060000,CSD,Denholm,
+4716855,060000,CSD,Mistawasis 103,
+4716890,060000,CSD,Muskeg Lake 102G,
+4716029,066260,CSD,North Battleford,
+4716005,060000,CSD,Mayfield No. 406,
+4716053,060000,CSD,Prince Albert National Park,
+4716077,060000,CSD,Chitek Lake,
+4716056,060000,CSD,Spiritwood No. 496,
+4716862,060000,CSD,Witchekan Lake 117,
+4716860,060000,CSD,Ahtahkakoop 104,
+4716051,060000,CSD,Canwood No. 494,
+4716043,060000,CSD,Pebble Baye,
+4716870,060000,CSD,Lucky Man,
+4716886,060000,CSD,Muskeg Lake 102E,
+4716042,060000,CSD,Leask,
+4716024,060000,CSD,Speers,
+4716857,060000,CSD,Little Red River 106D,
+4716057,060000,CSD,Shell Lake,
+4716041,060000,CSD,Leask No. 464,
+4716027,066260,CSD,North Battleford,
+4716026,060000,CSD,Richard,
+4716892,060000,CSD,Sweet Grass 113-L6,
+4716011,060000,CSD,Borden,
+4716061,060000,CSD,Leoville,
+4716054,060000,CSD,Debden,
+4716034,060000,CSD,Rabbit Lake,
+4716059,060000,CSD,Big Shell,
+4716044,060000,CSD,Parkside,
+4716854,060000,CSD,Muskeg Lake Cree Nation 102,
+4716013,060000,CSD,Blaine Lake No. 434,
+4716022,060000,CSD,Hafford,
+4716072,060000,CSD,Big River,
+4716882,060000,CSD,Witchekan Lake 117D,
+4716058,060000,CSD,Spiritwood,
+4716038,060000,CSD,Meeting Lake No. 466,
+4716052,060000,CSD,Canwood,
+4716075,060000,CSD,Big River No. 555,
+4716858,060000,CSD,Big River 118,
+4716861,060000,CSD,Saulteaux 159A,
+4716046,060000,CSD,Shellbrook No. 493,
+4716033,060000,CSD,Round Hill No. 467,
+4716028,066271,CSD,North Battleford No. 437,
+4716872,060000,CSD,Muskeg Lake 102B,
+4716018,060000,CSD,Redberry No. 435,
+4716014,060000,CSD,Marcelin,
+4716004,060000,CSD,Maymont,
+4716062,060000,CSD,Medstead No. 497,
+4716888,060000,CSD,Muskeg Lake 102F,
+4716019,060000,CSD,Krydor,
+4716009,060000,CSD,Radisson,
+4716060,060000,CSD,Echo Bay,
+4717,060000,CD,Division No. 17,
+4717062,060000,CSD,Beaver River No. 622,
+4717810,060000,CSD,Ministikwan 161A,
+4717808,060000,CSD,Makwa Lake 129,
+4717819,060000,CSD,Meadow Lake 105A,
+4717801,060000,CSD,Seekaskootch 119,
+4717022,060000,CSD,Wilton No. 472,
+4717048,060000,CSD,Glaslyn,
+4717018,060000,CSD,Maidstone,
+4717813,060000,CSD,Saulteaux 159,
+4717004,060000,CSD,Metinota,
+4717039,060000,CSD,Mervin,
+4717809,060000,CSD,Ministikwan 161,
+4717805,060000,CSD,Flying Dust First Nation 105 (Meadow Lake 105),
+4717052,060000,CSD,Meadow Lake,
+4717028,060000,CSD,Britannia No. 502,
+4717011,060000,CSD,Edam,
+4717008,060000,CSD,Turtle River No. 469,
+4717811,060000,CSD,Big Island Lake Cree Territory,
+4717055,060000,CSD,Dorintosh,
+4717820,060000,CSD,Onion Lake 119-1,
+4717058,060000,CSD,Loon Lake,
+4717013,060000,CSD,Paynton No. 470,
+4717024,060000,CSD,Lashburn,
+4717067,060000,CSD,Pierceland,
+4717032,060000,CSD,Frenchman Butte No. 501,
+4717045,060000,CSD,Mervin No. 499,
+4717006,060000,CSD,Meota,
+4717825,060000,CSD,Min-A-He-Quo-Sis 116C,
+4717054,060000,CSD,Meadow Lake No. 588,
+4717066,060000,CSD,Goodsoil,
+4717057,060000,CSD,Makwa,
+4717802,060000,CSD,Makaoo (Part) 120,
+4717036,060000,CSD,St. Walburg,
+4717047,060000,CSD,Parkdale No. 498,
+4717005,060000,CSD,Aquadeo,
+4717019,060000,CSD,Waseca,
+4717053,060000,CSD,Greig Lake,
+4717807,060000,CSD,Makwa Lake 129B,
+4717815,060000,CSD,Makwa Lake 129C,
+4717042,060000,CSD,Kivimaa-Moonlight Bay,
+4717803,060000,CSD,Thunderchild First Nation 115B,
+4717029,060000,CSD,Lloydminster (Part),
+4717816,060000,CSD,Eagles Lake 165C,
+4717034,060000,CSD,Paradise Hill,
+4717804,060000,CSD,Thunderchild First Nation 115C,
+4717041,060000,CSD,Turtleford,
+4717001,060000,CSD,Meota No. 468,
+4717056,060000,CSD,Loon Lake No. 561,
+4717806,060000,CSD,Waterhen 130,
+4717017,060000,CSD,Eldon No. 471,
+4717026,060000,CSD,Marshall,
+4717812,060000,CSD,Moosomin 112B,
+4717002,060000,CSD,Cochin,
+4717014,060000,CSD,Paynton,
+4718,060000,CD,Division No. 18,
+4718824,060000,CSD,Fond du Lac 227,
+4718846,060000,CSD,Fond du Lac 232,
+4718072,060000,CSD,Michel Village,
+4718822,060000,CSD,Southend 200,
+4718033,060000,CSD,Beauval,
+4718844,060000,CSD,Little Hills 158,
+4718849,060000,CSD,Little Hills 158B,
+4718055,060000,CSD,Pelican Narrows,
+4718051,060000,CSD,Creighton,
+4718828,060000,CSD,Chicken 224,
+4718854,060000,CSD,Kinoosao-Thomas Clark 204,
+4718817,060000,CSD,Canoe Lake 165,
+4718823,060000,CSD,Chicken 225,
+4718100,060000,CSD,Stony Rapids,
+4718818,060000,CSD,Buffalo River Dene Nation 193 (Peter Pond Lake 193),
+4718030,060000,CSD,Jans Bay,
+4718808,060000,CSD,Morin Lake 217,
+4718069,060000,CSD,Patuanak,
+4718807,060000,CSD,La Plonge 192,
+4718062,060000,CSD,Missinipe,
+4718813,060000,CSD,Four Portages 157C,
+4718812,060000,CSD,Kitsakie 156B,
+4718023,060000,CSD,Dore Lake,
+4718021,060000,CSD,Green Lake,
+4718802,060000,CSD,Montreal Lake 106,
+4718067,060000,CSD,Île-à-la-Crosse,
+4718832,060000,CSD,Lac La Hache 220,
+4718090,060000,CSD,"Division No. 18, Unorganized",
+4718819,060000,CSD,Turnor Lake 193B,
+4718829,060000,CSD,Clearwater River Dene Band 223,
+4718028,060000,CSD,Cole Bay,
+4718809,060000,CSD,Lac La Ronge 156,
+4718074,060000,CSD,La Loche,
+4718070,060000,CSD,Buffalo Narrows,
+4718058,060000,CSD,Sandy Bay,
+4718015,060000,CSD,Weyakwin,
+4718049,060000,CSD,Denare Beach,
+4718821,060000,CSD,Sturgeon Weir 184F,
+4718065,060000,CSD,Pinehouse,
+4718075,060000,CSD,Turnor Lake,
+4718071,060000,CSD,St. George's Hill,
+4718803,060000,CSD,Stanley 157,
+4718041,060000,CSD,La Ronge,
+4718052,060000,CSD,Flin Flon (Part),
+4718801,060000,CSD,Cumberland House Cree Nation 20,
+4718839,060000,CSD,Clearwater River Dene 222,
+4718833,060000,CSD,Fond du Lac 229,
+4718847,060000,CSD,Fond du Lac 231,
+4718814,060000,CSD,Wapachewunak 192D,
+4718825,060000,CSD,Brabant Lake,
+4718831,060000,CSD,Grandmother's Bay 219,
+4718811,060000,CSD,Sucker River 156C (Nemebien River 156C),
+4718042,060000,CSD,Air Ronge,
+4718810,060000,CSD,Potato River 156A,
+4718820,060000,CSD,Pelican Narrows 184B,
+4718852,060000,CSD,Kimosom Pwatinahk 203 (Deschambault Lake),
+4718012,060000,CSD,Timber Bay,
+4718005,060000,CSD,Cumberland House,
+46,050000,PT,Manitoba,
+4601,052600-053300-053200-053100,CD,Division No. 1,
+4601057,053211,CSD,Lac du Bonnet,
+4601051,053221,CSD,Pinawa,
+4601035,052652,CSD,Stuartburn,
+4601075,053140,CSD,Powerview-Pine Falls,
+4601078,052432,CSD,Victoria Beach,
+4601039,053320-053330,CSD,Piney,
+4601043,053212-053241-053242,CSD,Reynolds,
+4601079,053243-055241,CSD,Shoal Lake (Part) 40,
+4601060,053211,CSD,Lac du Bonnet,
+4601082,053243-055241,CSD,Shoal Lake (Part) 39A,
+4601094,052600-053300-053200-053100,CSD,"Division No. 1, Unorganized",
+4601046,053222,CSD,Whitemouth,
+4601071,051140-052411-053140-053150,CSD,Alexander,
+4601070,053310,CSD,Buffalo Point 36,
+4602,052500-052300-052200-052400,CD,Division No. 2,
+4602044,052630,CSD,Steinbach,
+4602057,052641,CSD,Ste. Anne,
+4602053,052642,CSD,La Broquerie,
+4602061,052641,CSD,Ste. Anne,
+4602037,052620,CSD,St-Pierre-Jolys,
+4602027,052651,CSD,Roseau River 2,
+4602041,052630,CSD,Hanover,
+4602075,052611,CSD,Ritchot,
+4602046,052630,CSD,Niverville,
+4602032,052620,CSD,De Salaberry,
+4602069,052612,CSD,Taché,
+4602025,052651,CSD,Franklin,
+4602026,050000,CSD,Roseau Rapids 2A,
+4603,052500-052300,CD,Division No. 3,
+4603072,052332,CSD,Dufferin,
+4603047,052560,CSD,Stanley,
+4603050,052560,CSD,Winkler,
+4603065,052510,CSD,Morris,
+4603058,052520,CSD,Thompson,
+4603040,052550,CSD,Altona,
+4603033,050000,CSD,Emerson,
+4603067,052510,CSD,Morris,
+4603062,052530,CSD,Roland,
+4603030,052540,CSD,Montcalm,
+4603038,052550,CSD,Gretna,
+4603053,052560,CSD,Morden,
+4603074,052332,CSD,Carman,
+4603042,052550,CSD,Plum Coulee,
+4603036,052550,CSD,Rhineland,
+4604,051400-052500,CD,Division No. 4,
+4604039,051432,CSD,Louise,
+4604053,051431,CSD,Cartwright,
+4604046,051432,CSD,Crystal City,
+4604035,051442,CSD,Manitou,
+4604044,051432,CSD,Pilot Mound,
+4604063,051441,CSD,Lorne,
+4604068,051441,CSD,Swan Lake 7,
+4604066,051441,CSD,Somerset,
+4604057,051422,CSD,Argyle,
+4604033,051442,CSD,Pembina,
+4604051,051431,CSD,Roblin,
+4605,051300-051400,CD,Division No. 5,
+4605063,051312,CSD,Hartney,
+4605033,051340,CSD,Boissevain,
+4605047,051331,CSD,Waskada,
+4605070,051411-052252,CSD,Riverside,
+4605061,051312,CSD,Cameron,
+4605058,051311,CSD,Albert,
+4605050,051322,CSD,Arthur,
+4605037,051332,CSD,Winchester,
+4605031,051340,CSD,Morton,
+4605055,051321,CSD,Edward,
+4605043,051331,CSD,Brenda,
+4605025,051412,CSD,Killarney - Turtle Mountain,
+4605067,051313,CSD,Whitewater,
+4605076,051421,CSD,Strathcona,
+4605052,051322,CSD,Melita,
+4605039,051332,CSD,Deloraine,
+4606,051100,CD,Division No. 6,
+4606023,051160,CSD,Pipestone,
+4606028,051110,CSD,Wallace,
+4606040,051120,CSD,Sioux Valley Dakota Nation,
+4606034,051110,CSD,Virden,
+4606037,051120,CSD,Woodworth,
+4606018,051150,CSD,Oak Lake,
+4606030,051110,CSD,Elkhorn,
+4606029,051160,CSD,Canupawakpa Dakota First Nation (Oak Lake 59),
+4606015,051150-055121,CSD,Sifton,
+4607,051100-051200,CD,Division No. 7,
+4607062,051220,CSD,Brandon,
+4607041,051232,CSD,Glenboro,
+4607077,051130,CSD,Rivers,
+4607057,051140,CSD,Whitehead,
+4607071,051211,CSD,Elton,
+4607065,051231,CSD,North Cypress,
+4607075,051130,CSD,Daly,
+4607045,051213,CSD,Oakland,
+4607068,051231,CSD,Carberry,
+4607051,051170,CSD,Glenwood,
+4607053,051170,CSD,Souris,
+4607047,051213,CSD,Wawanesa,
+4607060,051212,CSD,Cornwallis,
+4607038,051232,CSD,South Cypress,
+4608,051200,CD,Division No. 8,
+4608054,055351,CSD,Lansdowne,
+4608031,051242,CSD,South Norfolk,
+4608061,055352,CSD,Gladstone,
+4608045,051241,CSD,North Norfolk,
+4608038,051242,CSD,Treherne,
+4608033,051242,CSD,Notre Dame de Lourdes,
+4608059,055352,CSD,Westbourne,
+4608069,055332,CSD,Sandy Bay 5,
+4608066,055353,CSD,Lakeview,
+4608042,051243,CSD,Victoria,
+4608048,051241,CSD,MacGregor,
+4608072,055340,CSD,Glenella,
+4609,052300,CD,Division No. 9,
+4609026,050000,CSD,Dakota Plains 6A,
+4609029,052311-052312,CSD,Portage la Prairie,
+4609024,052311-052312,CSD,Portage la Prairie,
+4609020,050000,CSD,St. Claude,
+4609025,050000,CSD,Long Plain (Part) 6,
+4609027,050000,CSD,Dakota Tipi 1,
+4609017,052331,CSD,Grey,
+4610,052200-053200-052400,CD,Division No. 10,
+4610052,052321,CSD,St. François Xavier,
+4610035,052340,CSD,Macdonald,
+4610043,052322,CSD,Cartier,
+4611,052100,CD,Division No. 11,
+4611042,052323,CSD,Headingley,
+4611040,052100,CSD,Winnipeg,
+4612,050000,CD,Division No. 12,
+4612054,052412-052422,CSD,Brokenhead,
+4612047,052431,CSD,Springfield,
+4612056,050000,CSD,Beausejour,
+4613,050000,CD,Division No. 13,
+4613062,052412-052422,CSD,Brokenhead 4,
+4613056,052412-052421,CSD,St. Clements,
+4613043,052242-052244,CSD,St. Andrews,
+4613032,052433,CSD,East St. Paul,
+4613037,052252,CSD,West St. Paul,
+4613049,050000,CSD,Dunnottar,
+4613047,052244,CSD,Selkirk,
+4614,052200,CD,Division No. 14,
+4614042,052241,CSD,Teulon,
+4614015,052251,CSD,Rosser,
+4614036,052241-052243,CSD,Rockwood,
+4614031,052232,CSD,Woodlands,
+4614039,052243,CSD,Stonewall,
+4615,055200,CD,Division No. 15,
+4615095,055111-055223,CSD,Park (South),
+4615071,050000,CSD,Rolling River 67,
+4615046,055233,CSD,Archie,
+4615041,055234,CSD,Miniota,
+4615038,055243,CSD,Hamiota,
+4615020,055261,CSD,Neepawa,
+4615078,055262,CSD,Rosedale,
+4615075,055254,CSD,Minnedosa,
+4615049,055211,CSD,Gambler 63 (Part),
+4615091,055253-055254,CSD,Clanwilliam,
+4615093,055253,CSD,Erickson,
+4615042,055234,CSD,Birdtail Creek 57,
+4615060,053243-055241,CSD,Shoal Lake,
+4615067,050000,CSD,Keeseekoowenin 61,
+4615057,055232,CSD,Birtle,
+4615033,055244,CSD,Blanshard,
+4615069,055251,CSD,Harrison,
+4615072,050000,CSD,Rolling River 67B,
+4615064,055242,CSD,Strathclair,
+4615023,055255,CSD,Odanah,
+4615029,055252,CSD,Rapid City,
+4615073,051313-055254,CSD,Minto,
+4615051,055231,CSD,St-Lazare,
+4615062,053243-055241,CSD,Shoal Lake,
+4615036,055243,CSD,Hamiota,
+4615018,055261,CSD,Langford,
+4615048,055231,CSD,Ellice,
+4615055,055232,CSD,Birtle,
+4615027,055252,CSD,Saskatchewan,
+4616,055100,CD,Division No. 16,
+4616046,055121-055132,CSD,Valley River 63A,
+4616019,055212,CSD,Silver Creek,
+4616025,055211,CSD,Gambler 63 (Part),
+4616049,055112,CSD,Shell River,
+4616052,055112,CSD,Roblin,
+4616017,055221,CSD,Waywayseecappo First Nation,
+4616032,055211,CSD,Russell,
+4616045,055113,CSD,Hillsburg,
+4616038,055114,CSD,Shellmouth-Boulton,
+4616024,055211,CSD,Russell,
+4616029,050000,CSD,Binscarth,
+4616002,055221,CSD,Rossburn,
+4616007,055221,CSD,Rossburn,
+4617,055100,CD,Division No. 17,
+4617050,055121,CSD,Dauphin,
+4617048,055121,CSD,Dauphin,
+4617076,055311,CSD,Lawrence,
+4617092,055100,CSD,"Division No. 17, Unorganized",
+4617067,055122,CSD,Ethelbert,
+4617057,055132,CSD,Grandview,
+4617053,055123,CSD,Gilbert Plains,
+4617071,055131,CSD,Mossey River,
+4617060,055132,CSD,Grandview,
+4617029,055322,CSD,Ebb and Flow 52,
+4617042,055321,CSD,Ste. Rose du Lac,
+4617073,055131,CSD,Winnipegosis,
+4617045,055133,CSD,Ochre River,
+4617040,055321,CSD,Ste. Rose,
+4617036,055331,CSD,McCreary,
+4617063,055122,CSD,Ethelbert,
+4617026,055312-055322-055332,CSD,Alonsa,
+4617034,055331,CSD,McCreary,
+4617055,055123,CSD,Gilbert Plains,
+4618,052200,CD,Division No. 18,
+4618077,054242,CSD,Riverton,
+4618068,054222-054241,CSD,Fisher,
+4618091,052200,CSD,"Division No. 18, Unorganized, East Part",
+4618074,054242,CSD,Arborg,
+4618067,054211,CSD,Fairford (Part) 50,
+4618057,054231,CSD,Siglunes,
+4618034,052223,CSD,Winnipeg Beach,
+4618071,054242,CSD,Bifrost,
+4618044,052212,CSD,Coldwell,
+4618060,054211-054212-054232,CSD,Grahamdale,
+4618063,050000,CSD,Little Saskatchewan 48,
+4618093,052200,CSD,"Division No. 18, Unorganized, West Part",
+4618052,052211,CSD,Eriksdale,
+4618037,052221-052222,CSD,Armstrong,
+4618031,052223,CSD,Gimli,
+4618055,052211,CSD,Dog Creek 46,
+4618040,052231,CSD,St. Laurent,
+4619,056100,CD,Division No. 19,
+4619072,056222,CSD,Shoal River Indian Reserve 65A,
+4619079,050000,CSD,Pauingassi First Nation,
+4619060,054211,CSD,Fairford (Part) 50,
+4619077,057310,CSD,Berens River 13,
+4619062,055121,CSD,Dauphin River 48A,
+4619052,057330,CSD,Bloodvein 12,
+4619068,055312,CSD,Crane River 51,
+4619056,050000,CSD,Fisher River 44,
+4619050,050000,CSD,Fort Alexander 3,
+4619082,050000,CSD,Chemawawin 3,
+4619059,054222,CSD,Peguis 1B,
+4619045,056100,CSD,"Division No. 19, Unorganized",
+4619070,050000,CSD,Pine Creek 66A,
+4619069,054120,CSD,Waterhen 45,
+4619051,054110-057320,CSD,Little Grand Rapids 14,
+4619058,050000,CSD,Fisher River 44A,
+4619054,050000,CSD,Black River 9,
+4619075,057200,CSD,Poplar River 16,
+4619065,050000,CSD,The Narrows 49,
+4619071,050000,CSD,Swan Lake 65C,
+4619061,054221,CSD,Jackhead 43,
+4619053,050000,CSD,Hole or Hollow Water 10,
+4620,056200,CD,Division No. 20,
+4620032,056221-056242,CSD,Mountain (South),
+4620048,056231,CSD,Swan River,
+4620039,056232,CSD,Minitonas,
+4620055,056221-056242,CSD,Mountain (North),
+4620069,056200,CSD,"Division No. 20, Unorganized, North Part",
+4620052,056231,CSD,Bowsman,
+4620066,056200,CSD,"Division No. 20, Unorganized, South Part",
+4620043,056231,CSD,Benito,
+4620041,056231,CSD,Swan River,
+4620037,056232,CSD,Minitonas,
+4621,056100,CD,Division No. 21,
+4621071,058510,CSD,Snow Lake,
+4621043,050000,CSD,Opaskwayak Cree Nation 21E,
+4621027,054110,CSD,Grand Rapids 33,
+4621078,056100,CSD,"Division No. 21, Unorganized",
+4621034,050000,CSD,Opaskwayak Cree Nation 21B,
+4621025,054110,CSD,Grand Rapids,
+4621052,050000,CSD,Kelsey,
+4621033,050000,CSD,Opaskwayak Cree Nation 21A,
+4621040,050000,CSD,Opaskwayak Cree Nation 21I,
+4621058,056120,CSD,Moose Lake 31A,
+4621029,050000,CSD,Chemawawin 2,
+4621035,050000,CSD,Opaskwayak Cree Nation 21C,
+4621064,058520,CSD,Flin Flon (Part),
+4621045,056110,CSD,The Pas,
+4622,058400,CD,Division No. 22,
+4622050,059510,CSD,Oxford House 24,
+4622055,050000,CSD,God's River 86A,
+4622064,050000,CSD,Ilford,
+4622801,050000,CSD,St. Theresa Point,
+4622051,057120,CSD,Cross Lake 19,
+4622800,050000,CSD,Wasagamack,
+4622065,058420,CSD,York Landing,
+4622067,057120,CSD,Cross Lake 19E,
+4622046,058400,CSD,"Division No. 22, Unorganized",
+4622063,058420,CSD,Split Lake (Part) 171,
+4622017,050000,CSD,Mystery Lake,
+4622049,059510,CSD,God's Lake 23,
+4622026,052520,CSD,Thompson,
+4622058,057150,CSD,Norway House 17,
+4622048,050000,CSD,Garden Hill First Nation,
+4622059,058440,CSD,Nelson House 170,
+4622052,057120,CSD,Cross Lake 19A,
+4622056,059510,CSD,Red Sucker Lake 1976,
+4623,059300,CD,Division No. 23,
+4623056,059100,CSD,Churchill,
+4623039,050000,CSD,Granville Lake,
+4623064,058330,CSD,Pukatawagan 198,
+4623022,059300,CSD,Gillam,
+4623060,058420,CSD,Split Lake (Part) 171,
+4623071,059400,CSD,Shamattawa 1,
+4623058,059100,CSD,Churchill 1,
+4623062,059300,CSD,"Division No. 23, Unorganized",
+4623025,059300,CSD,Gillam,
+4623034,058320,CSD,Leaf Rapids,
+4623027,050000,CSD,Fox Lake 2,
+4623047,058310,CSD,Lynn Lake,
+4623067,058100,CSD,Lac Brochet 197A,
+4623037,058410,CSD,South Indian Lake,
+4623065,058100,CSD,Brochet 197,
+35,040000,PT,Ontario,
+3501,043710-043720-043730-043740,CD,"Stormont, Dundas and Glengarry",
+3501050,043710-043720-043730-043740,CSD,North Glengarry,
+3501042,043710-043720-043730-043740,CSD,North Stormont,
+3501005,043710-043720-043730-043740,CSD,South Glengarry,
+3501011,043710-043720-043730-043740,CSD,South Stormont,
+3501007,043710-043720-043730-043740,CSD,Akwesasne (Part) 59,
+3501012,043720,CSD,Cornwall,
+3501020,043710-043720-043730-043740,CSD,South Dundas,
+3501030,043710-043720-043730-043740,CSD,North Dundas,
+3502,045100,CD,Prescott and Russell,
+3502001,045100,CSD,East Hawkesbury,
+3502048,045100,CSD,Russell,
+3502010,045100,CSD,Champlain,
+3502044,045100,CSD,Casselman,
+3502008,045100,CSD,Hawkesbury,
+3502023,045100,CSD,Alfred and Plantagenet,
+3502036,045100,CSD,Clarence-Rockland,
+3502025,045100,CSD,The Nation / La Nation,
+3506,045410-045420,CD,Ottawa,
+3506008,045410-045420,CSD,Ottawa,
+3507,043610-043620-043630-043640,CD,Leeds and Grenville,
+3507065,043610,CSD,North Grenville,
+3507014,043630,CSD,Elizabethtown-Kitley,
+3507015,043630,CSD,Brockville,
+3507017,043640,CSD,Front of Yonge,
+3507033,043620,CSD,Westport,
+3507042,043640,CSD,Athens,
+3507004,043640,CSD,Edwardsburgh/Cardinal,
+3507052,043610,CSD,Merrickville-Wolford,
+3507021,043640,CSD,Leeds and the Thousand Islands,
+3507040,043620,CSD,Rideau Lakes,
+3507008,043630,CSD,Prescott,
+3507024,043640,CSD,Gananoque,
+3507006,043630,CSD,Augusta,
+3509,045310-045320,CD,Lanark,
+3509001,045310-045320,CSD,Montague,
+3509004,045310,CSD,Smiths Falls,
+3509015,045310-045320,CSD,Tay Valley,
+3509028,045310-045320,CSD,Carleton Place,
+3509010,045310-045320,CSD,Drummond/North Elmsley,
+3509024,045310-045320,CSD,Beckwith,
+3509030,045310-045320,CSD,Mississippi Mills,
+3509039,045310-045320,CSD,Lanark Highlands,
+3509021,045310,CSD,Perth,
+3510,043410-043420,CD,Frontenac,
+3510045,043410-043420,CSD,North Frontenac,
+3510020,043410-043420,CSD,South Frontenac,
+3510035,043410-043420,CSD,Central Frontenac,
+3510010,043510,CSD,Kingston,
+3510005,043510,CSD,Frontenac Islands,
+3511,043510-043520-043410-043420-044610-046620,CD,Lennox and Addington,
+3511030,040000,CSD,Stone Mills,
+3511005,040000,CSD,Loyalist,
+3511015,043520,CSD,Greater Napanee,
+3511035,040000,CSD,Addington Highlands,
+3512,044610,CD,Hastings,
+3512065,040000,CSD,Carlow/Mayo,
+3512030,043420,CSD,Tweed,
+3512020,043420,CSD,Stirling-Rawdon,
+3512001,040000,CSD,Tyendinaga,
+3512002,040000,CSD,Deseronto,
+3512076,040000,CSD,Hastings Highlands,
+3512048,040000,CSD,Tudor and Cashel,
+3512054,040000,CSD,Wollaston,
+3512036,040000,CSD,Madoc,
+3512026,040000,CSD,Centre Hastings,
+3512061,040000,CSD,Bancroft,
+3512046,040000,CSD,Marmora and Lake,
+3512005,040000,CSD,Belleville,
+3512004,040000,CSD,Tyendinaga Mohawk Territory,
+3512051,040000,CSD,Limerick,
+3512015,043310,CSD,Quinte West,
+3512058,040000,CSD,Faraday,
+3513,043510-043520-043530,CD,Prince Edward,
+3513020,043510-043520-043530,CSD,Prince Edward,
+3514,043300-043310-043320,CD,Northumberland,
+3514014,043310-043320,CSD,Cramahe,
+3514020,043310-043320,CSD,Port Hope,
+3514004,043310-043320,CSD,Brighton,
+3514027,043310-043320,CSD,Alderville First Nation,
+3514019,043310-043320,CSD,Hamilton,
+3514021,043310-043320,CSD,Cobourg,
+3514024,043310-043320,CSD,Alnwick/Haldimand,
+3514045,043310-043320,CSD,Trent Hills,
+3515,044740,CD,Peterborough,
+3515015,040000,CSD,Smith-Ennismore-Lakefield,
+3515037,040000,CSD,North Kawartha,
+3515019,040000,CSD,Curve Lake First Nation 35,
+3515003,040000,CSD,Asphodel-Norwood,
+3515008,040000,CSD,Hiawatha First Nation,
+3515005,040000,CSD,Otonabee-South Monaghan,
+3515030,040000,CSD,Havelock-Belmont-Methuen,
+3515023,040000,CSD,Douro-Dummer,
+3515014,044740,CSD,Peterborough,
+3515013,040000,CSD,Cavan Monaghan,
+3515044,040000,CSD,Galway-Cavendish and Harvey,
+3516,044710-044730,CD,Kawartha Lakes,
+3516010,044710-044730,CSD,Kawartha Lakes,
+3518,043200-043210-043230,CD,Durham,
+3518005,043230,CSD,Ajax,
+3518001,043230,CSD,Pickering,
+3518017,043230,CSD,Clarington,
+3518020,044730,CSD,Scugog,
+3518029,043210,CSD,Uxbridge,
+3518022,044730,CSD,Mississaugas of Scugog Island,
+3518009,043230,CSD,Whitby,
+3518013,043230,CSD,Oshawa,
+3518039,043210,CSD,Brock,
+3519,043200,CD,York,
+3519049,043240,CSD,King,
+3519046,040000,CSD,Aurora,
+3519036,043240,CSD,Markham,
+3519038,043240,CSD,Richmond Hill,
+3519028,043240,CSD,Vaughan,
+3519070,043220,CSD,Georgina,
+3519054,040000,CSD,East Gwillimbury,
+3519044,040000,CSD,Whitchurch-Stouffville,
+3519048,043220,CSD,Newmarket,
+3519076,040000,CSD,Chippewas of Georgina Island First Nation,
+3520,043100,CD,Toronto,
+3520005,043100,CSD,Toronto,
+3521,046600,CD,Peel,
+3521010,046620,CSD,Brampton,
+3521005,046620,CSD,Mississauga,
+3521024,046610,CSD,Caledon,
+3522,046500-046510-046520-046530,CD,Dufferin,
+3522012,040000,CSD,Mono,
+3522021,040000,CSD,Shelburne,
+3522016,040000,CSD,Mulmur,
+3522019,040000,CSD,Melancthon,
+3522014,040000,CSD,Orangeville,
+3522001,040000,CSD,East Garafraxa,
+3522010,040000,CSD,East Luther Grand Valley,
+3522008,040000,CSD,Amaranth,
+3523,046410-046420,CD,Wellington,
+3523009,046420,CSD,Guelph/Eramosa,
+3523043,040000,CSD,Minto,
+3523033,040000,CSD,Mapleton,
+3523008,046420,CSD,Guelph,
+3523017,046420,CSD,Erin,
+3523025,046410-046420,CSD,Centre Wellington,
+3523001,040000,CSD,Puslinch,
+3523050,040000,CSD,Wellington North,
+3524,046600,CD,Halton,
+3524015,046630,CSD,Halton Hills,
+3524001,046640,CSD,Oakville,
+3524009,046630,CSD,Milton,
+3524002,046640,CSD,Burlington,
+0,046100,CD,Hamilton,
+3525005,046100,CSD,Hamilton,
+3526,046700-046710-046720,CD,Niagara,
+3526028,040000,CSD,Pelham,
+3526011,040000,CSD,Port Colborne,
+3526037,040000,CSD,Thorold,
+3526057,040000,CSD,Lincoln,
+3526032,046720,CSD,Welland,
+3526053,046710,CSD,St. Catharines,
+3526003,040000,CSD,Fort Erie,
+3526021,040000,CSD,West Lincoln,
+3526047,040000,CSD,Niagara-on-the-Lake,
+3526065,046710,CSD,Grimsby,
+3526043,046720,CSD,Niagara Falls,
+3526014,040000,CSD,Wainfleet,
+3528,041100-041200,CD,Haldimand-Norfolk,
+3528018,041200,CSD,Haldimand County,
+3528037,040000,CSD,Six Nations (Part) 40,
+3528035,040000,CSD,New Credit (Part) 40A,
+3528052,041100,CSD,Norfolk County,
+3529,041720,CD,Brant,
+3529021,041720,CSD,New Credit (Part) 40A,
+3529005,041720,CSD,Brant,
+3529006,041720,CSD,Brantford,
+3529020,041720,CSD,Six Nations (Part) 40,
+3530,046400-046430,CD,Waterloo,
+3530035,046430,CSD,Woolwich,
+3530027,046430,CSD,Wellesley,
+3530013,046430,CSD,Kitchener,
+3530020,046430,CSD,Wilmot,
+3530016,046430,CSD,Waterloo,
+3530004,046430,CSD,North Dumfries,
+3530010,046430,CSD,Cambridge,
+3531,046300,CD,Perth,
+3531016,046340,CSD,St. Marys,
+3531013,046340,CSD,Perth South,
+3531030,046320,CSD,Perth East,
+3531040,046320,CSD,North Perth,
+3531011,046340,CSD,Stratford,
+3531025,046340,CSD,West Perth,
+3532,041710,CD,Oxford,
+3532002,040000,CSD,Norwich,
+3532012,041710,CSD,South-West Oxford,
+3532004,041710,CSD,Tillsonburg,
+3532045,040000,CSD,Blandford-Blenheim,
+3532027,040000,CSD,Zorra,
+3532042,041710,CSD,Woodstock,
+3532038,040000,CSD,East Zorra-Tavistock,
+3532018,040000,CSD,Ingersoll,
+3534,041600,CD,Elgin,
+3534010,040000,CSD,Malahide,
+3534011,041610,CSD,Aylmer,
+3534042,041620,CSD,West Elgin,
+3534005,040000,CSD,Bayham,
+3534021,041610,CSD,St. Thomas,
+3534024,040000,CSD,Southwold,
+3534020,041610-041620,CSD,Central Elgin,
+3534030,040000,CSD,Dutton/Dunwich,
+3536,041410,CD,Chatham-Kent,
+3536020,041410,CSD,Chatham-Kent,
+3536029,040000,CSD,Moravian 47,
+3537,041420,CD,Essex,
+3537003,041420,CSD,Leamington,
+3537016,041420,CSD,Essex,
+3537048,040000,CSD,Tecumseh,
+3537034,040000,CSD,LaSalle,
+3537013,040000,CSD,Kingsville,
+3537001,040000,CSD,Pelee,
+3537064,040000,CSD,Lakeshore,
+3537039,041420,CSD,Windsor,
+3537028,040000,CSD,Amherstburg,
+3538,041310-041320,CD,Lambton,
+3538016,040000,CSD,Enniskillen,
+3538003,040000,CSD,St. Clair,
+3538007,040000,CSD,Dawn-Euphemia,
+3538031,040000,CSD,Point Edward,
+3538015,040000,CSD,Brooke-Alvinston,
+3538030,041320,CSD,Sarnia,
+3538040,041310-041320,CSD,Lambton Shores,
+3538043,040000,CSD,Warwick,
+3538056,040000,CSD,Kettle Point 44,
+3538025,041320,CSD,Sarnia 45,
+3538019,041320,CSD,Petrolia,
+3538018,040000,CSD,Oil Springs,
+3538035,040000,CSD,Plympton-Wyoming,
+3538004,040000,CSD,Walpole Island 46,
+3539,041510-041520,CD,Middlesex,
+3539018,040000,CSD,Munsee-Delaware Nation 1,
+3539015,041520,CSD,Strathroy-Caradoc,
+3539005,041520,CSD,Southwest Middlesex,
+3539021,040000,CSD,Oneida 41,
+3539036,041510,CSD,London,
+3539027,040000,CSD,Thames Centre,
+3539033,041510-041520,CSD,Middlesex Centre,
+3539047,040000,CSD,Adelaide Metcalfe,
+3539017,040000,CSD,Chippewas of the Thames First Nation 42,
+3539060,040000,CSD,Lucan Biddulph,
+3539002,040000,CSD,Newbury,
+3539041,041510-041520,CSD,North Middlesex,
+3540,046310-046330,CD,Huron,
+3540028,046330,CSD,Goderich,
+3540010,046330,CSD,Bluewater,
+3540025,046310-046330,CSD,Central Huron,
+3540055,046310,CSD,North Huron,
+3540063,040000,CSD,Ashfield-Colborne-Wawanosh,
+3540046,040000,CSD,Howick,
+3540050,040000,CSD,Morris-Turnberry,
+3540040,046310-046330,CSD,Huron East,
+3540005,046330,CSD,South Huron,
+3541,046210,CD,Bruce,
+3541069,046210,CSD,Northern Bruce Peninsula,
+3541032,040000,CSD,Brockton,
+3541045,046230,CSD,Saugeen Shores,
+3541055,046230,CSD,South Bruce Peninsula,
+3541057,046230,CSD,Saugeen 29,
+3541060,040000,CSD,Neyaashiinigmiing 27,
+3541043,040000,CSD,Arran-Elderslie,
+3541024,046230,CSD,Kincardine,
+3541004,046230,CSD,South Bruce,
+3541015,040000,CSD,Huron-Kinloss,
+3542,046200-046220-046240,CD,Grey,
+3542029,040000,CSD,Hanover,
+3542004,046220-046240,CSD,West Grey,
+3542037,040000,CSD,Chatsworth,
+3542045,046220,CSD,Blue Mountains,
+3542059,040000,CSD,Owen Sound,
+3542047,040000,CSD,Meaford,
+3542053,040000,CSD,Georgian Bluffs,
+3542015,046220-046240,CSD,Grey Highlands,
+3542005,040000,CSD,Southgate,
+3543,041100,CD,Simcoe,
+3543064,040000,CSD,Wasaga Beach,
+3543014,040000,CSD,Bradford West Gwillimbury,
+3543007,040000,CSD,New Tecumseth,
+3543050,040000,CSD,Mnjikaning First Nation 32 (Rama First Nation 32),
+3543015,040000,CSD,Severn,
+3543019,040000,CSD,Ramara,
+3543072,040000,CSD,Penetanguishene,
+3543052,044120,CSD,Orillia,
+3543069,040000,CSD,Christian Island 30,
+3543017,046510,CSD,Innisfil,
+3543005,040000,CSD,Clearview,
+3543074,044110,CSD,Midland,
+3543070,040000,CSD,Christian Island 30A,
+3543023,040000,CSD,Oro-Medonte,
+3543031,044130,CSD,Collingwood,
+3543042,044130,CSD,Barrie,
+3543021,040000,CSD,Essa,
+3543003,040000,CSD,Adjala-Tosorontio,
+3543071,040000,CSD,Tay,
+3543009,040000,CSD,Springwater,
+3543068,040000,CSD,Tiny,
+3544,044410-044420-044430-044440,CD,Muskoka,
+3544042,044410,CSD,Huntsville,
+3544071,040000,CSD,Wahta Mohawk Territory,
+3544073,040000,CSD,Moose Point 79,
+3544018,044440,CSD,Bracebridge,
+3544027,040000,CSD,Lake of Bays,
+3544053,044410-044420-044430-044440,CSD,Muskoka Lakes,
+3544065,040000,CSD,Georgian Bay,
+3544002,044440,CSD,Gravenhurst,
+3546,044500-044510-044520,CD,Haliburton,
+3546024,040000,CSD,Dysart and Others,
+3546005,040000,CSD,Highlands East,
+3546015,040000,CSD,Minden Hills,
+3546018,040000,CSD,Algonquin Highlands,
+3547,045230,CD,Renfrew,
+3547037,040000,CSD,Pikwakanagan (Golden Lake 39),
+3547046,040000,CSD,Horton,
+3547002,040000,CSD,Arnprior,
+3547020,040000,CSD,"Brudenell, Lyndoch and Raglan",
+3547030,040000,CSD,Madawaska Valley,
+3547008,040000,CSD,Greater Madawaska,
+3547075,040000,CSD,Laurentian Valley,
+3547003,040000,CSD,McNab/Braeside,
+3547048,045230,CSD,Renfrew,
+3547035,040000,CSD,Bonnechere Valley,
+3547076,045210,CSD,Petawawa,
+3547098,040000,CSD,"Head, Clara and Maria",
+3547064,045210,CSD,Pembroke,
+3547090,040000,CSD,Laurentian Hills,
+3547096,040000,CSD,Deep River,
+3547070,040000,CSD,North Algona Wilberforce,
+3547043,040000,CSD,Admaston/Bromley,
+3547033,040000,CSD,"Killaloe, Hagarty and Richards",
+3547056,040000,CSD,Whitewater Region,
+3548,049810,CD,Nipissing,
+3548022,040000,CSD,Calvin,
+3548027,040000,CSD,Bonfield,
+3548019,049820,CSD,Mattawan,
+3548055,049810,CSD,West Nipissing / Nipissing Ouest,
+3548072,040000,CSD,Bear Island 1,
+3548044,049820,CSD,North Bay,
+3548094,049810-049820,CSD,"Nipissing, Unorganized, North Part",
+3548034,040000,CSD,East Ferris,
+3548091,049810-049820,CSD,"Nipissing, Unorganized, South Part",
+3548069,040000,CSD,Temagami,
+3548073,049810-049820,CSD,Nipissing 10,
+3548031,040000,CSD,Chisholm,
+3548013,040000,CSD,Papineau-Cameron,
+3548021,049820,CSD,Mattawa,
+3548001,040000,CSD,South Algonquin,
+3549,044420,CD,Parry Sound,
+3549077,040000,CSD,Dokis 9,
+3549018,040000,CSD,Kearney,
+3549003,040000,CSD,Seguin,
+3549036,044430,CSD,Carling,
+3549056,040000,CSD,South River,
+3549076,040000,CSD,French River 13,
+3549031,040000,CSD,McDougall,
+3549032,044420,CSD,Parry Sound,
+3549066,040000,CSD,Callander,
+3549096,044420,CSD,"Parry Sound, Unorganized, Centre Part",
+3549039,040000,CSD,Whitestone,
+3549024,040000,CSD,Ryerson,
+3549014,040000,CSD,Perry,
+3549095,044420,CSD,"Parry Sound, Unorganized, North East Part",
+3549071,040000,CSD,Nipissing,
+3549046,040000,CSD,Strong,
+3549022,040000,CSD,Burk's Falls,
+3549072,040000,CSD,Shawanaga 17,
+3549043,040000,CSD,Magnetawan,
+3549078,040000,CSD,Magnetewan 1,
+3549005,040000,CSD,The Archipelago,
+3549028,040000,CSD,McKellar,
+3549051,040000,CSD,Joly,
+3549019,040000,CSD,Armour,
+3549012,040000,CSD,McMurrich/Monteith,
+3549060,040000,CSD,Powassan,
+3549048,040000,CSD,Sundridge,
+3549075,040000,CSD,Henvey Inlet 2,
+3549073,040000,CSD,Parry Island First Nation,
+3549054,040000,CSD,Machar,
+3551,049910-049920-049930,CD,Manitoulin,
+3551094,049910-049920-049930,CSD,"Manitoulin, Unorganized, West Part",
+3551045,040000,CSD,M'Chigeeng 22 (West Bay 22),
+3551091,049910-049920-049930,CSD,"Manitoulin, Unorganized, Mainland",
+3551040,040000,CSD,Whitefish River (Part) 4,
+3551021,040000,CSD,Billings,
+3551041,040000,CSD,Sucker Creek 23,
+3551034,040000,CSD,Cockburn Island,
+3551028,040000,CSD,Burpee and Mills,
+3551027,040000,CSD,Gordon/Barrie Island,
+3551100,040000,CSD,Zhiibaahaasing 19A (Cockburn Island 19A),
+3551011,040000,CSD,Assiginack,
+3551017,040000,CSD,Northeastern Manitoulin and the Islands,
+3551043,040000,CSD,Wikwemikong Unceded,
+3551042,040000,CSD,Sheguiandah 24,
+3551044,040000,CSD,Sheshegwaning 20,
+3551001,040000,CSD,Tehkummah,
+3551036,040000,CSD,Killarney,
+3551026,040000,CSD,Gore Bay,
+3551006,040000,CSD,Central Manitoulin,
+3552,049100,CD,Sudbury,
+3552013,049100,CSD,Markstay-Warren,
+3552054,049100,CSD,Duck Lake 76B,
+3552028,049100,CSD,Baldwin,
+3552023,049100,CSD,Sables-Spanish Rivers,
+3552052,049100,CSD,Mattagami 71,
+3552092,049100,CSD,Chapleau,
+3552051,049100,CSD,Whitefish Lake 6,
+3552031,049100,CSD,Nairn and Hyman,
+3552093,049100,CSD,"Sudbury, Unorganized, North Part",
+3552053,049100,CSD,Chapleau 74A,
+3552026,049100,CSD,Espanola,
+3552058,049100,CSD,Chapleau 75,
+3552004,049100,CSD,St.-Charles,
+3552001,049100,CSD,French River / Rivière des Français,
+3553,049100,CD,Greater Sudbury / Grand Sudbury,
+3553005,049100,CSD,Greater Sudbury / Grand Sudbury,
+3553040,049100,CSD,Wahnapitei 11,
+3554,040000,CD,Timiskaming,
+3554094,040000,CSD,"Timiskaming, Unorganized, West Part",
+3554042,040000,CSD,James,
+3554044,040000,CSD,Charlton and Dack,
+3554038,040000,CSD,Thornloe,
+3554057,040000,CSD,Matachewan 72,
+3554029,040000,CSD,Casey,
+3554014,040000,CSD,Harris,
+3554036,040000,CSD,Armstrong,
+3554068,040000,CSD,Kirkland Lake,
+3554034,040000,CSD,Hilliard,
+3554052,040000,CSD,Englehart,
+3554021,040000,CSD,Hudson,
+3554006,040000,CSD,Latchford,
+3554091,040000,CSD,"Timiskaming, Unorganized, East Part",
+3554026,040000,CSD,Harley,
+3554058,040000,CSD,McGarry,
+3554049,040000,CSD,Evanturel,
+3554054,040000,CSD,Chamberlain,
+3554056,040000,CSD,Matachewan,
+3554024,040000,CSD,Kerns,
+3554008,040000,CSD,Cobalt,
+3554066,040000,CSD,Gauthier,
+3554062,040000,CSD,Larder Lake,
+3554032,040000,CSD,Brethour,
+3554020,040000,CSD,Temiskaming Shores,
+3554001,040000,CSD,Coleman,
+3556,049520,CD,Cochrane,
+3556093,049310,CSD,Fort Albany (Part) 67,
+3556095,040000,CSD,Constance Lake 92,
+3556077,040000,CSD,Mattice-Val Côté,
+3556073,040000,CSD,Opasatika,
+3556056,040000,CSD,Moonbeam,
+3556048,040000,CSD,Smooth Rock Falls,
+3556098,049520,CSD,"Cochrane, Unorganized, South East Part",
+3556070,040000,CSD,Val Rita-Harty,
+3556102,040000,CSD,New Post 69A,
+3556014,040000,CSD,Black River-Matheson,
+3556076,040000,CSD,Hearst,
+3556092,040000,CSD,"Cochrane, Unorganized, North Part",
+3556027,049520,CSD,Timmins,
+3556100,040000,CSD,Flying Post 73,
+3556042,049520,CSD,Cochrane,
+3556106,049320,CSD,Moosonee,
+3556094,040000,CSD,Factory Island 1,
+3556052,040000,CSD,Fauquier-Strickland,
+3556066,040000,CSD,Kapuskasing,
+3556031,040000,CSD,Iroquois Falls,
+3556033,049510,CSD,Abitibi 70,
+3556096,040000,CSD,Moose Factory 68,
+3556091,049520,CSD,"Cochrane, Unorganized, South West Part",
+3557,040000,CD,Algoma,
+3557039,040000,CSD,Spanish,
+3557001,040000,CSD,Jocelyn,
+3557066,040000,CSD,Prince,
+3557011,040000,CSD,Laird,
+3557040,040000,CSD,North Shore,
+3557026,040000,CSD,Thessalon 12,
+3557004,040000,CSD,Hilton,
+3557095,040000,CSD,"Algoma, Unorganized, North Part",
+3557076,040000,CSD,Wawa,
+3557075,040000,CSD,Rankin Location 15D,
+3557016,040000,CSD,Johnson,
+3557021,040000,CSD,Bruce Mines,
+3557073,040000,CSD,Mississagi River 8,
+3557028,040000,CSD,Thessalon,
+3557041,040000,CSD,Elliot Lake,
+3557074,040000,CSD,Garden River 14,
+3557079,040000,CSD,Dubreuilville,
+3557014,040000,CSD,Tarbutt and Tarbutt Additional,
+3557091,040000,CSD,White River,
+3557078,040000,CSD,Gros Cap 49,
+3557038,040000,CSD,Blind River,
+3557035,040000,CSD,Huron Shores,
+3557072,040000,CSD,Serpent River 7,
+3557094,040000,CSD,"Algoma, Unorganized, South East Part",
+3557008,040000,CSD,St. Joseph,
+3557096,040000,CSD,Hornepayne,
+3557071,040000,CSD,Sagamok,
+3557006,040000,CSD,Hilton Beach,
+3557061,040000,CSD,Sault Ste. Marie,
+3557051,040000,CSD,"Macdonald, Meredith and Aberdeen Additional",
+3557019,040000,CSD,Plummer Additional,
+3557077,040000,CSD,Goulais Bay 15A,
+3558,048100,CD,Thunder Bay,
+3558097,040000,CSD,Whitesand,
+3558064,040000,CSD,Lake Helen 53A,
+3558075,040000,CSD,Greenstone,
+3558080,040000,CSD,Ojibway Nation of Saugeen (Savant Lake),
+3558076,040000,CSD,Aroland 83,
+3558077,040000,CSD,Lake Nipigon,
+3558063,040000,CSD,Pays Plat 51,
+3558051,040000,CSD,Schreiber,
+3558028,040000,CSD,Shuniah,
+3558085,040000,CSD,Osnaburgh 63A,
+3558044,040000,CSD,Nipigon,
+3558041,040000,CSD,Red Rock,
+3558059,040000,CSD,Marathon,
+3558019,040000,CSD,Conmee,
+3558004,048100,CSD,Thunder Bay,
+3558060,040000,CSD,Pic Mobert North,
+3558016,040000,CSD,O'Connor,
+3558069,040000,CSD,Rocky Bay 1,
+3558011,040000,CSD,Oliver Paipoonge,
+3558090,048100,CSD,"Thunder Bay, Unorganized",
+3558068,040000,CSD,Long Lake 58,
+3558065,040000,CSD,Gull River 55,
+3558062,040000,CSD,Pic River 50,
+3558067,040000,CSD,Ginoogaming First Nation,
+3558066,040000,CSD,Manitouwadge,
+3558034,040000,CSD,Dorion,
+3558012,040000,CSD,Gillies,
+3558061,040000,CSD,Pic Mobert South,
+3558095,040000,CSD,Seine River 22A2,
+3558054,040000,CSD,Terrace Bay,
+3558100,040000,CSD,Lac des Mille Lacs 22A1,
+3558001,040000,CSD,Neebing,
+3558003,040000,CSD,Fort William 52,
+3559,047510,CD,Rainy River,
+3559031,040000,CSD,Morley,
+3559068,047510-047520,CSD,Rainy Lake 17A,
+3559001,040000,CSD,Atikokan,
+3559026,040000,CSD,Manitou Rapids 11,
+3559011,040000,CSD,Alberton,
+3559090,047510,CSD,"Rainy River, Unorganized",
+3559024,040000,CSD,Chapple,
+3559065,040000,CSD,Seine River 23B,
+3559062,040000,CSD,Agency 1,
+3559048,040000,CSD,Sabaskong Bay (Part) 35C,
+3559051,040000,CSD,Big Grassy River 35G,
+3559063,040000,CSD,Couchiching 16A,
+3559092,040000,CSD,Long Sault 12,
+3559060,040000,CSD,Neguaguon Lake 25D,
+3559069,047510-047520,CSD,Rainy Lake 17B,
+3559066,040000,CSD,Seine River 23A,
+3559012,047510,CSD,Fort Frances,
+3559047,040000,CSD,Lake of the Woods,
+3559064,040000,CSD,Rainy Lake 26A,
+3559016,040000,CSD,La Vallee,
+3559052,040000,CSD,Big Island Mainland 93,
+3559053,040000,CSD,Saug-a-Gaw-Sing 1,
+3559040,040000,CSD,Dawson,
+3559042,040000,CSD,Rainy River,
+3559019,047510,CSD,Emo,
+3559061,047510-047520,CSD,Rainy Lake 18C,
+3560,047310,CD,Kenora,
+3560100,040000,CSD,Wawakapewin (Long Dog Lake),
+3560071,040000,CSD,Sandy Lake 88,
+3560059,040000,CSD,Weagamow Lake 87,
+3560085,040000,CSD,Wunnumin 1,
+3560053,042720,CSD,Fort Hope 64,
+3560084,040000,CSD,Wabauskang 21,
+3560082,040000,CSD,Shoal Lake (Part) 40,
+3560067,040000,CSD,Poplar Hill,
+3560005,040000,CSD,Whitefish Bay 33A,
+3560097,040000,CSD,Muskrat Dam Lake,
+3560051,042100,CSD,Attawapiskat 91A,
+3560050,049310,CSD,Fort Albany (Part) 67,
+3560061,040000,CSD,Wabaseemoong,
+3560027,040000,CSD,Dryden,
+3560075,040000,CSD,Kitchenuhmaykoosib Aaki 84 (Big Trout Lake),
+3560104,040000,CSD,Kee-Way-Win,
+3560093,040000,CSD,Neskantaga,
+3560021,040000,CSD,Machin,
+3560068,040000,CSD,Shoal Lake (Part) 39A,
+3560064,040000,CSD,Shoal Lake 34B2,
+3560032,040000,CSD,Ear Falls,
+3560090,047310,CSD,"Kenora, Unorganized",
+3560078,042200,CSD,Fort Severn 89,
+3560076,040000,CSD,Sachigo Lake 1,
+3560088,040000,CSD,Wapekeka 2,
+3560086,040000,CSD,Summer Beaver,
+3560070,040000,CSD,Deer Lake,
+3560052,040000,CSD,Marten Falls 65,
+3560055,040000,CSD,Osnaburgh 63B,
+3560034,047220,CSD,Sioux Lookout,
+3560024,040000,CSD,Eagle Lake 27,
+3560083,040000,CSD,Whitefish Bay 34A,
+3560081,040000,CSD,Lansdowne House,
+3560095,040000,CSD,Bearskin Lake,
+3560054,040000,CSD,Cat Lake 63C,
+3560046,040000,CSD,Slate Falls,
+3560004,040000,CSD,Whitefish Bay 32A,
+3560063,040000,CSD,Sabaskong Bay 35D,
+3560079,042710,CSD,Webequie,
+3560080,040000,CSD,North Spirit Lake,
+3560042,040000,CSD,Red Lake,
+3560010,047310,CSD,Kenora,
+3560008,047320,CSD,Sioux Narrows - Nestor Falls,
+3560060,040000,CSD,Northwest Angle 33B,
+3560096,040000,CSD,Kasabonika Lake,
+3560102,040000,CSD,MacDowell Lake,
+3560058,040000,CSD,English River 21,
+3560089,040000,CSD,The Dalles 38C,
+3560007,040000,CSD,Sabaskong Bay (Part) 35C,
+3560091,042300,CSD,Peawanuck,
+3560098,040000,CSD,Kingfisher Lake 1,
+3560077,040000,CSD,Pikangikum 14,
+3560049,040000,CSD,Pickle Lake,
+3560056,040000,CSD,Lac Seul 28,
+3560069,040000,CSD,Rat Portage 38A,
+3560057,040000,CSD,Wabigoon Lake 27,
+3560001,040000,CSD,Ignace,
+3560065,040000,CSD,Lake Of The Woods 37,
+3560066,047310,CSD,Kenora 38B,
+24,030000,PT,Québec,
+2401,036800,CD,,
+2401023,036800,CSD,Les Îles-de-la-Madeleine,
+2401042,030000,CSD,Grosse-Île,
+2402,035800-035820,CD,,
+2402005,035800-035820,CSD,Percé,
+2402010,030000,CSD,Sainte-Thérèse-de-Gaspé,
+2402015,033100,CSD,Grande-Rivière,
+2402028,030000,CSD,Chandler,
+2402047,030000,CSD,Port-Daniel - Gascons,
+2402902,030000,CSD,Mont-Alexandre,
+2403,035800-035810,CD,,
+2403005,035800-035810,CSD,Gaspé,
+2403010,030000,CSD,Cloridorme,
+2403015,030000,CSD,Petite-Vallée,
+2403020,030000,CSD,Grande-Vallée,
+2403025,030000,CSD,Murdochville,
+2403902,030000,CSD,Rivière-Saint-Jean,
+2403904,030000,CSD,Collines-du-Basque,
+2404,030000,CD,,
+2404005,030000,CSD,Sainte-Madeleine-de-la-Rivière-Madeleine,
+2404010,030000,CSD,Saint-Maxime-du-Mont-Louis,
+2404015,030000,CSD,Mont-Saint-Pierre,
+2404020,030000,CSD,Rivière-à-Claude,
+2404025,030000,CSD,Marsoui,
+2404030,030000,CSD,La Martre,
+2404037,030000,CSD,Sainte-Anne-des-Monts,
+2404047,030000,CSD,Cap-Chat,
+2404902,030000,CSD,Mont-Albert,
+2404904,030000,CSD,Coulée-des-Adolphe,
+2405,030000,CD,,
+2405010,030000,CSD,Shigawake,
+2405015,030000,CSD,Saint-Godefroi,
+2405020,030000,CSD,Hope Town,
+2405025,030000,CSD,Hope,
+2405032,030000,CSD,Paspébiac,
+2405040,030000,CSD,New Carlisle,
+2405045,030000,CSD,Bonaventure,
+2405050,030000,CSD,Saint-Elzéar,
+2405055,030000,CSD,Saint-Siméon,
+2405060,030000,CSD,Caplan,
+2405065,030000,CSD,Saint-Alphonse,
+2405070,030000,CSD,New Richmond,
+2405077,030000,CSD,Cascapédia - Saint-Jules,
+2405902,030000,CSD,Rivière-Bonaventure,
+2406,030000,CD,,
+2406005,030000,CSD,Maria,
+2406013,030000,CSD,Carleton-sur-Mer,
+2406020,030000,CSD,Nouvelle,
+2406025,030000,CSD,Escuminac,
+2406030,030000,CSD,Pointe-à-la-Croix,
+2406035,030000,CSD,Ristigouche-Partie-Sud-Est,
+2406040,030000,CSD,Saint-André-de-Restigouche,
+2406045,030000,CSD,Matapédia,
+2406050,030000,CSD,Saint-Alexis-de-Matapédia,
+2406055,030000,CSD,Saint-François-d'Assise,
+2406060,030000,CSD,L'Ascension-de-Patapédia,
+2406802,030000,CSD,Gesgapegiag,
+2406804,030000,CSD,Listuguj,
+2406902,030000,CSD,Rivière-Nouvelle,
+2406904,030000,CSD,Ruisseau-Ferguson,
+2407,030000,CD,,
+2407005,030000,CSD,Sainte-Marguerite-Marie,
+2407010,030000,CSD,Sainte-Florence,
+2407018,030000,CSD,Causapscal,
+2407025,030000,CSD,Albertville,
+2407030,030000,CSD,Saint-Léon-le-Grand,
+2407035,030000,CSD,Saint-Zénon-du-Lac-Humqui,
+2407040,030000,CSD,Sainte-Irène,
+2407047,030000,CSD,Amqui,
+2407057,030000,CSD,Lac-au-Saumon,
+2407065,030000,CSD,Saint-Alexandre-des-Lacs,
+2407070,030000,CSD,Saint-Tharcisius,
+2407075,030000,CSD,Saint-Vianney,
+2407080,030000,CSD,Val-Brillant,
+2407085,030000,CSD,Sayabec,
+2407090,030000,CSD,Saint-Cléophas,
+2407095,030000,CSD,Saint-Moïse,
+2407100,030000,CSD,Saint-Noël,
+2407105,030000,CSD,Saint-Damase,
+2407902,030000,CSD,Routhierville,
+2407904,030000,CSD,Rivière-Vaseuse,
+2407906,030000,CSD,Rivière-Patapédia-Est,
+2407908,030000,CSD,Lac-Casault,
+2407910,030000,CSD,Ruisseau-des-Mineurs,
+2407912,030000,CSD,Lac-Alfred,
+2407914,030000,CSD,Lac-Matapédia,
+2408,030000,CD,,
+2408005,030000,CSD,Les Méchins,
+2408010,030000,CSD,Saint-Jean-de-Cherbourg,
+2408015,030000,CSD,Grosses-Roches,
+2408023,030000,CSD,Sainte-Félicité,
+2408030,030000,CSD,Saint-Adelme,
+2408035,030000,CSD,Saint-René-de-Matane,
+2408040,030000,CSD,Sainte-Paule,
+2408053,030000,CSD,Matane,
+2408065,030000,CSD,Saint-Léandre,
+2408073,030000,CSD,Saint-Ulric,
+2408080,030000,CSD,Baie-des-Sables,
+2408902,030000,CSD,Rivière-Bonjour,
+2409,030000,CD,,
+2409005,030000,CSD,La Rédemption,
+2409010,030000,CSD,Saint-Charles-Garnier,
+2409015,030000,CSD,Les Hauteurs,
+2409020,030000,CSD,Sainte-Jeanne-d'Arc,
+2409025,030000,CSD,Saint-Gabriel-de-Rimouski,
+2409030,032120,CSD,Saint-Donat,
+2409035,030000,CSD,Sainte-Angèle-de-Mérici,
+2409040,030000,CSD,Padoue,
+2409048,030000,CSD,Métis-sur-Mer,
+2409055,030000,CSD,Saint-Octave-de-Métis,
+2409060,030000,CSD,Grand-Métis,
+2409065,030000,CSD,Price,
+2409070,030000,CSD,Saint-Joseph-de-Lepage,
+2409077,030000,CSD,Mont-Joli,
+2409085,030000,CSD,Sainte-Flavie,
+2409092,030000,CSD,Sainte-Luce,
+2409902,030000,CSD,Lac-des-Eaux-Mortes,
+2409904,030000,CSD,Lac-à-la-Croix,
+2410,030000,CD,,
+2410005,030000,CSD,Esprit-Saint,
+2410010,030000,CSD,La Trinité-des-Monts,
+2410015,030000,CSD,Saint-Narcisse-de-Rimouski,
+2410025,030000,CSD,Saint-Marcellin,
+2410030,030000,CSD,Saint-Anaclet-de-Lessard,
+2410043,030000,CSD,Rimouski,
+2410060,030000,CSD,Saint-Valérien,
+2410070,030000,CSD,Saint-Fabien,
+2410075,030000,CSD,Saint-Eugène-de-Ladrière,
+2410902,030000,CSD,Lac-Huron,
+2411,030000,CD,,
+2411005,030000,CSD,Saint-Clément,
+2411010,030000,CSD,Saint-Jean-de-Dieu,
+2411015,030000,CSD,Sainte-Rita,
+2411020,030000,CSD,Saint-Guy,
+2411025,030000,CSD,Saint-Médard,
+2411030,030000,CSD,Sainte-Françoise,
+2411035,030000,CSD,Saint-Éloi,
+2411040,030000,CSD,Trois-Pistoles,
+2411045,030000,CSD,Notre-Dame-des-Neiges,
+2411050,030000,CSD,Saint-Mathieu-de-Rioux,
+2411055,030000,CSD,Saint-Simon,
+2411902,030000,CSD,Lac-Boisbouscache,
+2412,030000,CD,,
+2412005,030000,CSD,Saint-Cyprien,
+2412010,030000,CSD,Saint-Hubert-de-Rivière-du-Loup,
+2412015,030000,CSD,Saint-Antonin,
+2412020,030000,CSD,Saint-Modeste,
+2412025,030000,CSD,Saint-François-Xavier-de-Viger,
+2412030,030000,CSD,Saint-Épiphane,
+2412035,030000,CSD,Saint-Paul-de-la-Croix,
+2412043,030000,CSD,L'Isle-Verte,
+2412045,030000,CSD,Notre-Dame-des-Sept-Douleurs,
+2412057,030000,CSD,Cacouna,
+2412065,030000,CSD,Saint-Arsène,
+2412072,030000,CSD,Rivière-du-Loup,
+2412080,030000,CSD,Notre-Dame-du-Portage,
+2412802,030000,CSD,Whitworth,
+2412804,030000,CSD,Cacouna,
+2413,030000,CD,,
+2413005,030000,CSD,Dégelis,
+2413010,030000,CSD,Saint-Jean-de-la-Lande,
+2413015,030000,CSD,Packington,
+2413020,030000,CSD,Saint-Marc-du-Lac-Long,
+2413025,030000,CSD,Rivière-Bleue,
+2413030,030000,CSD,Saint-Eusèbe,
+2413040,030000,CSD,Saint-Juste-du-Lac,
+2413045,030000,CSD,Auclair,
+2413050,030000,CSD,Lejeune,
+2413055,030000,CSD,Biencourt,
+2413060,030000,CSD,Lac-des-Aigles,
+2413065,030000,CSD,Saint-Michel-du-Squatec,
+2413073,030000,CSD,Témiscouata-sur-le-Lac,
+2413075,030000,CSD,Saint-Pierre-de-Lamy,
+2413080,030000,CSD,Saint-Louis-du-Ha! Ha!,
+2413085,030000,CSD,Saint-Elzéar-de-Témiscouata,
+2413090,030000,CSD,Saint-Honoré-de-Témiscouata,
+2413095,030000,CSD,Pohénégamook,
+2413100,030000,CSD,Saint-Athanase,
+2414,030000,CD,,
+2414005,030000,CSD,Mont-Carmel,
+2414010,030000,CSD,Saint-Bruno-de-Kamouraska,
+2414018,030000,CSD,Saint-Pascal,
+2414025,030000,CSD,Sainte-Hélène,
+2414030,030000,CSD,Saint-Joseph-de-Kamouraska,
+2414035,030000,CSD,Saint-Alexandre-de-Kamouraska,
+2414040,030000,CSD,Saint-André,
+2414045,030000,CSD,Saint-Germain,
+2414050,030000,CSD,Kamouraska,
+2414055,030000,CSD,Saint-Denis-De La Bouteillerie,
+2414060,030000,CSD,Saint-Philippe-de-Néri,
+2414065,030000,CSD,Rivière-Ouelle,
+2414070,030000,CSD,Saint-Pacôme,
+2414075,030000,CSD,Saint-Gabriel-Lalemant,
+2414080,030000,CSD,Saint-Onésime-d'Ixworth,
+2414085,030000,CSD,La Pocatière,
+2414090,030000,CSD,Sainte-Anne-de-la-Pocatière,
+2414902,030000,CSD,Picard,
+2414904,030000,CSD,Petit-Lac-Sainte-Anne,
+2415,030000,CD,,
+2415005,030000,CSD,Saint-Irénée,
+2415013,030000,CSD,La Malbaie,
+2415025,030000,CSD,Notre-Dame-des-Monts,
+2415030,030000,CSD,Saint-Aimé-des-Lacs,
+2415035,030000,CSD,Clermont,
+2415058,030000,CSD,Saint-Siméon,
+2415065,030000,CSD,Baie-Sainte-Catherine,
+2415902,030000,CSD,Mont-Élie,
+2415904,030000,CSD,Sagard,
+2416,030000,CD,,
+2416005,030000,CSD,Petite-Rivière-Saint-François,
+2416013,030000,CSD,Baie-Saint-Paul,
+2416023,030000,CSD,L'Isle-aux-Coudres,
+2416048,030000,CSD,Les Éboulements,
+2416050,030000,CSD,Saint-Hilarion,
+2416055,030000,CSD,Saint-Urbain,
+2416902,030000,CSD,Lac-Pikauba,
+2417,030000,CD,,
+2417005,030000,CSD,Saint-Omer,
+2417010,030000,CSD,Saint-Pamphile,
+2417015,030000,CSD,Saint-Adalbert,
+2417020,030000,CSD,Saint-Marcel,
+2417025,030000,CSD,Sainte-Félicité,
+2417030,030000,CSD,Sainte-Perpétue,
+2417035,030000,CSD,Tourville,
+2417040,030000,CSD,Saint-Damase-de-L'Islet,
+2417045,030000,CSD,Saint-Cyrille-de-Lessard,
+2417055,030000,CSD,Saint-Aubert,
+2417060,030000,CSD,Sainte-Louise,
+2417065,030000,CSD,Saint-Roch-des-Aulnaies,
+2417070,030000,CSD,Saint-Jean-Port-Joli,
+2417078,030000,CSD,L'Islet,
+2418,030000,CD,,
+2418005,030000,CSD,Saint-Just-de-Bretenières,
+2418010,030000,CSD,Lac-Frontière,
+2418015,030000,CSD,Saint-Fabien-de-Panet,
+2418020,030000,CSD,Sainte-Lucie-de-Beauregard,
+2418025,030000,CSD,Sainte-Apolline-de-Patton,
+2418030,030000,CSD,Saint-Paul-de-Montminy,
+2418035,030000,CSD,Sainte-Euphémie-sur-Rivière-du-Sud,
+2418040,030000,CSD,Notre-Dame-du-Rosaire,
+2418045,030000,CSD,Cap-Saint-Ignace,
+2418050,030000,CSD,Montmagny,
+2418055,030000,CSD,Saint-Pierre-de-la-Rivière-du-Sud,
+2418060,030000,CSD,Saint-François-de-la-Rivière-du-Sud,
+2418065,030000,CSD,Berthier-sur-Mer,
+2418070,030000,CSD,Saint-Antoine-de-l'Isle-aux-Grues,
+2419,030000,CD,,
+2419005,030000,CSD,Saint-Philémon,
+2419010,030000,CSD,Notre-Dame-Auxiliatrice-de-Buckland,
+2419015,030000,CSD,Saint-Nazaire-de-Dorchester,
+2419020,030000,CSD,Saint-Léon-de-Standon,
+2419025,030000,CSD,Saint-Malachie,
+2419030,030000,CSD,Saint-Damien-de-Buckland,
+2419037,030000,CSD,Armagh,
+2419045,032821,CSD,Saint-Nérée-de-Bellechasse,
+2419050,032821,CSD,Saint-Lazare-de-Bellechasse,
+2419055,030000,CSD,Sainte-Claire,
+2419062,030000,CSD,Saint-Anselme,
+2419068,030000,CSD,Saint-Henri,
+2419070,030000,CSD,Honfleur,
+2419075,030000,CSD,Saint-Gervais,
+2419082,030000,CSD,Saint-Raphaël,
+2419090,030000,CSD,La Durantaye,
+2419097,032821,CSD,Saint-Charles-de-Bellechasse,
+2419105,030000,CSD,Beaumont,
+2419110,032821,CSD,Saint-Michel-de-Bellechasse,
+2419117,030000,CSD,Saint-Vallier,
+2420,030000,CD,,
+2420005,032814,CSD,Saint-François-de-l'Île-d'Orléans,
+2420010,030000,CSD,Sainte-Famille,
+2420015,032814,CSD,Saint-Jean-de-l'Île-d'Orléans,
+2420020,032814,CSD,Saint-Laurent-de-l'Île-d'Orléans,
+2420025,032814,CSD,Saint-Pierre-de-l'Île-d'Orléans,
+2420030,030000,CSD,Sainte-Pétronille,
+2421,030000,CD,,
+2421005,030000,CSD,Saint-Tite-des-Caps,
+2421010,030000,CSD,Saint-Ferréol-les-Neiges,
+2421015,030000,CSD,Saint-Louis-de-Gonzague-du-Cap-Tourmente,
+2421020,030000,CSD,Saint-Joachim,
+2421025,032814,CSD,Beaupré,
+2421030,032814,CSD,Sainte-Anne-de-Beaupré,
+2421035,030000,CSD,Château-Richer,
+2421040,030000,CSD,L'Ange-Gardien,
+2421045,030000,CSD,Boischatel,
+2421902,030000,CSD,Sault-au-Cochon,
+2421904,030000,CSD,Lac-Jacques-Cartier,
+2422,030000,CD,,
+2422005,030000,CSD,Sainte-Catherine-de-la-Jacques-Cartier,
+2422010,030000,CSD,Fossambault-sur-le-Lac,
+2422015,030000,CSD,Lac-Saint-Joseph,
+2422020,030000,CSD,Shannon,
+2422025,032812,CSD,Saint-Gabriel-de-Valcartier,
+2422030,030000,CSD,Lac-Delage,
+2422035,032812,CSD,Stoneham-et-Tewkesbury,
+2422040,030000,CSD,Lac-Beauport,
+2422045,030000,CSD,Sainte-Brigitte-de-Laval,
+2422902,030000,CSD,Lac-Croche,
+2423,032800,CD,,
+2423015,030000,CSD,Notre-Dame-des-Anges,
+2423027,032813,CSD,Québec,
+2423057,030000,CSD,L'Ancienne-Lorette,
+2423072,030000,CSD,Saint-Augustin-de-Desmaures,
+2423802,030000,CSD,Wendake,
+2425,032822,CD,,
+2425213,032822,CSD,Lévis,
+2426,030000,CD,,
+2426005,030000,CSD,Frampton,
+2426010,030000,CSD,Saints-Anges,
+2426015,030000,CSD,Vallée-Jonction,
+2426022,030000,CSD,Saint-Elzéar,
+2426030,030000,CSD,Sainte-Marie,
+2426035,030000,CSD,Sainte-Marguerite,
+2426040,030000,CSD,Sainte-Hénédine,
+2426048,030000,CSD,Scott,
+2426055,030000,CSD,Saint-Bernard,
+2426063,030000,CSD,Saint-Isidore,
+2426070,030000,CSD,Saint-Lambert-de-Lauzon,
+2427,030000,CD,,
+2427008,030000,CSD,Saint-Victor,
+2427015,030000,CSD,Saint-Alfred,
+2427028,030000,CSD,Beauceville,
+2427035,030000,CSD,Saint-Odilon-de-Cranbourne,
+2427043,030000,CSD,Saint-Joseph-de-Beauce,
+2427050,030000,CSD,Saint-Joseph-des-Érables,
+2427055,030000,CSD,Saint-Jules,
+2427060,030000,CSD,Tring-Jonction,
+2427065,030000,CSD,Saint-Frédéric,
+2427070,030000,CSD,Saint-Séverin,
+2428,030000,CD,,
+2428005,030000,CSD,Saint-Zacharie,
+2428015,030000,CSD,Sainte-Aurélie,
+2428020,030000,CSD,Saint-Prosper,
+2428025,030000,CSD,Saint-Benjamin,
+2428030,030000,CSD,Sainte-Rose-de-Watford,
+2428035,030000,CSD,Saint-Louis-de-Gonzague,
+2428040,030000,CSD,Saint-Cyprien,
+2428045,030000,CSD,Sainte-Justine,
+2428053,030000,CSD,Lac-Etchemin,
+2428060,032821,CSD,Saint-Luc-de-Bellechasse,
+2428065,030000,CSD,Sainte-Sabine,
+2428070,030000,CSD,Saint-Camille-de-Lellis,
+2428075,030000,CSD,Saint-Magloire,
+2429,030000,CD,,
+2429005,030000,CSD,Saint-Théophile,
+2429013,030000,CSD,Saint-Gédéon-de-Beauce,
+2429020,030000,CSD,Saint-Hilaire-de-Dorset,
+2429025,030000,CSD,Saint-Évariste-de-Forsyth,
+2429030,030000,CSD,La Guadeloupe,
+2429038,030000,CSD,Saint-Honoré-de-Shenley,
+2429045,030000,CSD,Saint-Martin,
+2429050,030000,CSD,Saint-René,
+2429057,030000,CSD,Saint-Côme - Linière,
+2429065,030000,CSD,Saint-Philibert,
+2429073,030000,CSD,Saint-Georges,
+2429095,030000,CSD,Lac-Poulin,
+2429100,030000,CSD,Saint-Benoît-Labre,
+2429112,030000,CSD,Saint-Éphrem-de-Beauce,
+2429120,030000,CSD,Notre-Dame-des-Pins,
+2429125,030000,CSD,Saint-Simon-les-Mines,
+2430,030000,CD,,
+2430005,030000,CSD,Saint-Augustin-de-Woburn,
+2430010,030000,CSD,Notre-Dame-des-Bois,
+2430015,030000,CSD,Val-Racine,
+2430020,030000,CSD,Piopolis,
+2430025,030000,CSD,Frontenac,
+2430030,030000,CSD,Lac-Mégantic,
+2430035,030000,CSD,Marston,
+2430040,030000,CSD,Milan,
+2430045,030000,CSD,Nantes,
+2430050,030000,CSD,Sainte-Cécile-de-Whitton,
+2430055,030000,CSD,Audet,
+2430070,030000,CSD,Saint-Robert-Bellarmin,
+2430072,030000,CSD,Saint-Ludger,
+2430080,030000,CSD,Lac-Drolet,
+2430085,030000,CSD,Saint-Sébastien,
+2430090,030000,CSD,Courcelles,
+2430095,030000,CSD,Lambton,
+2430100,030000,CSD,Saint-Romain,
+2430105,030000,CSD,Stornoway,
+2430110,030000,CSD,Stratford,
+2431,030000,CD,,
+2431008,030000,CSD,Beaulac-Garthby,
+2431015,030000,CSD,Disraeli,
+2431020,030000,CSD,Disraeli,
+2431025,030000,CSD,Saint-Jacques-le-Majeur-de-Wolfestown,
+2431030,030000,CSD,Saint-Fortunat,
+2431035,030000,CSD,Saint-Julien,
+2431040,030000,CSD,Irlande,
+2431045,030000,CSD,Saint-Joseph-de-Coleraine,
+2431050,030000,CSD,Sainte-Praxède,
+2431056,030000,CSD,Adstock,
+2431060,030000,CSD,Sainte-Clotilde-de-Beauce,
+2431084,030000,CSD,Thetford Mines,
+2431095,030000,CSD,Saint-Adrien-d'Irlande,
+2431100,030000,CSD,Saint-Jean-de-Brébeuf,
+2431105,030000,CSD,Kinnear's Mills,
+2431122,030000,CSD,East Broughton,
+2431130,030000,CSD,Sacré-Coeur-de-Jésus,
+2431135,030000,CSD,Saint-Pierre-de-Broughton,
+2431140,030000,CSD,Saint-Jacques-de-Leeds,
+2432,030000,CD,,
+2432013,030000,CSD,Saint-Ferdinand,
+2432023,030000,CSD,Sainte-Sophie-d'Halifax,
+2432033,030000,CSD,Princeville,
+2432040,030000,CSD,Plessisville,
+2432045,030000,CSD,Plessisville,
+2432050,030000,CSD,Saint-Pierre-Baptiste,
+2432058,030000,CSD,Inverness,
+2432065,030000,CSD,Lyster,
+2432072,030000,CSD,Laurierville,
+2432080,030000,CSD,Notre-Dame-de-Lourdes,
+2432085,030000,CSD,Villeroy,
+2433,030000,CD,,
+2433007,030000,CSD,Saint-Sylvestre,
+2433017,032210,CSD,Sainte-Agathe-de-Lotbinière,
+2433025,030000,CSD,Saint-Patrice-de-Beaurivage,
+2433030,030000,CSD,Saint-Narcisse-de-Beaurivage,
+2433035,030000,CSD,Saint-Gilles,
+2433040,030000,CSD,Dosquet,
+2433045,030000,CSD,Saint-Agapit,
+2433052,030000,CSD,Saint-Flavien,
+2433060,030000,CSD,Laurier-Station,
+2433065,030000,CSD,Saint-Janvier-de-Joly,
+2433070,030000,CSD,Val-Alain,
+2433080,032824,CSD,Saint-Édouard-de-Lotbinière,
+2433085,030000,CSD,Notre-Dame-du-Sacré-Coeur-d'Issoudun,
+2433090,030000,CSD,Saint-Apollinaire,
+2433095,030000,CSD,Saint-Antoine-de-Tilly,
+2433102,030000,CSD,Sainte-Croix,
+2433115,032824,CSD,Lotbinière,
+2433123,030000,CSD,Leclercville,
+2434,030000,CD,,
+2434007,030000,CSD,Neuville,
+2434017,030000,CSD,Pont-Rouge,
+2434025,030000,CSD,Donnacona,
+2434030,030000,CSD,Cap-Santé,
+2434038,030000,CSD,Saint-Basile,
+2434048,032811,CSD,Portneuf,
+2434058,030000,CSD,Deschambault-Grondines,
+2434060,030000,CSD,Saint-Gilbert,
+2434065,030000,CSD,Saint-Marc-des-Carrières,
+2434078,030000,CSD,Saint-Casimir,
+2434085,030000,CSD,Saint-Thuribe,
+2434090,030000,CSD,Saint-Ubalde,
+2434097,030000,CSD,Saint-Alban,
+2434105,030000,CSD,Sainte-Christine-d'Auvergne,
+2434115,032811,CSD,Saint-Léonard-de-Portneuf,
+2434120,030000,CSD,Lac-Sergent,
+2434128,030000,CSD,Saint-Raymond,
+2434135,030000,CSD,Rivière-à-Pierre,
+2434902,030000,CSD,Lac-Blanc,
+2434904,030000,CSD,Linton,
+2434906,030000,CSD,Lac-Lapeyrère,
+2435,030000,CD,,
+2435005,030000,CSD,Notre-Dame-de-Montauban,
+2435010,032730,CSD,Lac-aux-Sables,
+2435015,030000,CSD,Saint-Adelphe,
+2435020,030000,CSD,Saint-Séverin,
+2435027,030000,CSD,Saint-Tite,
+2435035,030000,CSD,Hérouxville,
+2435040,030000,CSD,Grandes-Piles,
+2435045,030000,CSD,Saint-Roch-de-Mékinac,
+2435050,030000,CSD,Sainte-Thècle,
+2435055,030000,CSD,Trois-Rives,
+2435902,030000,CSD,Lac-Masketsi,
+2435904,030000,CSD,Lac-Normand,
+2435906,030000,CSD,Rivière-de-la-Savane,
+2435908,030000,CSD,Lac-Boulé,
+2436,030000,CD,,
+2436033,032740,CSD,Shawinigan,
+2437,030000,CD,,
+2437067,032760,CSD,Trois-Rivières,
+2437205,032750,CSD,Sainte-Anne-de-la-Pérade,
+2437210,030000,CSD,Batiscan,
+2437215,030000,CSD,Sainte-Geneviève-de-Batiscan,
+2437220,030000,CSD,Champlain,
+2437225,030000,CSD,Saint-Luc-de-Vincennes,
+2437230,030000,CSD,Saint-Maurice,
+2437235,030000,CSD,Notre-Dame-du-Mont-Carmel,
+2437240,030000,CSD,Saint-Narcisse,
+2437245,030000,CSD,Saint-Stanislas,
+2437250,030000,CSD,Saint-Prosper-de-Champlain,
+2438,030000,CD,,
+2438005,030000,CSD,Saint-Sylvère,
+2438010,030000,CSD,Bécancour,
+2438015,030000,CSD,Sainte-Marie-de-Blandford,
+2438020,030000,CSD,Lemieux,
+2438028,030000,CSD,Manseau,
+2438035,030000,CSD,Sainte-Françoise,
+2438040,030000,CSD,Sainte-Sophie-de-Lévrard,
+2438047,030000,CSD,Fortierville,
+2438055,030000,CSD,Parisville,
+2438060,030000,CSD,Sainte-Cécile-de-Lévrard,
+2438065,030000,CSD,Saint-Pierre-les-Becquets,
+2438070,030000,CSD,Deschaillons-sur-Saint-Laurent,
+2438802,030000,CSD,Wôlinak,
+2439,030000,CD,,
+2439005,030000,CSD,Saints-Martyrs-Canadiens,
+2439010,030000,CSD,Ham-Nord,
+2439015,030000,CSD,Notre-Dame-de-Ham,
+2439020,032530,CSD,Saint-Rémi-de-Tingwick,
+2439025,030000,CSD,Tingwick,
+2439030,030000,CSD,Chesterville,
+2439035,030000,CSD,Sainte-Hélène-de-Chester,
+2439043,030000,CSD,Saint-Norbert-d'Arthabaska,
+2439060,030000,CSD,Saint-Christophe-d'Arthabaska,
+2439062,030000,CSD,Victoriaville,
+2439077,030000,CSD,Warwick,
+2439085,030000,CSD,Saint-Albert,
+2439090,030000,CSD,Sainte-Élizabeth-de-Warwick,
+2439097,030000,CSD,Kingsey Falls,
+2439105,030000,CSD,Sainte-Séraphine,
+2439117,030000,CSD,Sainte-Clotilde-de-Horton,
+2439130,030000,CSD,Saint-Samuel,
+2439135,030000,CSD,Saint-Valère,
+2439145,030000,CSD,Saint-Rosaire,
+2439150,030000,CSD,Sainte-Anne-du-Sault,
+2439155,030000,CSD,Daveluyville,
+2439165,030000,CSD,Maddington,
+2439170,030000,CSD,Saint-Louis-de-Blandford,
+2440,030000,CD,,
+2440005,030000,CSD,Ham-Sud,
+2440010,030000,CSD,Saint-Adrien,
+2440017,030000,CSD,Wotton,
+2440025,030000,CSD,Saint-Camille,
+2440032,030000,CSD,Saint-Georges-de-Windsor,
+2440043,030000,CSD,Asbestos,
+2440047,030000,CSD,Danville,
+2441,030000,CD,,
+2441012,030000,CSD,Saint-Isidore-de-Clifton,
+2441020,030000,CSD,Chartierville,
+2441027,030000,CSD,La Patrie,
+2441037,030000,CSD,Newport,
+2441038,030000,CSD,Cookshire-Eaton,
+2441055,030000,CSD,Ascot Corner,
+2441060,030000,CSD,East Angus,
+2441065,030000,CSD,Westbury,
+2441070,030000,CSD,Bury,
+2441075,030000,CSD,Hampden,
+2441080,030000,CSD,Scotstown,
+2441085,030000,CSD,Lingwick,
+2441098,030000,CSD,Weedon,
+2441117,030000,CSD,Dudswell,
+2442,030000,CD,,
+2442005,030000,CSD,Stoke,
+2442020,030000,CSD,Saint-François-Xavier-de-Brompton,
+2442025,030000,CSD,Saint-Denis-de-Brompton,
+2442032,030000,CSD,Racine,
+2442040,030000,CSD,Bonsecours,
+2442045,030000,CSD,Lawrenceville,
+2442050,030000,CSD,Sainte-Anne-de-la-Rochelle,
+2442055,030000,CSD,Valcourt,
+2442060,030000,CSD,Valcourt,
+2442065,030000,CSD,Maricourt,
+2442070,030000,CSD,Kingsbury,
+2442075,030000,CSD,Melbourne,
+2442078,030000,CSD,Ulverton,
+2442088,030000,CSD,Windsor,
+2442095,030000,CSD,Val-Joli,
+2442098,030000,CSD,Richmond,
+2442100,030000,CSD,Saint-Claude,
+2442110,030000,CSD,Cleveland,
+2443,030000,CD,,
+2443027,030000,CSD,Sherbrooke,
+2444,030000,CD,,
+2444003,030000,CSD,Saint-Malo,
+2444005,030000,CSD,Saint-Venant-de-Paquette,
+2444010,030000,CSD,East Hereford,
+2444015,030000,CSD,Saint-Herménégilde,
+2444023,030000,CSD,Dixville,
+2444037,030000,CSD,Coaticook,
+2444045,030000,CSD,Barnston-Ouest,
+2444050,030000,CSD,Stanstead-Est,
+2444055,030000,CSD,Sainte-Edwidge-de-Clifton,
+2444060,030000,CSD,Martinville,
+2444071,030000,CSD,Compton,
+2444080,030000,CSD,Waterville,
+2445,030000,CD,,
+2445008,030000,CSD,Stanstead,
+2445020,030000,CSD,Ogden,
+2445025,030000,CSD,Stanstead,
+2445030,030000,CSD,Potton,
+2445035,030000,CSD,Ayer's Cliff,
+2445043,030000,CSD,Hatley,
+2445050,030000,CSD,North Hatley,
+2445055,030000,CSD,Hatley,
+2445060,030000,CSD,Sainte-Catherine-de-Hatley,
+2445072,030000,CSD,Magog,
+2445080,030000,CSD,Saint-Benoît-du-Lac,
+2445085,030000,CSD,Austin,
+2445093,030000,CSD,Eastman,
+2445095,030000,CSD,Bolton-Est,
+2445100,030000,CSD,Saint-Étienne-de-Bolton,
+2445105,030000,CSD,Stukely-Sud,
+2445115,030000,CSD,Orford,
+2446,030000,CD,,
+2446005,030000,CSD,Abercorn,
+2446010,030000,CSD,Frelighsburg,
+2446017,030000,CSD,Saint-Armand,
+2446025,030000,CSD,Pike River,
+2446030,030000,CSD,Stanbridge Station,
+2446035,030000,CSD,Bedford,
+2446040,030000,CSD,Bedford,
+2446045,030000,CSD,Stanbridge East,
+2446050,030000,CSD,Dunham,
+2446058,030000,CSD,Sutton,
+2446065,030000,CSD,Bolton-Ouest,
+2446070,030000,CSD,Brome,
+2446075,030000,CSD,Lac-Brome,
+2446080,030000,CSD,Cowansville,
+2446085,030000,CSD,East Farnham,
+2446090,030000,CSD,Brigham,
+2446095,030000,CSD,Saint-Ignace-de-Stanbridge,
+2446100,030000,CSD,Notre-Dame-de-Stanbridge,
+2446105,030000,CSD,Sainte-Sabine,
+2446112,030000,CSD,Farnham,
+2447,030000,CD,,
+2446078,030000,CSD,Bromont,
+2447010,030000,CSD,Saint-Alphonse-de-Granby,
+2447017,030000,CSD,Granby,
+2447025,030000,CSD,Waterloo,
+2447030,030000,CSD,Warden,
+2447035,030000,CSD,Shefford,
+2447040,030000,CSD,Saint-Joachim-de-Shefford,
+2447047,030000,CSD,Roxton Pond,
+2447055,030000,CSD,Sainte-Cécile-de-Milton,
+2448,030000,CD,,
+2448005,030000,CSD,Béthanie,
+2448010,030000,CSD,Roxton Falls,
+2448015,030000,CSD,Roxton,
+2448020,030000,CSD,Sainte-Christine,
+2448028,030000,CSD,Acton Vale,
+2448038,030000,CSD,Upton,
+2448045,030000,CSD,Saint-Théodore-d'Acton,
+2448050,030000,CSD,Saint-Nazaire-d'Acton,
+2449,030000,CD,,
+2449005,030000,CSD,Saint-Félix-de-Kingsey,
+2449015,030000,CSD,Durham-Sud,
+2449020,030000,CSD,Lefebvre,
+2449025,030000,CSD,L'Avenir,
+2449030,030000,CSD,Saint-Lucien,
+2449040,030000,CSD,Wickham,
+2449048,030000,CSD,Saint-Germain-de-Grantham,
+2449058,030000,CSD,Drummondville,
+2449070,030000,CSD,Saint-Cyrille-de-Wendover,
+2449075,030000,CSD,Notre-Dame-du-Bon-Conseil,
+2449080,030000,CSD,Notre-Dame-du-Bon-Conseil,
+2449085,030000,CSD,Sainte-Brigitte-des-Saults,
+2449095,030000,CSD,Saint-Majorique-de-Grantham,
+2449100,030000,CSD,Saint-Edmond-de-Grantham,
+2449105,030000,CSD,Saint-Eugène,
+2449113,030000,CSD,Saint-Guillaume,
+2449125,030000,CSD,Saint-Bonaventure,
+2449130,030000,CSD,Saint-Pie-de-Guire,
+2450,030000,CD,,
+2450005,030000,CSD,Sainte-Eulalie,
+2450013,030000,CSD,Aston-Jonction,
+2450023,030000,CSD,Saint-Wenceslas,
+2450030,030000,CSD,Saint-Célestin,
+2450035,030000,CSD,Saint-Célestin,
+2450042,030000,CSD,Saint-Léonard-d'Aston,
+2450050,030000,CSD,Sainte-Perpétue,
+2450057,030000,CSD,Sainte-Monique,
+2450065,030000,CSD,Grand-Saint-Esprit,
+2450072,030000,CSD,Nicolet,
+2450085,030000,CSD,La Visitation-de-Yamaska,
+2450090,030000,CSD,Saint-Zéphirin-de-Courval,
+2450095,030000,CSD,Saint-Elphège,
+2450100,030000,CSD,Baie-du-Febvre,
+2450113,030000,CSD,Pierreville,
+2450128,030000,CSD,Saint-François-du-Lac,
+2450802,030000,CSD,Odanak,
+2451,030000,CD,,
+2451008,030000,CSD,Maskinongé,
+2451015,032710,CSD,Louiseville,
+2451020,030000,CSD,Yamachiche,
+2451025,030000,CSD,Saint-Barnabé,
+2451030,030000,CSD,Saint-Sévère,
+2451035,030000,CSD,Saint-Léon-le-Grand,
+2451040,030000,CSD,Sainte-Ursule,
+2451045,030000,CSD,Saint-Justin,
+2451050,030000,CSD,Saint-Édouard-de-Maskinongé,
+2451055,030000,CSD,Sainte-Angèle-de-Prémont,
+2451060,030000,CSD,Saint-Paulin,
+2451065,030000,CSD,Saint-Alexis-des-Monts,
+2451070,030000,CSD,Saint-Mathieu-du-Parc,
+2451075,030000,CSD,Saint-Élie-de-Caxton,
+2451080,030000,CSD,Charette,
+2451085,030000,CSD,Saint-Boniface,
+2451090,030000,CSD,Saint-Étienne-des-Grès,
+2452,030000,CD,,
+2452007,030000,CSD,Lavaltrie,
+2452017,030000,CSD,Lanoraie,
+2452030,030000,CSD,Sainte-Élisabeth,
+2452035,032610,CSD,Berthierville,
+2452040,030000,CSD,Sainte-Geneviève-de-Berthier,
+2452045,030000,CSD,Saint-Ignace-de-Loyola,
+2452050,030000,CSD,La Visitation-de-l'Île-Dupas,
+2452055,030000,CSD,Saint-Barthélemy,
+2452062,030000,CSD,Saint-Cuthbert,
+2452070,030000,CSD,Saint-Norbert,
+2452075,030000,CSD,Saint-Cléophas-de-Brandon,
+2452080,032610,CSD,Saint-Gabriel,
+2452085,030000,CSD,Saint-Gabriel-de-Brandon,
+2452090,030000,CSD,Saint-Didace,
+2452095,030000,CSD,Mandeville,
+2453,030000,CD,,
+2453005,030000,CSD,Saint-David,
+2453010,030000,CSD,Massueville,
+2453015,030000,CSD,Saint-Aimé,
+2453020,030000,CSD,Saint-Robert,
+2453025,030000,CSD,Sainte-Victoire-de-Sorel,
+2453032,030000,CSD,Saint-Ours,
+2453040,030000,CSD,Saint-Roch-de-Richelieu,
+2453050,030000,CSD,Saint-Joseph-de-Sorel,
+2453052,030000,CSD,Sorel-Tracy,
+2453065,030000,CSD,Sainte-Anne-de-Sorel,
+2453072,030000,CSD,Yamaska,
+2453085,030000,CSD,Saint-Gérard-Majella,
+2454,030000,CD,,
+2454008,030000,CSD,Saint-Pie,
+2454017,030000,CSD,Saint-Damase,
+2454025,030000,CSD,Sainte-Madeleine,
+2454030,030000,CSD,Sainte-Marie-Madeleine,
+2454035,030000,CSD,La Présentation,
+2454048,030000,CSD,Saint-Hyacinthe,
+2454060,030000,CSD,Saint-Dominique,
+2454065,030000,CSD,Saint-Valérien-de-Milton,
+2454072,030000,CSD,Saint-Liboire,
+2454090,030000,CSD,Saint-Simon,
+2454095,030000,CSD,Sainte-Hélène-de-Bagot,
+2454100,030000,CSD,Saint-Hugues,
+2454105,030000,CSD,Saint-Barnabé-Sud,
+2454110,030000,CSD,Saint-Jude,
+2454115,030000,CSD,Saint-Bernard-de-Michaudville,
+2454120,030000,CSD,Saint-Louis,
+2454125,030000,CSD,Saint-Marcel-de-Richelieu,
+2455,030000,CD,,
+2455008,030000,CSD,Ange-Gardien,
+2455015,030000,CSD,Saint-Paul-d'Abbotsford,
+2455023,030000,CSD,Saint-Césaire,
+2455030,030000,CSD,Sainte-Angèle-de-Monnoir,
+2455037,030000,CSD,Rougemont,
+2455048,030000,CSD,Marieville,
+2455057,030000,CSD,Richelieu,
+2455065,030000,CSD,Saint-Mathias-sur-Richelieu,
+2456,030000,CD,,
+2456005,030000,CSD,Venise-en-Québec,
+2456010,030000,CSD,Saint-Georges-de-Clarenceville,
+2456015,030000,CSD,Noyan,
+2456023,030000,CSD,Lacolle,
+2456030,030000,CSD,Saint-Valentin,
+2456035,030000,CSD,Saint-Paul-de-l'Île-aux-Noix,
+2456042,030000,CSD,Henryville,
+2456050,030000,CSD,Saint-Sébastien,
+2456055,030000,CSD,Saint-Alexandre,
+2456060,030000,CSD,Sainte-Anne-de-Sabrevois,
+2456065,030000,CSD,Saint-Blaise-sur-Richelieu,
+2456083,030000,CSD,Saint-Jean-sur-Richelieu,
+2456097,030000,CSD,Mont-Saint-Grégoire,
+2456105,030000,CSD,Sainte-Brigide-d'Iberville,
+2457,030000,CD,,
+2457005,030000,CSD,Chambly,
+2457010,030000,CSD,Carignan,
+2457020,030000,CSD,Saint-Basile-le-Grand,
+2457025,030000,CSD,McMasterville,
+2457030,030000,CSD,Otterburn Park,
+2457033,030000,CSD,Saint-Jean-Baptiste,
+2457035,030000,CSD,Mont-Saint-Hilaire,
+2457040,030000,CSD,Beloeil,
+2457045,030000,CSD,Saint-Mathieu-de-Beloeil,
+2457050,030000,CSD,Saint-Marc-sur-Richelieu,
+2457057,030000,CSD,Saint-Charles-sur-Richelieu,
+2457068,030000,CSD,Saint-Denis-sur-Richelieu,
+2457075,030000,CSD,Saint-Antoine-sur-Richelieu,
+2458,030000,CD,,
+2458007,030000,CSD,Brossard,
+2458012,032823,CSD,Saint-Lambert,
+2458033,030000,CSD,Boucherville,
+2458037,030000,CSD,Saint-Bruno-de-Montarville,
+2458227,032410,CSD,Longueuil,
+2459,030000,CD,,
+2459010,030000,CSD,Sainte-Julie,
+2459015,030000,CSD,Saint-Amable,
+2459020,032410,CSD,Varennes,
+2459025,030000,CSD,Verchères,
+2459030,030000,CSD,Calixa-Lavallée,
+2459035,030000,CSD,Contrecoeur,
+2460,030000,CD,,
+2460005,030000,CSD,Charlemagne,
+2460013,030000,CSD,Repentigny,
+2460020,030000,CSD,Saint-Sulpice,
+2460028,030000,CSD,L'Assomption,
+2460035,030000,CSD,L'Épiphanie,
+2460040,030000,CSD,L'Épiphanie,
+2461,030000,CD,,
+2461005,030000,CSD,Saint-Paul,
+2461013,030000,CSD,Crabtree,
+2461020,030000,CSD,Saint-Pierre,
+2461025,032620,CSD,Joliette,
+2461027,030000,CSD,Saint-Thomas,
+2461030,030000,CSD,Notre-Dame-des-Prairies,
+2461035,030000,CSD,Saint-Charles-Borromée,
+2461040,030000,CSD,Saint-Ambroise-de-Kildare,
+2461045,030000,CSD,Notre-Dame-de-Lourdes,
+2461050,030000,CSD,Sainte-Mélanie,
+2462,030000,CD,,
+2462007,030000,CSD,Saint-Félix-de-Valois,
+2462015,030000,CSD,Saint-Jean-de-Matha,
+2462020,030000,CSD,Sainte-Béatrix,
+2462025,030000,CSD,Saint-Alphonse-Rodriguez,
+2462030,030000,CSD,Sainte-Marcelline-de-Kildare,
+2462037,032620,CSD,Rawdon,
+2462047,030000,CSD,Chertsey,
+2462053,030000,CSD,Entrelacs,
+2462055,030000,CSD,Notre-Dame-de-la-Merci,
+2462060,032120,CSD,Saint-Donat,
+2462065,030000,CSD,Saint-Côme,
+2462070,030000,CSD,Sainte-Émélie-de-l'Énergie,
+2462075,030000,CSD,Saint-Damien,
+2462080,030000,CSD,Saint-Zénon,
+2462085,032110,CSD,Saint-Michel-des-Saints,
+2462802,030000,CSD,Manawan,
+2462902,030000,CSD,Lac-Minaki,
+2462904,030000,CSD,Lac-Devenyns,
+2462906,030000,CSD,Baie-de-la-Bouteille,
+2462908,032720,CSD,Lac-Matawin,
+2462910,030000,CSD,Lac-Legendre,
+2462912,030000,CSD,Saint-Guillaume-Nord,
+2462914,030000,CSD,Lac-des-Dix-Milles,
+2462916,030000,CSD,Lac-Santé,
+2462918,030000,CSD,Baie-Obaoca,
+2462919,030000,CSD,Lac-Cabasta,
+2462920,030000,CSD,Baie-Atibenne,
+2462922,030000,CSD,Lac-du-Taureau,
+2463,030000,CD,,
+2463005,030000,CSD,Sainte-Marie-Salomé,
+2463013,030000,CSD,Saint-Jacques,
+2463023,030000,CSD,Saint-Alexis,
+2463030,030000,CSD,Saint-Esprit,
+2463035,030000,CSD,Saint-Roch-de-l'Achigan,
+2463040,030000,CSD,Saint-Roch-Ouest,
+2463048,030000,CSD,Saint-Lin - Laurentides,
+2463055,030000,CSD,Saint-Calixte,
+2463060,030000,CSD,Sainte-Julienne,
+2463065,030000,CSD,Saint-Liguori,
+2464,030000,CD,,
+2464008,030000,CSD,Terrebonne,
+2464015,032630,CSD,Mascouche,
+2465,030000,CD,,
+2465005,032420,CSD,Laval,
+2466,032400-032410-032420-032430-032440,CD,,
+2466007,032400,CSD,Montréal-Est,
+2466023,032400,CSD,Montréal,
+2466032,030000,CSD,Westmount,
+2466047,032400,CSD,Montréal-Ouest,
+2466058,030000,CSD,Côte-Saint-Luc,
+2466062,030000,CSD,Hampstead,
+2466072,030000,CSD,Mont-Royal,
+2466087,031610,CSD,Dorval,
+2466092,031610,CSD,L'Île-Dorval,
+2466097,030000,CSD,Pointe-Claire,
+2466102,030000,CSD,Kirkland,
+2466107,030000,CSD,Beaconsfield,
+2466112,030000,CSD,Baie-D'Urfé,
+2466117,030000,CSD,Sainte-Anne-de-Bellevue,
+2466127,030000,CSD,Senneville,
+2466142,030000,CSD,Dollard-Des Ormeaux,
+2466940,032400,CSD,TNO terrestre du TE de Montréal,
+2467,030000,CD,,
+2467005,030000,CSD,Saint-Mathieu,
+2467010,030000,CSD,Saint-Philippe,
+2467015,032440,CSD,La Prairie,
+2467020,030000,CSD,Candiac,
+2467025,030000,CSD,Delson,
+2467030,030000,CSD,Sainte-Catherine,
+2467035,030000,CSD,Saint-Constant,
+2467040,030000,CSD,Saint-Isidore,
+2467045,030000,CSD,Mercier,
+2467050,032440,CSD,Châteauguay,
+2467055,030000,CSD,Léry,
+2467802,030000,CSD,Kahnawake,
+2467940,030000,CSD,TNO terrestre de la MRC de Roussillon,
+2468,030000,CD,,
+2468005,030000,CSD,Saint-Bernard-de-Lacolle,
+2468010,032550,CSD,Hemmingford,
+2468015,032550,CSD,Hemmingford,
+2468020,030000,CSD,Sainte-Clotilde,
+2468025,030000,CSD,Saint-Patrice-de-Sherrington,
+2468030,030000,CSD,Napierville,
+2468035,030000,CSD,Saint-Cyprien-de-Napierville,
+2468040,030000,CSD,Saint-Jacques-le-Mineur,
+2468045,030000,CSD,Saint-Édouard,
+2468050,032110,CSD,Saint-Michel,
+2468055,032530,CSD,Saint-Rémi,
+2469,030000,CD,,
+2469005,030000,CSD,Havelock,
+2469010,030000,CSD,Franklin,
+2469017,030000,CSD,Saint-Chrysostome,
+2469025,030000,CSD,Howick,
+2469030,030000,CSD,Très-Saint-Sacrement,
+2469037,030000,CSD,Ormstown,
+2469045,030000,CSD,Hinchinbrooke,
+2469050,030000,CSD,Elgin,
+2469055,032560,CSD,Huntingdon,
+2469060,030000,CSD,Godmanchester,
+2469065,030000,CSD,Sainte-Barbe,
+2469070,030000,CSD,Saint-Anicet,
+2469075,030000,CSD,Dundee,
+2469802,030000,CSD,Akwesasne,
+2470,030000,CD,,
+2470005,030000,CSD,Saint-Urbain-Premier,
+2470012,030000,CSD,Sainte-Martine,
+2470022,032540,CSD,Beauharnois,
+2470030,030000,CSD,Saint-Étienne-de-Beauharnois,
+2470035,030000,CSD,Saint-Louis-de-Gonzague,
+2470040,030000,CSD,Saint-Stanislas-de-Kostka,
+2470052,032540,CSD,Salaberry-de-Valleyfield,
+2471,030000,CD,,
+2471005,030000,CSD,Rivière-Beaudette,
+2471015,030000,CSD,Saint-Télesphore,
+2471020,030000,CSD,Saint-Polycarpe,
+2471025,030000,CSD,Saint-Zotique,
+2471033,030000,CSD,Les Coteaux,
+2471040,030000,CSD,Coteau-du-Lac,
+2471045,030000,CSD,Saint-Clet,
+2471050,030000,CSD,Les Cèdres,
+2471055,030000,CSD,Pointe-des-Cascades,
+2471060,030000,CSD,L'Île-Perrot,
+2471065,030000,CSD,Notre-Dame-de-l'Île-Perrot,
+2471070,030000,CSD,Pincourt,
+2471075,032520,CSD,Terrasse-Vaudreuil,
+2471083,032520,CSD,Vaudreuil-Dorion,
+2471090,032520,CSD,Vaudreuil-sur-le-Lac,
+2471095,030000,CSD,L'Île-Cadieux,
+2471100,030000,CSD,Hudson,
+2471105,030000,CSD,Saint-Lazare,
+2471110,030000,CSD,Sainte-Marthe,
+2471115,030000,CSD,Sainte-Justine-de-Newton,
+2471125,030000,CSD,Très-Saint-Rédempteur,
+2471133,030000,CSD,Rigaud,
+2471140,030000,CSD,Pointe-Fortune,
+2472,030000,CD,,
+2472005,032330,CSD,Saint-Eustache,
+2472010,030000,CSD,Deux-Montagnes,
+2472015,030000,CSD,Sainte-Marthe-sur-le-Lac,
+2472020,030000,CSD,Pointe-Calumet,
+2472025,030000,CSD,Saint-Joseph-du-Lac,
+2472032,030000,CSD,Oka,
+2472043,030000,CSD,Saint-Placide,
+2472802,030000,CSD,Kanesatake,
+2473005,030000,CSD,Boisbriand,
+2473,030000,CD,,
+2473010,030000,CSD,Sainte-Thérèse,
+2473015,030000,CSD,Blainville,
+2473020,030000,CSD,Rosemère,
+2473025,030000,CSD,Lorraine,
+2473030,030000,CSD,Bois-des-Filion,
+2473035,030000,CSD,Sainte-Anne-des-Plaines,
+2474,030000,CD,,
+2474005,030000,CSD,Mirabel,
+2475,030000,CD,,
+2475005,030000,CSD,Saint-Colomban,
+2475017,032310,CSD,Saint-Jérôme,
+2475028,030000,CSD,Sainte-Sophie,
+2475040,030000,CSD,Prévost,
+2475045,030000,CSD,Saint-Hippolyte,
+2476,030000,CD,,
+2476008,030000,CSD,Saint-André-d'Argenteuil,
+2476020,032320,CSD,Lachute,
+2476025,030000,CSD,Gore,
+2476030,030000,CSD,Mille-Isles,
+2476035,030000,CSD,Wentworth,
+2476043,030000,CSD,Brownsburg-Chatham,
+2476052,030000,CSD,Grenville-sur-la-Rouge,
+2476055,030000,CSD,Grenville,
+2476065,030000,CSD,Harrington,
+2477,030000,CD,,
+2477011,030000,CSD,Estérel,
+2477012,030000,CSD,Sainte-Marguerite-du-Lac-Masson,
+2477022,032220,CSD,Sainte-Adèle,
+2477030,030000,CSD,Piedmont,
+2477035,030000,CSD,Sainte-Anne-des-Lacs,
+2477043,032220,CSD,Saint-Sauveur,
+2477050,030000,CSD,Morin-Heights,
+2477055,030000,CSD,Lac-des-Seize-Îles,
+2477060,030000,CSD,Wentworth-Nord,
+2477065,030000,CSD,Saint-Adolphe-d'Howard,
+2478,030000,CD,,
+2478005,030000,CSD,Val-Morin,
+2478010,030000,CSD,Val-David,
+2478015,030000,CSD,Lantier,
+2478020,030000,CSD,Sainte-Lucie-des-Laurentides,
+2478032,032210,CSD,Sainte-Agathe-des-Monts,
+2478042,030000,CSD,Ivry-sur-le-Lac,
+2478047,030000,CSD,Saint-Faustin - Lac-Carré,
+2478050,030000,CSD,Barkmere,
+2478055,030000,CSD,Montcalm,
+2478060,030000,CSD,Arundel,
+2478065,030000,CSD,Huberdeau,
+2478070,030000,CSD,Amherst,
+2478075,030000,CSD,Brébeuf,
+2478095,030000,CSD,Lac-Supérieur,
+2478100,030000,CSD,Val-des-Lacs,
+2478102,032120-032210,CSD,Mont-Tremblant,
+2478115,030000,CSD,La Conception,
+2478120,030000,CSD,Labelle,
+2478127,030000,CSD,Lac-Tremblant-Nord,
+2478130,031820,CSD,La Minerve,
+2478802,030000,CSD,Doncaster,
+2479,030000,CD,,
+2479005,030000,CSD,Notre-Dame-du-Laus,
+2479010,030000,CSD,Notre-Dame-de-Pontmain,
+2479015,030000,CSD,Lac-du-Cerf,
+2479022,030000,CSD,Saint-Aimé-du-Lac-des-Îles,
+2479025,030000,CSD,Kiamika,
+2479030,030000,CSD,Nominingue,
+2479037,031820,CSD,Rivière-Rouge,
+2479047,030000,CSD,La Macaza,
+2479050,030000,CSD,L'Ascension,
+2479060,030000,CSD,Lac-Saguay,
+2479065,030000,CSD,Chute-Saint-Philippe,
+2479078,030000,CSD,Lac-des-Écorces,
+2479088,031800-031810,CSD,Mont-Laurier,
+2479097,030000,CSD,Ferme-Neuve,
+2479105,030000,CSD,Lac-Saint-Paul,
+2479110,030000,CSD,Mont-Saint-Michel,
+2479115,030000,CSD,Sainte-Anne-du-Lac,
+2479902,030000,CSD,Lac-de-la-Pomme,
+2479904,030000,CSD,Lac-Akonapwehikan,
+2479906,030000,CSD,Lac-Wagwabika,
+2479910,030000,CSD,Lac-Bazinet,
+2479912,030000,CSD,Lac-De La Bidière,
+2479914,030000,CSD,Lac-Oscar,
+2479916,030000,CSD,Lac-de-la-Maison-de-Pierre,
+2479920,030000,CSD,Baie-des-Chaloupes,
+2479922,030000,CSD,Lac-Douaire,
+2479924,030000,CSD,Lac-Ernest,
+2479926,030000,CSD,Lac-Marguerite,
+2480,030000,CD,,
+2480005,030000,CSD,Fassett,
+2480010,030000,CSD,Montebello,
+2480015,030000,CSD,Notre-Dame-de-Bonsecours,
+2480020,030000,CSD,Notre-Dame-de-la-Paix,
+2480027,030000,CSD,Saint-André-Avellin,
+2480037,031930,CSD,Papineauville,
+2480045,030000,CSD,Plaisance,
+2480050,030000,CSD,Thurso,
+2480055,030000,CSD,Lochaber,
+2480060,030000,CSD,Lochaber-Partie-Ouest,
+2480065,030000,CSD,Mayo,
+2480070,030000,CSD,Saint-Sixte,
+2480078,030000,CSD,Ripon,
+2480085,030000,CSD,Mulgrave-et-Derry,
+2480090,030000,CSD,Montpellier,
+2480095,030000,CSD,Lac-Simon,
+2480103,031930,CSD,Chénéville,
+2480110,030000,CSD,Namur,
+2480115,030000,CSD,Boileau,
+2480125,030000,CSD,Saint-Émile-de-Suffolk,
+2480130,030000,CSD,Lac-des-Plages,
+2480135,030000,CSD,Duhamel,
+2480140,030000,CSD,Val-des-Bois,
+2480145,030000,CSD,Bowman,
+2481,030000,CD,,
+2481017,031100,CSD,Gatineau,
+2482,030000,CD,,
+2482005,030000,CSD,L'Ange-Gardien,
+2482010,030000,CSD,Notre-Dame-de-la-Salette,
+2482015,030000,CSD,Val-des-Monts,
+2482020,030000,CSD,Cantley,
+2482025,030000,CSD,Chelsea,
+2482030,031700,CSD,Pontiac,
+2482035,030000,CSD,La Pêche,
+2483,030000,CD,,
+2483005,030000,CSD,Denholm,
+2483010,031910,CSD,Low,
+2483015,030000,CSD,Kazabazua,
+2483020,030000,CSD,Lac-Sainte-Marie,
+2483032,031920,CSD,Gracefield,
+2483040,030000,CSD,Cayamant,
+2483045,030000,CSD,Blue Sea,
+2483050,030000,CSD,Bouchette,
+2483055,031100,CSD,Sainte-Thérèse-de-la-Gatineau,
+2483060,030000,CSD,Messines,
+2483065,031920,CSD,Maniwaki,
+2483070,030000,CSD,Déléage,
+2483075,030000,CSD,Egan-Sud,
+2483085,030000,CSD,Bois-Franc,
+2483088,030000,CSD,Montcerf-Lytton,
+2483090,030000,CSD,Aumond,
+2483095,030000,CSD,Grand-Remous,
+2483802,030000,CSD,Kitigan Zibi,
+2483804,030000,CSD,Lac-Rapide,
+2483902,030000,CSD,Lac-Pythonga,
+2483904,030000,CSD,Cascades-Malignes,
+2483906,030000,CSD,Lac-Lenôtre,
+2483908,030000,CSD,Lac-Moselle,
+2483912,030000,CSD,Dépôt-Échouani,
+2484,030000,CD,,
+2484005,030000,CSD,Bristol,
+2484010,031720,CSD,Shawville,
+2484015,030000,CSD,Clarendon,
+2484020,030000,CSD,Portage-du-Fort,
+2484025,030000,CSD,Bryson,
+2484030,030000,CSD,Campbell's Bay,
+2484035,030000,CSD,L'Île-du-Grand-Calumet,
+2484040,030000,CSD,Litchfield,
+2484045,030000,CSD,Thorne,
+2484050,030000,CSD,Alleyn-et-Cawood,
+2484055,030000,CSD,Otter Lake,
+2484060,030000,CSD,Fort-Coulonge,
+2484065,030000,CSD,Mansfield-et-Pontefract,
+2484070,030000,CSD,Waltham,
+2484082,030000,CSD,L'Isle-aux-Allumettes,
+2484090,030000,CSD,Chichester,
+2484095,030000,CSD,Sheenboro,
+2484100,031710,CSD,Rapides-des-Joachims,
+2484902,030000,CSD,Lac-Nilgaut,
+2485,030000,CD,,
+2485005,031520,CSD,Témiscaming,
+2485010,030000,CSD,Kipawa,
+2485015,030000,CSD,Saint-Édouard-de-Fabre,
+2485020,030000,CSD,Béarn,
+2485025,031510,CSD,Ville-Marie,
+2485030,030000,CSD,Duhamel-Ouest,
+2485037,030000,CSD,Lorrainville,
+2485045,030000,CSD,Saint-Bruno-de-Guigues,
+2485050,030000,CSD,Laverlochère,
+2485055,030000,CSD,Fugèreville,
+2485060,030000,CSD,Latulipe-et-Gaboury,
+2485065,030000,CSD,Belleterre,
+2485070,030000,CSD,Laforce,
+2485075,030000,CSD,Moffet,
+2485080,030000,CSD,Angliers,
+2485085,030000,CSD,Saint-Eugène-de-Guigues,
+2485090,030000,CSD,Notre-Dame-du-Nord,
+2485095,030000,CSD,Guérin,
+2485100,030000,CSD,Nédélec,
+2485105,030000,CSD,Rémigny,
+2485802,030000,CSD,Kebaowek,
+2485803,030000,CSD,Hunter's Point,
+2485804,030000,CSD,Winneway,
+2485806,030000,CSD,Timiskaming,
+2485905,030000,CSD,Laniel,
+2485907,031500,CSD,Les Lacs-du-Témiscamingue,
+2486,030000,CD,,
+2486042,031450,CSD,Rouyn-Noranda,
+2487,030000,CD,,
+2487005,030000,CSD,Duparquet,
+2487010,030000,CSD,Rapide-Danseur,
+2487015,030000,CSD,Roquemaure,
+2487020,030000,CSD,Gallichan,
+2487025,030000,CSD,Palmarolle,
+2487030,030000,CSD,Sainte-Germaine-Boulé,
+2487035,030000,CSD,Poularies,
+2487042,030000,CSD,Taschereau,
+2487050,030000,CSD,Authier,
+2487058,030000,CSD,Macamic,
+2487070,030000,CSD,Sainte-Hélène-de-Mancebourg,
+2487075,030000,CSD,Clerval,
+2487080,030000,CSD,La Reine,
+2487085,030000,CSD,Dupuy,
+2487090,031410,CSD,La Sarre,
+2487095,030000,CSD,Chazel,
+2487100,030000,CSD,Authier-Nord,
+2487105,030000,CSD,Val-Saint-Gilles,
+2487110,030000,CSD,Clermont,
+2487115,030000,CSD,Normétal,
+2487120,032823,CSD,Saint-Lambert,
+2487902,030000,CSD,Lac-Duparquet,
+2487904,030000,CSD,Rivière-Ojima,
+2488,030000,CD,,
+2488005,030000,CSD,Champneuf,
+2488010,030000,CSD,Rochebaucourt,
+2488015,030000,CSD,La Morandière,
+2488022,030000,CSD,Barraute,
+2488030,030000,CSD,La Corne,
+2488035,030000,CSD,Landrienne,
+2488040,030000,CSD,Saint-Marc-de-Figuery,
+2488045,030000,CSD,La Motte,
+2488050,030000,CSD,Saint-Mathieu-d'Harricana,
+2488055,031420,CSD,Amos,
+2488060,030000,CSD,Saint-Félix-de-Dalquier,
+2488065,030000,CSD,Saint-Dominique-du-Rosaire,
+2488070,030000,CSD,Berry,
+2488075,030000,CSD,Trécesson,
+2488080,030000,CSD,Launay,
+2488085,030000,CSD,Sainte-Gertrude-Manneville,
+2488090,030000,CSD,Preissac,
+2488802,030000,CSD,Pikogan,
+2488902,030000,CSD,Lac-Despinassy,
+2488904,030000,CSD,Lac-Chicobi,
+2489,030000,CD,,
+2489008,031470,CSD,Val-d'Or,
+2489010,030000,CSD,Rivière-Héva,
+2489015,031460,CSD,Malartic,
+2489040,031440,CSD,Senneterre,
+2489045,031440,CSD,Senneterre,
+2489050,030000,CSD,Belcourt,
+2489802,030000,CSD,Kitcisakik,
+2489804,030000,CSD,Lac-Simon,
+2489902,030000,CSD,Matchi-Manitou,
+2489908,030000,CSD,Lac-Metei,
+2489910,030000,CSD,Réservoir-Dozois,
+2489912,030000,CSD,Lac-Granet,
+2490,030000,CD,,
+2490012,030000,CSD,La Tuque,
+2490017,030000,CSD,La Bostonnais,
+2490027,030000,CSD,Lac-Édouard,
+2490801,030000,CSD,Coucoucache,
+2490802,030000,CSD,Wemotaci,
+2490804,030000,CSD,Obedjiwan,
+2491,030000,CD,,
+2491005,030000,CSD,Lac-Bouchette,
+2491010,030000,CSD,Saint-André-du-Lac-Saint-Jean,
+2491015,030000,CSD,Saint-François-de-Sales,
+2491020,030000,CSD,Chambord,
+2491025,034340,CSD,Roberval,
+2491030,030000,CSD,Sainte-Hedwidge,
+2491035,030000,CSD,Saint-Prime,
+2491042,034340,CSD,Saint-Félicien,
+2491050,030000,CSD,La Doré,
+2491802,030000,CSD,Mashteuiatsh,
+2491902,034310,CSD,Lac-Ashuapmushuan,
+2492,030000,CD,,
+2492005,030000,CSD,Saint-Augustin,
+2492010,034320,CSD,Péribonka,
+2492015,030000,CSD,Sainte-Jeanne-d'Arc,
+2492022,030000,CSD,Dolbeau-Mistassini,
+2492030,030000,CSD,Albanel,
+2492040,034320,CSD,Normandin,
+2492045,030000,CSD,Saint-Thomas-Didyme,
+2492050,030000,CSD,Saint-Edmond-les-Plaines,
+2492055,030000,CSD,Girardville,
+2492060,030000,CSD,Notre-Dame-de-Lorette,
+2492065,030000,CSD,Saint-Eugène-d'Argentenay,
+2492070,030000,CSD,Saint-Stanislas,
+2492902,030000,CSD,Passes-Dangereuses,
+2492904,030000,CSD,Rivière-Mistassini,
+2493,030000,CD,,
+2493005,034330,CSD,Desbiens,
+2493012,030000,CSD,Métabetchouan - Lac-à-la-Croix,
+2493020,030000,CSD,Hébertville,
+2493025,030000,CSD,Hébertville-Station,
+2493030,030000,CSD,Saint-Bruno,
+2493035,030000,CSD,Saint-Gédéon,
+2493042,034330,CSD,Alma,
+2493045,030000,CSD,Saint-Nazaire,
+2493055,030000,CSD,Labrecque,
+2493060,030000,CSD,Lamarche,
+2493065,030000,CSD,L'Ascension-de-Notre-Seigneur,
+2493070,030000,CSD,Saint-Henri-de-Taillon,
+2493075,030000,CSD,Sainte-Monique,
+2493080,030000,CSD,Saint-Ludger-de-Milot,
+2493902,030000,CSD,Mont-Apica,
+2493904,030000,CSD,Lac-Moncouche,
+2493906,030000,CSD,Lac-Achouakan,
+2493908,030000,CSD,Belle-Rivière,
+2494,030000,CD,,
+2494068,030000,CSD,Saguenay,
+2494205,030000,CSD,Petit-Saguenay,
+2494210,030000,CSD,L'Anse-Saint-Jean,
+2494215,030000,CSD,Rivière-Éternité,
+2494220,030000,CSD,Ferland-et-Boilleau,
+2494225,030000,CSD,Saint-Félix-d'Otis,
+2494230,030000,CSD,Sainte-Rose-du-Nord,
+2494235,030000,CSD,Saint-Fulgence,
+2494240,030000,CSD,Saint-Honoré,
+2494245,030000,CSD,Saint-David-de-Falardeau,
+2494250,030000,CSD,Bégin,
+2494255,030000,CSD,Saint-Ambroise,
+2494260,030000,CSD,Saint-Charles-de-Bourget,
+2494265,030000,CSD,Larouche,
+2494926,030000,CSD,Lalemant,
+2494928,030000,CSD,Lac-Ministuk,
+2494930,030000,CSD,Mont-Valin,
+2495,030000,CD,,
+2495005,030000,CSD,Tadoussac,
+2495010,030000,CSD,Sacré-Coeur,
+2495018,030000,CSD,Les Bergeronnes,
+2495025,030000,CSD,Les Escoumins,
+2495032,030000,CSD,Longue-Rive,
+2495040,032811,CSD,Portneuf-sur-Mer,
+2495045,030000,CSD,Forestville,
+2495050,030000,CSD,Colombier,
+2495902,030000,CSD,Lac-au-Brochet,
+2496,030000,CD,,
+2496005,030000,CSD,Baie-Trinité,
+2496010,030000,CSD,Godbout,
+2496015,030000,CSD,Franquelin,
+2496020,030000,CSD,Baie-Comeau,
+2496025,030000,CSD,Pointe-Lebel,
+2496030,030000,CSD,Pointe-aux-Outardes,
+2496035,030000,CSD,Chute-aux-Outardes,
+2496040,030000,CSD,Ragueneau,
+2496802,030000,CSD,Pessamit,
+2496902,030000,CSD,Rivière-aux-Outardes,
+2497,030000,CD,,
+2497007,030000,CSD,Sept-Îles,
+2497022,030000,CSD,Port-Cartier,
+2497035,033400,CSD,Fermont,
+2497040,033300,CSD,Schefferville,
+does not exist ,030000,CSD,,
+2497804,030000,CSD,Maliotenam,
+2497806,030000,CSD,Kawawachikamach,
+2497808,030000,CSD,Matimekosh,
+2497810,030000,CSD,Lac-John,
+2497902,030000,CSD,Rivière-Nipissis,
+2497904,030000,CSD,Lac-Walker,
+2497906,030000,CSD,Rivière-Mouchalagane,
+2497908,030000,CSD,Caniapiscau,
+2497912,030000,CSD,Lac-Juillet,
+2497914,030000,CSD,Lac-Vacher,
+2498,036600,CD,,
+2498005,036600,CSD,Blanc-Sablon,
+2498010,030000,CSD,Bonne-Espérance,
+2498012,030000,CSD,Saint-Augustin,
+2498014,030000,CSD,Gros-Mécatina,
+2498015,030000,CSD,Côte-Nord-du-Golfe-du-Saint-Laurent,
+2498020,036700,CSD,L'Île-d'Anticosti,
+2498025,036400,CSD,Natashquan,
+2498030,030000,CSD,Aguanish,
+2498035,030000,CSD,Baie-Johan-Beetz,
+2498040,030000,CSD,Havre-Saint-Pierre,
+2498045,030000,CSD,Longue-Pointe-de-Mingan,
+2498050,030000,CSD,Rivière-Saint-Jean,
+2498055,030000,CSD,Rivière-au-Tonnerre,
+2498802,030000,CSD,Pakuashipi,
+2498804,030000,CSD,La Romaine,
+2498808,030000,CSD,Mingan,
+2498904,030000,CSD,Lac-Jérôme,
+2498912,030000,CSD,Petit-Mécatina,
+2499,030000,CD,,
+2499005,031430,CSD,Lebel-sur-Quévillon,
+2499010,030000,CSD,Waswanipi,
+2499015,031300,CSD,Matagami,
+2499020,030000,CSD,Chapais,
+2499025,034100,CSD,Chibougamau,
+2499030,030000,CSD,Mistissini,
+2499035,031200,CSD,Waskaganish,
+2499040,030000,CSD,Nemaska,
+2499045,030000,CSD,Eastmain,
+2499050,030000,CSD,Wemindji,
+2499055,030000,CSD,Chisasibi,
+2499060,033100,CSD,Baie-James,
+2499065,030000,CSD,Kawawachikamach,
+2499070,030000,CSD,Whapmagoostui,
+2499075,038600,CSD,Kuujjuarapik,
+2499080,038500,CSD,Umiujaq,
+2499085,038400,CSD,Inukjuak,
+2499090,039800,CSD,Kangiqsualujjuaq,
+2499095,030000,CSD,Kuujjuaq,
+2499100,039600,CSD,Tasiujaq,
+2499105,039500,CSD,Aupaluk,
+2499110,039400,CSD,Kangirsuk,
+2499115,039300,CSD,Quaqtaq,
+2499120,038300,CSD,Puvirnituq,
+2499125,038200,CSD,Akulivik,
+2499130,039200,CSD,Kangiqsujuaq,
+2499135,039100,CSD,Salluit,
+2499140,038100,CSD,Ivujivik,
+2499802,030000,CSD,Waswanipi,
+2499804,030000,CSD,Mistissini,
+2499806,031200,CSD,Waskaganish,
+2499808,030000,CSD,Nemaska,
+2499810,030000,CSD,Eastmain,
+2499812,030000,CSD,Wemindji,
+2499814,030000,CSD,Chisasibi,
+2499816,030000,CSD,Whapmagoostui,
+2499818,030000,CSD,Oujé-Bougoumou,
+2499875,030000,CSD,Kiggaluk,
+2499877,038600,CSD,Kuujjuarapik,
+2499878,038500,CSD,Umiujaq,
+2499879,038400,CSD,Inukjuak,
+2499883,038200,CSD,Akulivik,
+2499887,039100,CSD,Salluit,
+2499888,039200,CSD,Kangiqsujuaq,
+2499891,039500,CSD,Aupaluk,
+2499892,039600,CSD,Tasiujaq,
+2499893,039700,CSD,Kuujjuaq,
+2499894,039800,CSD,Kangiqsualujjuaq,
+2499896,030000,CSD,Killiniq,
+2499902,030000,CSD,Rivière-Koksoak,
+2499904,030000,CSD,Baie-d'Hudson,
+13,010000,PT,New Brunswick,
+1301,015500,CD,Saint John,
+1301002,010000,CSD,St. Martins,
+1301006,015500,CSD,Saint John,
+1301016,010000,CSD,Musquash,
+1301001,010000,CSD,Saint Martins,
+1301004,010000,CSD,Simonds,
+1302,015600-015700,CD,Charlotte,
+1302044,010000,CSD,Dumbarton,
+1302012,010000,CSD,Blacks Harbour,
+1302006,010000,CSD,West Isles,
+1302008,010000,CSD,Lepreau,
+1302039,010000,CSD,Saint James,
+1302042,010000,CSD,Saint David,
+1302028,010000,CSD,Saint Croix,
+1302034,015600,CSD,Saint Stephen,
+1302024,010000,CSD,Saint Andrews,
+1302031,010000,CSD,Dufferin,
+1302001,015700,CSD,Grand Manan,
+1302016,010000,CSD,Saint George,
+1302021,010000,CSD,Saint Patrick,
+1302004,010000,CSD,Campobello,
+1302052,015700,CSD,Grand Manan,
+1302014,010000,CSD,Clarendon,
+1302037,015600,CSD,St. Stephen,
+1302026,010000,CSD,Saint Andrews,
+1302018,010000,CSD,St. George,
+1302011,010000,CSD,Pennfield,
+1303,015200,CD,Sunbury,
+1303001,010000,CSD,Blissville,
+1303006,010000,CSD,Fredericton Junction,
+1303016,010000,CSD,Maugerville,
+1303008,010000,CSD,Lincoln,
+1303018,010000,CSD,Northfield,
+1303012,015200,CSD,Oromocto,
+1303004,010000,CSD,Gladstone,
+1303014,010000,CSD,Sheffield,
+1303013,015200,CSD,Oromocto 26,
+1303011,010000,CSD,Burton,
+1303005,010000,CSD,Tracy,
+1304,010000,,CD,
+1304018,010000,CSD,Waterborough,
+1304011,010000,CSD,Cambridge,
+1304022,010000,CSD,Minto,
+1304013,010000,CSD,Cambridge-Narrows,
+1304021,010000,CSD,Canning,
+1304025,010000,CSD,Chipman,
+1304014,010000,CSD,Johnston,
+1304004,010000,CSD,Gagetown,
+1304016,010000,CSD,Brunswick,
+1304008,010000,CSD,Wickham,
+1304005,010000,CSD,Gagetown,
+1304006,010000,CSD,Hampstead,
+1304024,010000,CSD,Chipman,
+1305,015400,CD,Kings,
+1304001,010000,CSD,Petersville,
+1305034,010000,CSD,Springfield,
+1305004,010000,CSD,Upham,
+1305024,010000,CSD,Waterford,
+1305023,015400,CSD,Sussex Corner,
+1305018,010000,CSD,Norton,
+1305057,010000,CSD,Quispamsis,
+1305008,010000,CSD,Rothesay,
+1305011,010000,CSD,Westfield,
+1305015,010000,CSD,Grand Bay-Westfield,
+1305028,010000,CSD,Havelock,
+1305021,015400,CSD,Sussex,
+1305045,010000,CSD,Rothesay,
+1305031,010000,CSD,Studholm,
+1305036,010000,CSD,Kars,
+1305038,010000,CSD,Greenwich,
+1305014,010000,CSD,Kingston,
+1305007,010000,CSD,Hampton,
+1305001,010000,CSD,Hammond,
+1305006,010000,CSD,Hampton,
+1305026,010000,CSD,Cardwell,
+1305022,015400,CSD,Sussex,
+1305016,010000,CSD,Norton,
+1306,010000,CD,Albert,
+1306008,010000,CSD,Elgin,
+1306020,010000,CSD,Riverview,
+1306004,010000,CSD,Harvey,
+1306006,010000,CSD,Alma,
+1306007,010000,CSD,Alma,
+1306014,010000,CSD,Coverdale,
+1306011,010000,CSD,Hillsborough,
+1306025,010000,CSD,Hillsborough,
+1306003,010000,CSD,Riverside-Albert,
+1306001,010000,CSD,Hopewell,
+1307,010000,CD,Westmorland,
+1307016,010000,CSD,Shediac,
+1307008,010000,CSD,Sackville,
+1307022,016400,CSD,Moncton,
+1307013,010000,CSD,Memramcook,
+1307019,016400,CSD,Moncton,
+1307009,010000,CSD,Sackville,
+1307007,010000,CSD,Cap-Pelé,
+1307001,010000,CSD,Westmorland,
+1307045,010000,CSD,Dieppe,
+1307011,010000,CSD,Dorchester,
+1307029,010000,CSD,Petitcodiac,
+1307014,010000,CSD,Fort Folly 1,
+1307005,010000,CSD,Beaubassin East / Beaubassin-est,
+1307024,010000,CSD,Salisbury,
+1307002,010000,CSD,Port Elgin,
+1307052,010000,CSD,Shediac,
+1307012,010000,CSD,Dorchester,
+1307004,010000,CSD,Botsford,
+1307028,010000,CSD,Salisbury,
+1308,016300,CD,Kent,
+1308017,010000,CSD,Rexton,
+1308012,010000,CSD,Huskisson,
+1308008,010000,CSD,Saint-Paul,
+1308021,010000,CSD,Saint-Louis,
+1308020,010000,CSD,Indian Island 28,
+1308003,010000,CSD,Buctouche 16,
+1308014,010000,CSD,Weldford,
+1308007,010000,CSD,Saint-Antoine,
+1308026,016100,CSD,Carleton,
+1308016,010000,CSD,Richibucto,
+1308024,010000,CSD,Acadieville,
+1308022,010000,CSD,Saint-Louis de Kent,
+1308001,010000,CSD,Dundas,
+1308015,010000,CSD,Richibucto 15,
+1308010,010000,CSD,Harcourt,
+1308019,010000,CSD,Saint-Charles,
+1308006,010000,CSD,Saint Mary,
+1308018,010000,CSD,Richibucto,
+1308004,010000,CSD,Wellington,
+1308005,010000,CSD,Bouctouche,
+1309,010000,CD,Northumberland,
+1309044,010000,CSD,Burnt Church 14,
+1309031,010000,CSD,Newcastle,
+1309021,010000,CSD,Blissfield,
+1309006,010000,CSD,Chatham,
+1309018,016200,CSD,Blackville,
+1309011,010000,CSD,Derby,
+1309027,017600,CSD,Upper Miramichi,
+1309022,016200,CSD,Doaktown,
+1309036,010000,CSD,Alnwick,
+1309026,010000,CSD,Southesk,
+1309023,010000,CSD,Red Bank 4,
+1309017,010000,CSD,Rogersville,
+1309019,016200,CSD,Blackville,
+1309001,010000,CSD,Hardwicke,
+1309004,010000,CSD,Glenelg,
+1309034,010000,CSD,Big Hole Tract 8 (South Half),
+1309047,010000,CSD,Tabusintac 9,
+1309014,010000,CSD,Nelson,
+1309038,010000,CSD,Neguac,
+1309028,010000,CSD,Northesk,
+1309050,017600,CSD,Miramichi,
+1309035,010000,CSD,Eel Ground 2,
+1309016,010000,CSD,Rogersville,
+1310,015100,CD,York,
+1310005,010000,CSD,Harvey,
+1310006,010000,CSD,McAdam,
+1310013,010000,CSD,Meductic,
+1310011,010000,CSD,Canterbury,
+1310036,016200,CSD,Stanley,
+1310024,010000,CSD,Southampton,
+1310032,015100,CSD,Fredericton,
+1310021,010000,CSD,Queensbury,
+1310034,010000,CSD,Devon 30,
+1310001,010000,CSD,New Maryland,
+1310031,010000,CSD,Saint Marys,
+1310037,016200,CSD,Stanley,
+1310012,010000,CSD,Canterbury,
+1310025,010000,CSD,Millville,
+1310026,010000,CSD,Bright,
+1310018,010000,CSD,Kingsclear,
+1310002,010000,CSD,New Maryland,
+1310016,010000,CSD,Prince William,
+1310007,010000,CSD,McAdam,
+1310014,010000,CSD,Dumfries,
+1310054,010000,CSD,Nackawic,
+1310028,010000,CSD,Douglas,
+1310019,010000,CSD,Kingsclear 6,
+1310004,010000,CSD,Manners Sutton,
+1310008,010000,CSD,North Lake,
+1311,016100,CD,Carleton,
+1311018,010000,CSD,Wilmot,
+1311019,010000,CSD,Centreville,
+1311005,016100,CSD,Woodstock 23,
+1311024,010000,CSD,Peel,
+1311012,010000,CSD,Hartland,
+1311008,010000,CSD,Northampton,
+1311026,010000,CSD,Aberdeen,
+1311004,016100,CSD,Woodstock,
+1311001,010000,CSD,Richmond,
+1311028,016300,CSD,Kent,
+1311011,010000,CSD,Brighton,
+1311031,010000,CSD,Wicklow,
+1311027,010000,CSD,Florenceville-Bristol,
+1311014,010000,CSD,Wakefield,
+1311030,010000,CSD,Bath,
+1311021,010000,CSD,Simonds,
+1311006,016100,CSD,Woodstock,
+1312,017300,CD,Victoria,
+1312002,010000,CSD,Aroostook,
+1312023,010000,CSD,Drummond,
+1312019,017300,CSD,Grand Falls / Grand-Sault,
+1312008,010000,CSD,Gordon,
+1312006,010000,CSD,Perth-Andover,
+1312016,017300,CSD,Grand Falls,
+1312021,010000,CSD,Drummond,
+1312011,010000,CSD,Lorne,
+1312001,010000,CSD,Andover,
+1312014,010000,CSD,Denmark,
+1312009,010000,CSD,Plaster Rock,
+1312007,010000,CSD,Tobique 20,
+1312004,010000,CSD,Perth,
+1313,017100,CD,Madawaska,
+1313022,010000,CSD,Saint-Joseph,
+1313004,010000,CSD,Saint-Léonard,
+1313012,010000,CSD,Sainte-Anne-de-Madawaska,
+1313039,010000,CSD,Clair,
+1313024,010000,CSD,Saint-Jacques,
+1313028,017100,CSD,Madawaska,
+1313027,017100,CSD,Edmundston,
+1313033,010000,CSD,St. Hilaire,
+1313038,010000,CSD,Clair,
+1313042,010000,CSD,Saint-François de Madawaska,
+1313036,010000,CSD,Lac-Baker,
+1313020,010000,CSD,St. Basile 10,
+1313032,010000,CSD,Saint-Hilaire,
+1313008,010000,CSD,Notre-Dame-de-Lourdes,
+1313006,010000,CSD,St. Leonard,
+1313041,010000,CSD,Saint-François,
+1313001,010000,CSD,Saint-André,
+1313011,010000,CSD,Sainte-Anne,
+1313034,010000,CSD,Baker Brook,
+1313002,010000,CSD,Saint-André,
+1313037,010000,CSD,Lac Baker,
+1313015,010000,CSD,Rivière-Verte,
+1313035,010000,CSD,Baker-Brook,
+1313018,010000,CSD,Saint-Basile,
+1313014,010000,CSD,Rivière-Verte,
+1314,017210-017220,CD,Restigouche,
+1314015,010000,CSD,Tide Head,
+1314017,010000,CSD,Dalhousie,
+1314021,010000,CSD,Saint-Quentin,
+1314001,010000,CSD,Durham,
+1314004,010000,CSD,Charlo,
+1314012,010000,CSD,Addington,
+1314019,010000,CSD,Kedgwick,
+1314014,017200-017220,CSD,Campbellton,
+1314025,010000,CSD,Belledune,
+1314016,010000,CSD,Eldon,
+1314010,010000,CSD,Eel River 3,
+1314005,010000,CSD,Balmoral,
+1314008,010000,CSD,Dalhousie,
+1314011,010000,CSD,Eel River Crossing,
+1314022,010000,CSD,Saint-Quentin,
+1314006,010000,CSD,Balmoral,
+1314026,010000,CSD,Indian Ranch,
+1314013,010000,CSD,Atholville,
+1314003,010000,CSD,Colborne,
+1314018,010000,CSD,Grimmer,
+1315,010000,CD,Gloucester,
+1315029,010000,CSD,Shippagan,
+1315026,010000,CSD,Caraquet,
+1315038,010000,CSD,Grande-Anse,
+1315008,017500,CSD,Bathurst,
+1315006,010000,CSD,Allardville,
+1315013,010000,CSD,Pointe-Verte,
+1315032,010000,CSD,Lamèque,
+1315012,010000,CSD,Beresford,
+1315036,010000,CSD,Bertrand,
+1315022,010000,CSD,Saint-Isidore,
+1315033,010000,CSD,Sainte-Marie - Saint-Raphaël,
+1315028,010000,CSD,Caraquet,
+1315024,010000,CSD,Inkerman,
+1315037,010000,CSD,Nigadoo,
+1315011,017500,CSD,Bathurst,
+1315027,010000,CSD,Bas-Caraquet,
+1315001,010000,CSD,Saumarez,
+1315014,010000,CSD,Petit-Rocher,
+1315010,010000,CSD,Pabineau 11,
+1315040,010000,CSD,Maisonnette,
+1315017,010000,CSD,Saint-Léolin,
+1315021,010000,CSD,Saint-Isidore,
+1315015,010000,CSD,Beresford,
+1315016,010000,CSD,New Bandon,
+1315030,010000,CSD,Le Goulet,
+1315019,010000,CSD,Paquetville,
+1315020,010000,CSD,Paquetville,
+1315003,010000,CSD,Tracadie-Sheila,
+1315031,010000,CSD,Shippagan,
+12,010000,PT,Nova Scotia,
+1201,011600,CD,Shelburne,
+1201009,010000,CSD,Lockeport,
+1201006,011600,CSD,Shelburne,
+1201004,010000,CSD,Clark's Harbour,
+1201001,010000,CSD,Barrington,
+1201008,011600,CSD,Shelburne,
+1202,011700,CD,Yarmouth,
+1202006,011700,CSD,Yarmouth,
+1202001,010000,CSD,Argyle,
+1202004,011700,CSD,Yarmouth,
+1202040,011700,CSD,Yarmouth 33,
+1203,011300,CD,Digby,
+1203006,011300,CSD,Digby,
+1203009,010000,CSD,Bear River (Part) 6,
+1203004,011300,CSD,Digby,
+1203001,010000,CSD,Clare,
+1204,011500,CD,Queens,
+1204010,011500,CSD,Queens,
+1204009,010000,CSD,Ponhook Lake 10,
+1204015,010000,CSD,Wildcat 12,
+1205,011200,CD,Annapolis,
+1205009,011200,CSD,"Annapolis, Subd. B",
+1205002,010000,CSD,Bear River (Part) 6,
+1205006,010000,CSD,Bear River 6B,
+1205014,011200,CSD,"Annapolis, Subd. C",
+1205016,010000,CSD,Middleton,
+1205004,011200,CSD,"Annapolis, Subd. A",
+1205012,010000,CSD,Bridgetown,
+1205008,011200,CSD,Annapolis Royal,
+1205001,011200,CSD,"Annapolis, Subd. D",
+1206,011400,CD,Lunenburg,
+1206016,010000,CSD,New Ross 20,
+1206004,010000,CSD,Bridgewater,
+1206008,010000,CSD,Mahone Bay,
+1206014,010000,CSD,Pennal 19,
+1206009,010000,CSD,Chester,
+1206001,011400,CSD,Lunenburg,
+1206006,011400,CSD,Lunenburg,
+1206011,010000,CSD,Gold River 21,
+1207,011100,CD,Kings,
+1207012,010000,CSD,Kentville,
+1207024,010000,CSD,Wolfville,
+1207021,011100,CSD,"Kings, Subd. D",
+1207027,010000,CSD,Glooscap 35,
+1207001,011100,CSD,"Kings, Subd. A",
+1207016,011100,CSD,"Kings, Subd. B",
+1207002,010000,CSD,Cambridge 32,
+1207004,010000,CSD,Berwick,
+1207011,011100,CSD,"Kings, Subd. C",
+1208,012500,CD,Hants,
+1208001,012500,CSD,West Hants,
+1208008,012500,CSD,East Hants,
+1208014,010000,CSD,Indian Brook 14,
+1208002,010000,CSD,Windsor,
+1208004,010000,CSD,Hantsport,
+1209,012700-012800,CD,Halifax,
+1209038,010000,CSD,Sheet Harbour 36,
+1209029,010000,CSD,Shubenacadie 13,
+1209037,010000,CSD,Beaver Lake 17,
+1209019,010000,CSD,Cole Harbour 30,
+1209034,012700-012800,CSD,Halifax,
+1210,012300-012400-012600,CD,Colchester,
+1210006,010000,CSD,Truro,
+1210003,010000,CSD,Millbrook 27,
+1210002,010000,CSD,Stewiacke,
+1210008,012300-012400-012600,CSD,"Colchester, Subd. B",
+1210001,012300-012400-012600,CSD,"Colchester, Subd. C",
+1210012,012300-012400-012600,CSD,"Colchester, Subd. A",
+1211,012100-012200,CD,Cumberland,
+1211009,012100-012200,CSD,"Cumberland, Subd. C",
+1211006,012100-012200,CSD,"Cumberland, Subd. B",
+1211014,012100-012200,CSD,"Cumberland, Subd. D",
+1211011,010000,CSD,Amherst,
+1211002,010000,CSD,Parrsboro,
+1211012,010000,CSD,Oxford,
+1211001,012100-012200,CSD,"Cumberland, Subd. A",
+1211008,010000,CSD,Springhill,
+1212,013100,CD,Pictou,
+1212023,010000,CSD,Merigomish Harbour 31,
+1212016,010000,CSD,Trenton,
+1212001,013100,CSD,"Pictou, Subd. A",
+1212009,010000,CSD,Stellarton,
+1212019,010000,CSD,Fisher's Grant 24,
+1212006,013100,CSD,"Pictou, Subd. B",
+1212014,010000,CSD,New Glasgow,
+1212011,013100,CSD,"Pictou, Subd. C",
+1212008,010000,CSD,Westville,
+1212004,013100,CSD,Pictou,
+1213,013200,CD,Guysborough,
+1213004,013200,CSD,Guysborough,
+1213008,010000,CSD,Mulgrave,
+1213001,010000,CSD,St. Mary's,
+1213006,010000,CSD,Canso,
+1214,013300,CD,Antigonish,
+1214001,013300,CSD,"Antigonish, Subd. A",
+1214006,013300,CSD,"Antigonish, Subd. B",
+1214002,013300,CSD,Antigonish,
+1214010,010000,CSD,Pomquet And Afton 23,
+1215,014200-014300,CD,Inverness,
+1215002,010000,CSD,Port Hawkesbury,
+1215001,014200-014300,CSD,"Inverness, Subd. C",
+1215006,014200-014300,CSD,"Inverness, Subd. B",
+1215011,014200-014300,CSD,"Inverness, Subd. A",
+1215008,010000,CSD,Whycocomagh 2,
+1216,014100,CD,Richmond,
+1216011,014100,CSD,"Richmond, Subd. B",
+1216014,010000,CSD,Chapel Island 5,
+1216001,014100,CSD,"Richmond, Subd. C",
+1216006,014100,CSD,"Richmond, Subd. A",
+1217,014500,CD,Cape Breton,
+1217020,010000,CSD,Eskasoni 3,
+1217008,010000,CSD,Membertou 28B,
+1217030,014500,CSD,Cape Breton,
+1218,014400,CD,Victoria,
+1218003,010000,CSD,Wagmatcook 1,
+1218006,014400,CSD,"Victoria, Subd. A",
+1218001,014400,CSD,"Victoria, Subd. B",
+11,010000,PT,Prince Edward Island,
+1101,018100,CD,Kings,
+1101032,018100,CSD,Lot 44,
+1101031,018100,CSD,Lot 43,
+1101019,018100,CSD,Lot 53,
+1101038,018100,CSD,Lot 46,
+1101016,018100,CSD,Lot 52,
+1101011,018100,CSD,Lot 66,
+1101024,018100,CSD,Georgetown,
+1101051,018100,CSD,Lot 38,
+1101039,018100,CSD,Lot 47,
+1101041,018100,CSD,Lot 42,
+1101022,018100,CSD,"Kings, Royalty",
+1101006,018100,CSD,Lot 63,
+1101021,018100,CSD,Cardigan,
+1101048,018100,CSD,Morell,
+1101029,018100,CSD,Lot 56,
+1101046,018100,CSD,Lot 40,
+1101028,018100,CSD,Lot 55,
+1101014,018100,CSD,Lot 51,
+1101008,018100,CSD,Lot 61,
+1101004,018100,CSD,Murray River,
+1101036,018100,CSD,Souris,
+1101044,018100,CSD,St. Peters Bay,
+1101049,018100,CSD,Lot 39,
+1101050,018100,CSD,Morell 2,
+1101034,018100,CSD,Lot 45,
+1101009,018100,CSD,Lot 59,
+1101018,018100,CSD,Montague,
+1101002,018100,CSD,Murray Harbour,
+1101042,018100,CSD,Lot 41,
+1101026,018100,CSD,Lot 54,
+1101001,018100,CSD,Lot 64,
+1102,018300,CD,Queens,
+1102044,018300,CSD,Lot 24,
+1102008,018300,CSD,Lot 57,
+1102057,018300,CSD,Scotchfort 4,
+1102040,018300,CSD,Miltonvale Park,
+1102031,018300,CSD,Lot 29,
+1102030,018300,CSD,Rocky Point 3,
+1102043,018300,CSD,Hunter River,
+1102049,018300,CSD,Lot 33,
+1102050,018300,CSD,Union Road,
+1102058,018300,CSD,Lot 37,
+1102042,018300,CSD,Lot 23,
+1102009,018300,CSD,Lot 50,
+1102065,018300,CSD,Winsloe South,
+1102080,018300,CSD,Stratford,
+1102006,018300,CSD,Lot 58,
+1102001,018300,CSD,Lot 62,
+1102034,018300,CSD,Crapaud,
+1102032,018300,CSD,Victoria,
+1102039,018300,CSD,Lot 21,
+1102059,018300,CSD,Mount Stewart,
+1102052,018300,CSD,Lot 34,
+1102012,018300,CSD,Lot 49,
+1102041,018300,CSD,Lot 22,
+1102014,018300,CSD,Lot 48,
+1102004,018300,CSD,Lot 60,
+1102037,018300,CSD,Clyde River,
+1102048,018300,CSD,Brackley,
+1102051,018300,CSD,Breadalbane,
+1102045,018300,CSD,Resort Mun. Stan.B.-Hope R.-Bayv.-Cavend.-N.Rust.,
+1102038,018300,CSD,Lot 20,
+1102085,018300,CSD,Cornwall,
+1102029,018300,CSD,Lot 30,
+1102054,018300,CSD,Lot 35,
+1102046,018300,CSD,North Rustico,
+1102075,018300,CSD,Charlottetown,
+1102036,018300,CSD,Lot 67,
+1102028,018300,CSD,Lot 65,
+1102033,018300,CSD,Meadowbank,
+1102056,018300,CSD,Lot 36,
+1102026,018300,CSD,Lot 31,
+1102070,018300,CSD,Warren Grove,
+1103,018200,CD,Prince,
+1103054,018200,CSD,Lot 3,
+1103049,018200,CSD,Lot 5,
+1103008,018200,CSD,Kinkora,
+1103010,018200,CSD,Central Bedeque,
+1103052,018200,CSD,Alberton,
+1103016,018200,CSD,Lot 18,
+1103033,018200,CSD,Tyne Valley,
+1103013,018200,CSD,Bedeque,
+1103056,018200,CSD,Lot 2,
+1103041,018200,CSD,Lot 6,
+1103028,018200,CSD,Lot 16,
+1103011,018200,CSD,Lot 25,
+1103023,018200,CSD,Linkletter,
+1103038,018200,CSD,Lot 10,
+1103046,018200,CSD,Lot 8,
+1103012,018200,CSD,Lot 19,
+1103024,018200,CSD,Miscouche,
+1103029,018200,CSD,Wellington,
+1103031,018200,CSD,Lot 14,
+1103034,018200,CSD,Lot 12,
+1103014,018200,CSD,Kensington,
+1103058,018200,CSD,Lot 1,
+1103044,018200,CSD,Lot 9,
+1103009,018200,CSD,Lot 26,
+1103006,018200,CSD,Lot 27,
+1103059,018200,CSD,Tignish,
+1103051,018200,CSD,Lot 4,
+1103036,018200,CSD,Lot 11,
+1103032,018200,CSD,Lot 13,
+1103027,018200,CSD,Abrams Village,
+1103005,018200,CSD,Borden-Carleton,
+1103035,018200,CSD,Lennox Island 1,
+1103062,018200,CSD,Miminegash,
+1103048,018200,CSD,Lot 7,
+1103042,018200,CSD,O'Leary,
+1103018,018200,CSD,Sherbrooke,
+1103026,018200,CSD,Lot 15,
+1103025,018200,CSD,Summerside,
+1103019,018200,CSD,Lot 17,
+1103057,018200,CSD,St. Louis,
+1103001,018200,CSD,Lot 28,
+10,020000,PT,Newfoundland and Labrador,
+1001,021100-021200-021400,CD,Division No. 1,
+1001343,020000,CSD,Old Perlican,
+1001505,020000,CSD,Pouch Cove,
+1001511,020000,CSD,Logy Bay-Middle Cove-Outer Cove,
+1001509,020000,CSD,Torbay,
+1001519,021300-021310-021320,CSD,St. John's,
+1001149,020000,CSD,Ferryland,
+1001113,020000,CSD,Trepassey,
+1001379,020000,CSD,Harbour Grace,
+1001259,021100-021200-021400,CSD,"Division No. 1, Subd. A",
+1001203,021100-021200-021400,CSD,"Division No. 1, Subd. X",
+1001321,021100-021200-021400,CSD,"Division No. 1, Subd. F",
+1001357,021100-021200-021400,CSD,"Division No. 1, Subd. H",
+1001328,020000,CSD,New Perlican,
+1001490,021100-021200-021400,CSD,"Division No. 1, Subd. R",
+1001494,020000,CSD,Wabana,
+1001485,020000,CSD,Conception Bay South,
+1001415,021100-021200-021400,CSD,"Division No. 1, Subd. L",
+1001267,020000,CSD,Southern Harbour,
+1001263,020000,CSD,Long Harbour-Mount Arlington Heights,
+1001131,020000,CSD,Renews-Cappahayden,
+1001101,021100-021200-021400,CSD,"Division No. 1, Subd. V",
+1001405,021100-021200-021400,CSD,"Division No. 1, Subd. K",
+1001352,020000,CSD,Small Point-Adam's Cove-Blackhead-Broad Cove,
+1001517,020000,CSD,Paradise,
+1001316,020000,CSD,Heart's Desire,
+1001312,020000,CSD,Heart's Delight-Islington,
+1001396,020000,CSD,Spaniard's Bay,
+1001421,021100-021200-021400,CSD,"Division No. 1, Subd. M",
+1001289,020000,CSD,Chapel Arm,
+1001181,020000,CSD,Riverhead,
+1001186,020000,CSD,Admirals Beach,
+1001174,020000,CSD,Gaskiers-Point La Haye,
+1001219,020000,CSD,Branch,
+1001434,020000,CSD,South River,
+1001565,021100-021200-021400,CSD,"Division No. 1, Subd. D",
+1001361,020000,CSD,Salmon Cove,
+1001374,021100-021200-021400,CSD,"Division No. 1, Subd. I",
+1001308,020000,CSD,Whiteway,
+1001557,020000,CSD,Bay Bulls,
+1001429,020000,CSD,Clarke's Beach,
+1001472,020000,CSD,Holyrood,
+1001285,020000,CSD,Norman's Cove-Long Cove,
+1001234,021100-021200-021400,CSD,"Division No. 1, Subd. B",
+1001207,020000,CSD,Colinet,
+1001178,020000,CSD,St. Mary's,
+1001228,020000,CSD,St. Bride's,
+1001120,020000,CSD,St. Shott's,
+1001225,020000,CSD,Point Lance,
+1001512,020000,CSD,Bauline,
+1001469,020000,CSD,Harbour Main-Chapel's Cove-Lakeview,
+1001298,020000,CSD,Whitbourne,
+1001332,020000,CSD,Winterton,
+1001551,020000,CSD,Petty Harbour-Maddox Cove,
+1001385,020000,CSD,Upper Island Cove,
+1001456,020000,CSD,Colliers,
+1001559,020000,CSD,Witless Bay,
+1001240,020000,CSD,Placentia,
+1001169,020000,CSD,St. Vincent's-St. Stephen's-Peter's River,
+1001339,021100-021200-021400,CSD,"Division No. 1, Subd. G",
+1001347,020000,CSD,Bay de Verde,
+1001335,020000,CSD,Hant's Harbour,
+1001504,020000,CSD,Portugal Cove-St. Philip's,
+1001365,020000,CSD,Victoria,
+1001304,021100-021200-021400,CSD,"Division No. 1, Subd. E",
+1001409,020000,CSD,Bay Roberts,
+1001446,020000,CSD,Brigus,
+1001441,021100-021200-021400,CSD,"Division No. 1, Subd. N",
+1001426,020000,CSD,North River,
+1001124,021100-021200-021400,CSD,"Division No. 1, Subd. U",
+1001270,020000,CSD,Arnold's Cove,
+1001281,020000,CSD,Chance Cove,
+1001197,020000,CSD,Mount Carmel-Mitchells Brook-St. Catherines,
+1001144,020000,CSD,Aquaforte,
+1001140,020000,CSD,Port Kirwan,
+1001461,020000,CSD,Conception Harbour,
+1001437,020000,CSD,Cupids,
+1001391,021100-021200-021400,CSD,"Division No. 1, Subd. J",
+1001277,020000,CSD,Sunnyside,
+1001293,021100-021200-021400,CSD,"Division No. 1, Subd. Y",
+1001464,020000,CSD,Avondale,
+1001126,020000,CSD,Cape Broyle,
+1001254,020000,CSD,Fox Harbour,
+1001370,020000,CSD,Carbonear,
+1001105,020000,CSD,Portugal Cove South,
+1001325,020000,CSD,Heart's Content,
+1001542,020000,CSD,Mount Pearl,
+1001394,020000,CSD,Bishop's Cove,
+1001274,020000,CSD,Come By Chance,
+1001452,021100-021200-021400,CSD,"Division No. 1, Subd. O",
+1001155,021100-021200-021400,CSD,"Division No. 1, Subd. W",
+1001136,020000,CSD,Fermeuse,
+1001192,020000,CSD,St. Joseph's,
+1001214,021100-021200-021400,CSD,"Division No. 1, Subd. C",
+1001507,020000,CSD,Flatrock,
+1001375,020000,CSD,Bryant's Cove,
+1002,022100,CD,Division No. 2,
+1002023,020000,CSD,Winterland,
+1002011,020000,CSD,Lawn,
+1002029,022100,CSD,"Division No. 2, Subd. J",
+1002039,020000,CSD,English Harbour East,
+1002055,020000,CSD,Little Bay East,
+1002025,020000,CSD,Fox Cove-Mortier,
+1002002,020000,CSD,Lewin's Cove,
+1002026,022100,CSD,"Division No. 2, Subd. I",
+1002014,020000,CSD,Point May,
+1002027,020000,CSD,Bay L'Argent,
+1002041,020000,CSD,St. Bernard's-Jacques Fontaine,
+1002001,022100,CSD,"Division No. 2, Subd. E",
+1002009,022100,CSD,"Division No. 2, Subd. G",
+1002018,020000,CSD,Fortune,
+1002013,020000,CSD,Lord's Cove,
+1002034,020000,CSD,Parkers Cove,
+1002033,020000,CSD,Rushoon,
+1002016,022100,CSD,"Division No. 2, Subd. H",
+1002021,020000,CSD,Garnish,
+1002015,020000,CSD,Point au Gaul,
+1002040,020000,CSD,Baine Harbour,
+1002044,022100,CSD,"Division No. 2, Subd. L",
+1002012,020000,CSD,Lamaline,
+1002030,020000,CSD,Grand le Pierre,
+1002048,022100,CSD,"Division No. 2, Subd. K",
+1002022,022100,CSD,"Division No. 2, Subd. D",
+1002037,020000,CSD,Red Harbour,
+1002005,022100,CSD,Burin,
+1002019,020000,CSD,Grand Bank,
+1002031,022100,CSD,"Division No. 2, Subd. C",
+1002036,020000,CSD,Terrenceville,
+1002008,020000,CSD,St. Lawrence,
+1002006,022100,CSD,"Division No. 2, Subd. F",
+1002024,020000,CSD,Marystown,
+1002017,020000,CSD,Frenchman's Cove,
+1003,022400,CD,Division No. 3,
+1003001,022400,CSD,"Division No. 3, Subd. A",
+1003020,020000,CSD,Morrisville,
+1003003,020000,CSD,St. Jacques-Coomb's Cove,
+1003042,022400,CSD,"Division No. 3, Subd. J",
+1003032,020000,CSD,Isle aux Morts,
+1003801,020000,CSD,Samiajij Miawpukek,
+1003034,022400-022410-022420,CSD,Channel-Port aux Basques,
+1003010,020000,CSD,Seal Cove (Fortune Bay),
+1003005,020000,CSD,Pool's Cove,
+1003011,020000,CSD,Hermitage-Sandyville,
+1003038,022400,CSD,"Division No. 3, Subd. I",
+1003021,022400,CSD,"Division No. 3, Subd. E",
+1003008,020000,CSD,Harbour Breton,
+1003031,022400,CSD,"Division No. 3, Subd. H",
+1003024,022400,CSD,"Division No. 3, Subd. F",
+1003045,020000,CSD,Rose Blanche-Harbour le Cou,
+1003014,022400,CSD,"Division No. 3, Subd. D",
+1003019,020000,CSD,St. Alban's,
+1003012,020000,CSD,Gaultois,
+1003028,022300,CSD,Burgeo,
+1003009,022400,CSD,"Division No. 3, Subd. C",
+1003004,020000,CSD,Belleoram,
+1003018,020000,CSD,Milltown-Head of Bay d'Espoir,
+1003002,020000,CSD,Rencontre East,
+1003006,022400,CSD,"Division No. 3, Subd. B",
+1003033,020000,CSD,Burnt Islands,
+1003026,022300,CSD,Ramea,
+1004,023400,CD,Division No. 4,
+1004019,020000,CSD,Stephenville,
+1004020,020000,CSD,Kippens,
+1004042,020000,CSD,Port au Port West-Aguathuna-Felix Cove,
+1004011,023400,CSD,"Division No. 4, Subd. C",
+1004006,023400,CSD,"Division No. 4, Subd. B",
+1004017,020000,CSD,Gallants,
+1004021,020000,CSD,Port au Port East,
+1004033,020000,CSD,Cape St. George,
+1004001,023400,CSD,"Division No. 4, Subd. A",
+1004022,023400,CSD,"Division No. 4, Subd. E",
+1004016,023400,CSD,"Division No. 4, Subd. D",
+1004018,020000,CSD,Stephenville Crossing,
+1004013,020000,CSD,St. George's,
+1004037,020000,CSD,Lourdes,
+1005,023100,CD,Division No. 5,
+1005016,023100,CSD,"Division No. 5, Subd. C",
+1005019,023100,CSD,"Division No. 5, Subd. D",
+1005025,020000,CSD,Meadows,
+1005024,020000,CSD,Lark Harbour,
+1005035,020000,CSD,York Harbour,
+1005003,023100,CSD,"Division No. 5, Subd. G",
+1005017,020000,CSD,Massey Drive,
+1005033,020000,CSD,Mount Moriah,
+1005022,020000,CSD,McIvers,
+1005004,023200,CSD,Deer Lake,
+1005011,020000,CSD,Steady Brook,
+1005006,020000,CSD,Howley,
+1005005,020000,CSD,Jackson's Arm,
+1005008,020000,CSD,Hampden,
+1005009,020000,CSD,Reidville,
+1005023,020000,CSD,Cox's Cove,
+1005028,020000,CSD,Hughes Brook,
+1005020,020000,CSD,Humber Arm South,
+1005018,023100,CSD,Corner Brook,
+1005012,020000,CSD,Pasadena,
+1005007,023100,CSD,"Division No. 5, Subd. E",
+1005014,020000,CSD,Cormack,
+1005010,023100,CSD,"Division No. 5, Subd. F",
+1005030,020000,CSD,Irishtown-Summerside,
+1005015,020000,CSD,Gillams,
+1005001,023100,CSD,"Division No. 5, Subd. A",
+1006,024200,CD,Division No. 6,
+1006014,024200,CSD,"Division No. 6, Subd. C",
+1006008,024200,CSD,"Division No. 6, Subd. E",
+1006017,024200,CSD,Grand Falls-Windsor,
+1006015,020000,CSD,Northern Arm,
+1006029,024200,CSD,"Division No. 6, Subd. A",
+1006001,024200,CSD,"Division No. 6, Subd. D",
+1006011,020000,CSD,Appleton,
+1006003,020000,CSD,Norris Arm,
+1006021,020000,CSD,Peterview,
+1006009,025500,CSD,Gander,
+1006031,024100,CSD,Buchans,
+1006012,020000,CSD,Glenwood,
+1006022,020000,CSD,Botwood,
+1006019,020000,CSD,Bishop's Falls,
+1006026,020000,CSD,Badger,
+1006028,020000,CSD,Millertown,
+1007,025200-025300-025400,CD,Division No. 7,
+1007056,025200-025300-025400,CSD,"Division No. 7, Subd. A",
+1007017,020000,CSD,Little Catalina,
+1007046,020000,CSD,Salvage,
+1007047,020000,CSD,Gambo,
+1007039,020000,CSD,Savage Cove-Sandy Cove,
+1007031,025200-025300-025400,CSD,"Division No. 7, Subd. E",
+1007032,020000,CSD,Musgravetown,
+1007048,020000,CSD,St. Brendan's,
+1007054,020000,CSD,Greenspond,
+1007038,025200-025300-025400,CSD,"Division No. 7, Subd. D",
+1007057,020000,CSD,Dover,
+1007041,020000,CSD,Happy Adventure,
+1007040,025700,CSD,Terra Nova,
+1007013,025400,CSD,Clarenville,
+1007028,025200-025300-025400,CSD,"Division No. 7, Subd. F",
+1007014,025200-025300-025400,CSD,"Division No. 7, Subd. J",
+1007023,025200-025300,CSD,Bonavista,
+1007042,020000,CSD,Eastport,
+1007006,025200-025300-025400,CSD,"Division No. 7, Subd. L",
+1007022,020000,CSD,Trinity Bay North,
+1007044,020000,CSD,Glovertown,
+1007015,020000,CSD,Trinity (Trinity Bay),
+1007001,025200-025300-025400,CSD,"Division No. 7, Subd. M",
+1007036,020000,CSD,Port Blandford,
+1007018,025200-025300-025400,CSD,"Division No. 7, Subd. I",
+1007050,020000,CSD,Centreville-Wareham-Trinity,
+1007025,020000,CSD,Keels,
+1007049,020000,CSD,Hare Bay,
+1007027,020000,CSD,King's Cove,
+1007045,025200-025300-025400,CSD,"Division No. 7, Subd. N",
+1007016,020000,CSD,Port Rexton,
+1007009,025200-025300-025400,CSD,"Division No. 7, Subd. K",
+1007020,020000,CSD,Elliston,
+1007037,020000,CSD,Traytown,
+1007060,020000,CSD,New-Wes-Valley,
+1007026,020000,CSD,Duntara,
+1007067,020000,CSD,Indian Bay,
+1007043,020000,CSD,Sandringham,
+1007051,025200-025300-025400,CSD,"Division No. 7, Subd. B",
+1007024,025200-025300-025400,CSD,"Division No. 7, Subd. G",
+1008,020000,CD,Division No. 8,
+1008004,020000,CSD,Lumsden,
+1008052,020000,CSD,"Division No. 8, Subd. D",
+1008075,020000,CSD,Fleur de Lys,
+1008045,020000,CSD,Little Burnt Bay,
+1008093,020000,CSD,Westport,
+1008069,020000,CSD,King's Point,
+1008070,020000,CSD,Nippers Harbour,
+1008032,020000,CSD,Cottlesville,
+1008022,020000,CSD,Joe Batt's Arm-Barr'd Islands-Shoal Bay,
+1008025,020000,CSD,Seldom-Little Seldom,
+1008036,020000,CSD,"Division No. 8, Subd. G",
+1008073,020000,CSD,Tilt Cove,
+1008096,020000,CSD,Woodstock,
+1008072,020000,CSD,Middle Arm,
+1008008,020000,CSD,"Division No. 8, Subd. L",
+1008076,020000,CSD,LaScie,
+1008062,020000,CSD,Port Anson,
+1008001,020000,CSD,"Division No. 8, Subd. M",
+1008031,020000,CSD,"Division No. 8, Subd. H",
+1008067,020000,CSD,"Division No. 8, Subd. O",
+1008046,020000,CSD,"Division No. 8, Subd. E",
+1008079,020000,CSD,Baie Verte,
+1008038,020000,CSD,Birchy Bay,
+1008039,020000,CSD,Comfort Cove-Newstead,
+1008098,020000,CSD,Miles Cove,
+1008049,020000,CSD,Point Leamington,
+1008059,020000,CSD,South Brook,
+1008021,020000,CSD,Fogo,
+1008040,020000,CSD,Baytona,
+1008048,020000,CSD,Leading Tickles,
+1008060,020000,CSD,Robert's Arm,
+1008074,020000,CSD,"Division No. 8, Subd. A",
+1008006,020000,CSD,Musgrave Harbour,
+1008026,020000,CSD,"Division No. 8, Subd. I",
+1008077,020000,CSD,Brent's Cove,
+1008065,020000,CSD,"Division No. 8, Subd. P",
+1008037,020000,CSD,Campbellton,
+1008043,020000,CSD,Embree,
+1008035,020000,CSD,Twillingate,
+1008078,020000,CSD,Pacquet,
+1008020,020000,CSD,Fogo Island Region (Part),
+1008011,020000,CSD,Carmanville,
+1008092,020000,CSD,Coachman's Cove,
+1008058,020000,CSD,"Division No. 8, Subd. C",
+1008056,020000,CSD,Lushes Bight-Beaumont-Beaumont North,
+1008044,020000,CSD,Lewisporte,
+1008053,020000,CSD,Pilley's Island,
+1008054,020000,CSD,Triton,
+1008063,020000,CSD,Little Bay,
+1008024,020000,CSD,Change Islands,
+1008091,025600,CSD,Seal Cove (White Bay),
+1008042,020000,CSD,"Division No. 8, Subd. F",
+1008071,020000,CSD,Burlington,
+1008029,020000,CSD,Crow Head,
+1008047,020000,CSD,Point of Bay,
+1008033,020000,CSD,Summerford,
+1008095,020000,CSD,Ming's Bight,
+1008064,020000,CSD,Little Bay Islands,
+1008055,020000,CSD,Brighton,
+1008066,020000,CSD,Beachside,
+1008061,020000,CSD,Springdale,
+1008023,020000,CSD,Tilting,
+1009,026100,CD,Division No. 9,
+1009032,020000,CSD,St. Lunaire-Griquet,
+1009029,020000,CSD,St. Anthony,
+1009019,026300,CSD,Port Saunders,
+1009018,026200,CSD,Hawke's Bay,
+1009048,020000,CSD,River of Ponds,
+1009037,020000,CSD,Sally's Cove,
+1009009,026100,CSD,"Division No. 9, Subd. A",
+1009022,020000,CSD,Port au Choix,
+1009021,026100,CSD,"Division No. 9, Subd. C",
+1009030,020000,CSD,Glenburnie-Birchy Head-Shoal Brook,
+1009020,020000,CSD,St. Pauls,
+1009034,020000,CSD,Cook's Harbour,
+1009031,026100,CSD,"Division No. 9, Subd. D",
+1009013,020000,CSD,Rocky Harbour,
+1009008,020000,CSD,Conche,
+1009007,020000,CSD,Roddickton-Bide Arm,
+1009042,020000,CSD,Bellburns,
+1009016,020000,CSD,Cow Head,
+1009024,020000,CSD,Flower's Cove,
+1009026,020000,CSD,Bird Cove,
+1009041,026100,CSD,"Division No. 9, Subd. H",
+1009017,020000,CSD,Parson's Pond,
+1009012,020000,CSD,Norris Point,
+1009001,026100,CSD,"Division No. 9, Subd. F",
+1009035,020000,CSD,Raleigh,
+1009039,020000,CSD,Goose Cove East,
+1009028,020000,CSD,Main Brook,
+1009004,020000,CSD,Englee,
+1009047,026100,CSD,"Division No. 9, Subd. G",
+1009015,020000,CSD,Daniel's Harbour,
+1009011,020000,CSD,"Woody Point, Bonne Bay",
+1009023,020000,CSD,Anchor Point,
+1009010,020000,CSD,Trout River,
+1010,020000,CD,Division No. 10,
+1010020,020000,CSD,"Division No. 10, Subd. C",
+1010012,027300,CSD,"Cartwright, Labrador",
+1010034,029200,CSD,Wabush,
+1010008,020000,CSD,"Division No. 10, Subd. B",
+1010013,020000,CSD,Charlottetown (Labrador),
+1010001,020000,CSD,"Division No. 10, Subd. A",
+1010032,029200,CSD,Labrador City,
+1010042,020000,CSD,"Division No. 10, Subd. E",
+1010802,020000,CSD,Sheshatshiu 3,
+1010005,020000,CSD,Forteau,
+1010006,020000,CSD,West St. Modeste,
+1010025,020000,CSD,Happy Valley-Goose Bay,
+1010007,020000,CSD,Pinware,
+1010011,020000,CSD,Mary's Harbour,
+1010029,020000,CSD,"Division No. 10, Subd. D",
+1010002,020000,CSD,L'Anse-au-Loup,
+1010009,020000,CSD,Port Hope Simpson,
+1010004,027100,CSD,L'Anse-au-Clair,
+1010801,020000,CSD,Natuashish 2,
+1010003,027100,CSD,Red Bay,
+1010010,020000,CSD,St. Lewis,
+1010022,020000,CSD,North West River,
+1011,020000,CD,Division No. 11,
+1011030,027600,CSD,Hopedale,
+1011005,020000,CSD,"Division No. 11, Subd. C",
+1011040,020000,CSD,"Division No. 11, Subd. E",
+1011015,027500,CSD,Postville,
+1011035,027700,CSD,Nain,
+1011020,027500,CSD,Makkovik,
+1011010,027400,CSD,Rigolet,
+60,090000,PT,Yukon,
+6001,090000,CD,Yukon,
+6001003,092300,CSD,Watson Lake,
+6001004,092400,CSD,Faro,
+6001006,092100,CSD,Teslin,
+6001007,092100,CSD,Teslin Post 13,
+6001008,090000,CSD,Carcross 4,
+6001009,091700,CSD,Whitehorse,
+6001010,090000,CSD,Lake Laberge 1,
+6001012,091400,CSD,Carmacks,
+6001016,090000,CSD,Klukshu,
+6001018,091600,CSD,Haines Junction,
+6001019,090000,CSD,Kloo Lake,
+6001022,091200,CSD,Mayo,
+6001029,091100,CSD,Dawson,
+6001031,090000,CSD,Moosehide Creek 2,
+6001032,090000,CSD,Upper Liard,
+6001033,090000,CSD,Two Mile Village,
+6001034,090000,CSD,Two and One-Half Mile Village,
+6001036,090000,CSD,Tagish,
+6001037,092400,CSD,Ross River,
+6001038,090000,CSD,Champagne Landing 10,
+6001039,090000,CSD,Burwash Landing,
+6001041,091400,CSD,Pelly Crossing,
+6001042,091300,CSD,Beaver Creek,
+6001043,093200,CSD,Old Crow,
+6001044,090000,CSD,Mt. Lorne,
+6001045,090000,CSD,"Yukon, Unorganized",
+6001046,090000,CSD,Swift River,
+6001047,090000,CSD,Johnsons Crossing,
+6001048,090000,CSD,Carcross,
+6001049,090000,CSD,Destruction Bay,
+6001050,090000,CSD,Stewart Crossing,
+6001052,090000,CSD,Keno Hill,
+6001055,090000,CSD,Ibex Valley,
+6001057,092100,CSD,Teslin,
+6001058,090000,CSD,Marsh Lake,
+6001059,090000,CSD,Macpherson-Grizzly Valley,
+6001060,091700,CSD,"Whitehorse, Unorganized",
+61,090000,PT,Northwest Territories,
+6101,096540,CD,Region 1,
+6101007,094500,CSD,Norman Wells,
+6101003,094710,CSD,Déline,
+6101012,094720,CSD,Colville Lake,
+6101009,094600,CSD,Fort Good Hope,
+6101005,094500,CSD,Tulita,
+6102,094500,CD,Region 2,
+6102034,095320,CSD,Whatì,
+6102052,095320,CSD,Wekweètì,
+6102049,090000,CSD,Gamètì,
+6102031,095320,CSD,Behchokò,
+6103,095320,CD,Region 3,
+6103016,095400,CSD,Hay River,
+6103018,095600,CSD,Fort Resolution,
+6103003,095400,CSD,Enterprise,
+6103001,095500,CSD,Fort Smith,
+6103020,095700,CSD,Lutselk'e,
+6104,094300,CD,Region 4,
+6104023,095310,CSD,Yellowknife,
+6104021,090000,CSD,Detah,
+6106,095500,CD,Region 6 (5?),
+6106097,095500,CSD,"Fort Smith, Unorganized",
+6106013,094300,CSD,Jean Marie River,
+6106014,095200,CSD,Fort Providence,
+6106038,094300,CSD,Fort Simpson,
+6106017,095400,CSD,Hay River Dene 1,
+6106044,094400,CSD,Wrigley,
+6106010,090000,CSD,Nahanni Butte,
+6106005,090000,CSD,Kakisa,
+6106026,090000,CSD,Reliance,
+6106006,094200,CSD,Trout Lake,
+6106004,090000,CSD,Salt Plains 195,
+6106009,094200,CSD,Fort Liard,
+6107,095310,CD,Region 7 (6?),
+6107025,096530,CSD,Aklavik,
+6107010,096550,CSD,Tsiigehtchic,
+6107017,096540,CSD,Inuvik,
+6107015,096550,CSD,Fort McPherson,
+6107095,096310,CSD,Ulukhaktok,
+6107014,096420,CSD,Paulatuk,
+6107063,096540,CSD,"Inuvik, Unorganized",
+6107041,096210,CSD,Sachs Harbour,
+6107036,096520,CSD,Tuktoyaktuk,
+62,090000,PT,Nunavut,
+6204,090000,CD,Baffin,
+6204019,090000,CSD,Nanisivik,
+6204009,098220,CSD,Pangnirtung,
+6204025,099210,CSD,Grise Fiord,
+6204018,098110,CSD,Arctic Bay,
+6204003,098230,CSD,Iqaluit,
+6204005,098240,CSD,Kimmirut,
+6204030,090000,CSD,"Baffin, Unorganized",
+6204022,099110,CSD,Resolute,
+6204010,098210,CSD,Qikiqtarjuaq,
+6204020,098120,CSD,Pond Inlet,
+6204015,098130,CSD,Clyde River,
+6204012,097720,CSD,Igloolik,
+6204011,097710,CSD,Hall Beach,
+6204001,097910,CSD,Sanikiluaq,
+6204007,098250,CSD,Cape Dorset,
+6205,090000,CD,Keewatin,
+6205027,097730,CSD,Repulse Bay,
+6205017,097620,CSD,Rankin Inlet,
+6205016,090000,CSD,Whale Cove,
+6205014,097810,CSD,Coral Harbour,
+6205033,090000,CSD,"Keewatin, Unorganized",
+6205015,097610,CSD,Arviat,
+6205019,097630,CSD,Chesterfield Inlet,
+6205023,097510,CSD,Baker Lake,
+6208,090000,CD,Kitikmeot,
+6208098,090000,CSD,"Kitikmeot, Unorganized",
+6208068,090000,CSD,Umingmaktok,
+6208047,097420,CSD,Kugaaruk,
+6208073,097110,CSD,Cambridge Bay,
+6208059,097210,CSD,Kugluktuk,
+6208081,097410,CSD,Gjoa Haven,
+6208087,097310,CSD,Taloyoak,
6208065,090000,CSD,Bathurst Inlet,
\ No newline at end of file
diff --git a/web/Jstyle.html b/assets/Jstyle.html
similarity index 97%
rename from web/Jstyle.html
rename to assets/Jstyle.html
index c485193..22a2bfd 100644
--- a/web/Jstyle.html
+++ b/assets/Jstyle.html
@@ -94,7 +94,7 @@
-