local-operator-ui 0.23.5 → 0.24.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/out/main/index.js +1054 -26
  2. package/out/preload/index.js +67 -0
  3. package/out/renderer/assets/{_basePickBy-D4coj-Zm.js → _basePickBy-DoNdsg5T.js} +1 -1
  4. package/out/renderer/assets/{_baseUniq-DAEbH_3z.js → _baseUniq-CoibNQAD.js} +1 -1
  5. package/out/renderer/assets/{agent-details-page-D-xNhXvx.js → agent-details-page-BM4zDGYu.js} +2 -7
  6. package/out/renderer/assets/{agent-hub-page-CKXN3u6s.js → agent-hub-page-CFE4uUAt.js} +1 -1
  7. package/out/renderer/assets/{agents-page-D65K6j2M.js → agents-page-D799_Amn.js} +2 -2
  8. package/out/renderer/assets/{arc-BlvB4PhC.js → arc-Cj2iYoCg.js} +1 -1
  9. package/out/renderer/assets/{architectureDiagram-IEHRJDOE-CvZJcWeU.js → architectureDiagram-IEHRJDOE-KrV-vSSa.js} +1 -1
  10. package/out/renderer/assets/arrow-left-q4TRrNyq.js +6 -0
  11. package/out/renderer/assets/{blockDiagram-JOT3LUYC-BMd6KMd5.js → blockDiagram-JOT3LUYC-Df6pDgEx.js} +1 -1
  12. package/out/renderer/assets/browser-page-CLYONBaS.js +1 -0
  13. package/out/renderer/assets/{c4Diagram-VJAJSXHY-BUlquVjI.js → c4Diagram-VJAJSXHY-BVN6qT8a.js} +1 -1
  14. package/out/renderer/assets/channel-rutBf-Jk.js +1 -0
  15. package/out/renderer/assets/{chunk-4BMEZGHF-Dq4D45ka.js → chunk-4BMEZGHF-BejZ_nyP.js} +1 -1
  16. package/out/renderer/assets/{chunk-A2AXSNBT-8hN2U7_S.js → chunk-A2AXSNBT-Dvmo1N75.js} +1 -1
  17. package/out/renderer/assets/{chunk-AEK57VVT-vkdYK5_H.js → chunk-AEK57VVT-C-82VDDz.js} +1 -1
  18. package/out/renderer/assets/{chunk-D6G4REZN-DtHijAJK.js → chunk-D6G4REZN-DKsNw0Ex.js} +1 -1
  19. package/out/renderer/assets/{chunk-RZ5BOZE2-BG_n-Dpc.js → chunk-RZ5BOZE2-DMt2JPsW.js} +1 -1
  20. package/out/renderer/assets/{chunk-XZIHB7SX-oW4okgGG.js → chunk-XZIHB7SX-DNG3JUvH.js} +1 -1
  21. package/out/renderer/assets/classDiagram-GIVACNV2-U2a69Wcq.js +1 -0
  22. package/out/renderer/assets/classDiagram-v2-COTLJTTW-U2a69Wcq.js +1 -0
  23. package/out/renderer/assets/clone-DAVEg1KS.js +1 -0
  24. package/out/renderer/assets/{compact-pagination-3zG6jPY7.js → compact-pagination-mQgprp_u.js} +1 -1
  25. package/out/renderer/assets/{dagre-OKDRZEBW-xlvQYBbv.js → dagre-OKDRZEBW-lSCTlWxT.js} +1 -1
  26. package/out/renderer/assets/{diagram-SSKATNLV-VzhyKBLb.js → diagram-SSKATNLV-nD4ymC_6.js} +1 -1
  27. package/out/renderer/assets/{diagram-VNBRO52H-CuRJg2_t.js → diagram-VNBRO52H-Cg7T__9y.js} +1 -1
  28. package/out/renderer/assets/{erDiagram-Q7BY3M3F-BnCry3Si.js → erDiagram-Q7BY3M3F-CxRWzdnz.js} +1 -1
  29. package/out/renderer/assets/{flowDiagram-4HSFHLVR-CS9jIyC0.js → flowDiagram-4HSFHLVR-DXpCv_Jj.js} +1 -1
  30. package/out/renderer/assets/{ganttDiagram-APWFNJXF-DBPxDdCn.js → ganttDiagram-APWFNJXF-7GnVcg50.js} +5 -5
  31. package/out/renderer/assets/{gitGraphDiagram-7IBYFJ6S-7-crLOsi.js → gitGraphDiagram-7IBYFJ6S-c_F0batK.js} +1 -1
  32. package/out/renderer/assets/{graph-CKz74ji7.js → graph-D7SKwIHV.js} +1 -1
  33. package/out/renderer/assets/icon-BOBHgcVR.css +1 -0
  34. package/out/renderer/assets/{icon-BKN32L9m.js → icon-Cj67f9xD.js} +41 -41
  35. package/out/renderer/assets/{index-CAH0q3E0.js → index-C9PXzKcM.js} +1 -1
  36. package/out/renderer/assets/{index-BjL1SFH-.js → index-DCbYOn58.js} +1 -1
  37. package/out/renderer/assets/{index-Cu3eVvps.js → index-DVpZx5bQ.js} +361 -361
  38. package/out/renderer/assets/{infoDiagram-PH2N3AL5-C7U7d6DN.js → infoDiagram-PH2N3AL5-CkBK4mKw.js} +1 -1
  39. package/out/renderer/assets/{installer-CQ49q6Wl.js → installer-B8aRlHMm.js} +3 -8
  40. package/out/renderer/assets/{journeyDiagram-U35MCT3I-COoalwEy.js → journeyDiagram-U35MCT3I-DOP_vcVj.js} +1 -1
  41. package/out/renderer/assets/{kanban-definition-NDS4AKOZ-CqL0RFf1.js → kanban-definition-NDS4AKOZ-Cqlk5CfS.js} +1 -1
  42. package/out/renderer/assets/{layout-o5PuZhEk.js → layout-Q9EOEPeJ.js} +1 -1
  43. package/out/renderer/assets/{legacy-agents-page-jbLK4W7r.js → legacy-agents-page-4FlrsC_-.js} +1 -1
  44. package/out/renderer/assets/{mermaid.core-I7TjkqEd.js → mermaid.core-DusUPS3m.js} +5 -5
  45. package/out/renderer/assets/{mindmap-definition-ALO5MXBD-DFJljuVS.js → mindmap-definition-ALO5MXBD-D9LEgOC1.js} +1 -1
  46. package/out/renderer/assets/{page-header-DmPpO-Cq.js → page-header-E6dQzCNG.js} +1 -1
  47. package/out/renderer/assets/{parseISO-CPYQmx7c.js → parseISO-DcM7sCOE.js} +1 -1
  48. package/out/renderer/assets/{pieDiagram-IB7DONF6-DnSbhL-u.js → pieDiagram-IB7DONF6-D4zuD970.js} +1 -1
  49. package/out/renderer/assets/{quadrantDiagram-7GDLP6J5-CnVFP4nc.js → quadrantDiagram-7GDLP6J5-otQZupuD.js} +1 -1
  50. package/out/renderer/assets/{radar-MK3ICKWK-jc13-8Gm.js → radar-MK3ICKWK-BqbgjUWl.js} +1 -1
  51. package/out/renderer/assets/{radient-auth-buttons-DSsDdGeq.js → radient-auth-buttons-D6nz-MAf.js} +1 -1
  52. package/out/renderer/assets/{requirementDiagram-KVF5MWMF-CvoG3Crg.js → requirementDiagram-KVF5MWMF-BZ5cqRuL.js} +1 -1
  53. package/out/renderer/assets/{sankeyDiagram-QLVOVGJD-jODqfto1.js → sankeyDiagram-QLVOVGJD-gaFfM0N3.js} +1 -1
  54. package/out/renderer/assets/{schedules-page-CC_TImm_.js → schedules-page-DLZeHC22.js} +8 -8
  55. package/out/renderer/assets/{sequenceDiagram-X6HHIX6F-DmLIMMaw.js → sequenceDiagram-X6HHIX6F-DjOP83pX.js} +1 -1
  56. package/out/renderer/assets/settings-page-CZKUbUmk.js +97 -0
  57. package/out/renderer/assets/shield-check-CUWADg7Y.js +6 -0
  58. package/out/renderer/assets/{square-pen-BFCcRX3Q.js → square-pen-BFfkEYdr.js} +1 -1
  59. package/out/renderer/assets/{stateDiagram-DGXRK772-DB3OebGt.js → stateDiagram-DGXRK772-BF2gd-7x.js} +1 -1
  60. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-CBKEzmZ4.js +1 -0
  61. package/out/renderer/assets/{timeline-definition-BDJGKUSR-CE85RXiW.js → timeline-definition-BDJGKUSR-DH2vcjvX.js} +1 -1
  62. package/out/renderer/assets/{use-agent-like-mutation-DIms4HoY.js → use-agent-like-mutation-C-SB1Z3H.js} +1 -1
  63. package/out/renderer/assets/{xychartDiagram-VJFVF3MP-EqEBcnqy.js → xychartDiagram-VJFVF3MP-owIgstRn.js} +1 -1
  64. package/out/renderer/index.html +3 -3
  65. package/out/renderer/installer.html +4 -3
  66. package/package.json +8 -4
  67. package/out/renderer/assets/channel-B1bYac8K.js +0 -1
  68. package/out/renderer/assets/classDiagram-GIVACNV2-D9zTLaoP.js +0 -1
  69. package/out/renderer/assets/classDiagram-v2-COTLJTTW-D9zTLaoP.js +0 -1
  70. package/out/renderer/assets/clone-Wch5VQyD.js +0 -1
  71. package/out/renderer/assets/icon-CxEyZZZA.css +0 -1
  72. package/out/renderer/assets/settings-page-Czb4gTSq.js +0 -97
  73. package/out/renderer/assets/stateDiagram-v2-YXO3MK2T-OxcVskUe.js +0 -1
package/out/main/index.js CHANGED
@@ -3342,6 +3342,19 @@ function didUpgradeLand(input) {
3342
3342
  }
3343
3343
  return before.trim() !== after.trim();
3344
3344
  }
3345
+ const launchEnv = {
3346
+ ...process.env
3347
+ };
3348
+ const LOG_DIR_ENV = "LOCAL_OPERATOR_LOG_DIR";
3349
+ function logDirOverride(value) {
3350
+ const requested = value?.trim();
3351
+ if (requested === void 0 || requested === "") return null;
3352
+ if (requested.startsWith("/")) return requested;
3353
+ console.warn(
3354
+ `[logger] ${LOG_DIR_ENV}=${requested} is not an absolute path; the default log directory is used instead`
3355
+ );
3356
+ return null;
3357
+ }
3345
3358
  var LogFileType = /* @__PURE__ */ ((LogFileType2) => {
3346
3359
  LogFileType2["INSTALLER"] = "backend-installer.log";
3347
3360
  LogFileType2["BACKEND"] = "backend-service.log";
@@ -3354,27 +3367,31 @@ class Logger {
3354
3367
  logPath;
3355
3368
  loggers;
3356
3369
  /**
3357
- * Private constructor to enforce singleton pattern
3370
+ * The app's own log directory, unchanged: the platform's user-level location
3371
+ * for this app's data. Split out of the constructor so that the launch's
3372
+ * override (`LOG_DIR_ENV`, see `./log-dir`) is the ONE thing that can move it,
3373
+ * and so the path is composed the same way whichever branch the platform takes.
3358
3374
  */
3359
- constructor() {
3375
+ static defaultLogPath() {
3360
3376
  if (process.platform === "win32") {
3361
- this.logPath = path$1.join(electron.app.getPath("userData"), "logs");
3362
- } else if (process.platform === "darwin") {
3363
- this.logPath = path$1.join(
3377
+ return path$1.join(electron.app.getPath("userData"), "logs");
3378
+ }
3379
+ if (process.platform === "darwin") {
3380
+ return path$1.join(
3364
3381
  electron.app.getPath("home"),
3365
3382
  "Library",
3366
3383
  "Application Support",
3367
3384
  "Local Operator",
3368
3385
  "logs"
3369
3386
  );
3370
- } else {
3371
- this.logPath = path$1.join(
3372
- electron.app.getPath("home"),
3373
- ".config",
3374
- "local-operator",
3375
- "logs"
3376
- );
3377
3387
  }
3388
+ return path$1.join(electron.app.getPath("home"), ".config", "local-operator", "logs");
3389
+ }
3390
+ /**
3391
+ * Private constructor to enforce singleton pattern
3392
+ */
3393
+ constructor() {
3394
+ this.logPath = logDirOverride(launchEnv[LOG_DIR_ENV]) ?? Logger.defaultLogPath();
3378
3395
  if (!fs.existsSync(this.logPath)) {
3379
3396
  fs.mkdirSync(this.logPath, { recursive: true });
3380
3397
  }
@@ -8068,11 +8085,36 @@ class ApprovalStore {
8068
8085
  results = {};
8069
8086
  /** Unspent "Allow once" grants, keyed by origin. */
8070
8087
  onceGrants = {};
8088
+ /**
8089
+ * "Allow for this session" grants: exact origins, in memory only.
8090
+ *
8091
+ * NOT written to the store, and that is the scope's definition (design 9.3:
8092
+ * `session` is "until the app quits, in-memory"). It cannot be: a durable
8093
+ * version of it would be indistinguishable from `site`, which is the scope
8094
+ * that means "keep this".
8095
+ */
8096
+ sessionGrants = /* @__PURE__ */ new Set();
8097
+ /** The provenance rows for the session grants, so the approvals list can show
8098
+ * them beside the durable ones without a second source of truth. */
8099
+ sessionRecords = [];
8071
8100
  /** Receipts for displaced requesters (see `access-flow.ts`). */
8072
8101
  tombstones = {};
8073
8102
  /** Consumed once grants authorize one committed document, not every future
8074
8103
  * document on that origin. Revocation invalidates in-flight admissions too. */
8075
8104
  revision = 0;
8105
+ /**
8106
+ * Per-origin revocation epochs, bumped by `revokeOrigin` and by nothing else.
8107
+ *
8108
+ * The global `revision` cannot do this job: bumping it for one site's revoke
8109
+ * would refuse every OTHER approved origin, which `documentAllowed`'s own
8110
+ * comment rules out (review round 1). But a per-origin revoke still has to
8111
+ * invalidate an admission that was already granted when it landed — the agent
8112
+ * pressed a nav against a `once` grant, the user revoked while it was in
8113
+ * flight, and the closure `admit` handed back kept saying yes because the
8114
+ * revision it compares had not moved (review round 2, R1's third limb). So the
8115
+ * epoch moves per origin and `admit`'s closure compares the origin's.
8116
+ */
8117
+ originEpochs = /* @__PURE__ */ new Map();
8076
8118
  documents = /* @__PURE__ */ new Map();
8077
8119
  constructor(options) {
8078
8120
  this.path = path$1.join(options.dir, APPROVALS_FILENAME);
@@ -8107,6 +8149,7 @@ class ApprovalStore {
8107
8149
  * instead compiles (the slot is `unknown` and optional) and silently drops
8108
8150
  * every broad grant, which is why the call spells the order out. */
8109
8151
  originAllowed(url) {
8152
+ if (this.sessionGrants.has(url.origin)) return true;
8110
8153
  if (this.store.origins[url.origin] === "deny") return false;
8111
8154
  return storedOriginAllowed(
8112
8155
  this.store.origins,
@@ -8163,9 +8206,10 @@ class ApprovalStore {
8163
8206
  admit(url, requester) {
8164
8207
  const { viaOnceGrant } = this.ensureTopLevelAccess(url, requester);
8165
8208
  const revision = this.revision;
8209
+ const epoch = this.originEpochs.get(url.origin) ?? 0;
8166
8210
  return {
8167
8211
  viaOnceGrant,
8168
- approved: (candidate) => this.originAllowed(candidate) || viaOnceGrant && revision === this.revision && candidate.origin === url.origin
8212
+ approved: (candidate) => this.originAllowed(candidate) || viaOnceGrant && revision === this.revision && (this.originEpochs.get(url.origin) ?? 0) === epoch && candidate.origin === url.origin
8169
8213
  };
8170
8214
  }
8171
8215
  rememberDocument(token, url, requester, epoch, admitted) {
@@ -8360,7 +8404,27 @@ class ApprovalStore {
8360
8404
  this.onChanged();
8361
8405
  return { origin: entry.origin, state: "allowed", scope: "once" };
8362
8406
  }
8407
+ if (decision === "session") {
8408
+ this.sessionGrants.add(entry.origin);
8409
+ this.sessionRecords.push({
8410
+ origin: entry.origin,
8411
+ scope: "session",
8412
+ requester: requester || entry.requester,
8413
+ grantedAt: now
8414
+ });
8415
+ this.results[resultKey(entry.entryId, entry.requester)] = receiptFor(
8416
+ entry,
8417
+ "allowed",
8418
+ now
8419
+ );
8420
+ this.onChanged();
8421
+ return { origin: entry.origin, state: "allowed", scope: "session" };
8422
+ }
8363
8423
  if (decision === "deny") {
8424
+ this.sessionGrants.delete(entry.origin);
8425
+ this.sessionRecords = this.sessionRecords.filter(
8426
+ (record) => record.origin !== entry.origin
8427
+ );
8364
8428
  this.store.origins[entry.origin] = "deny";
8365
8429
  this.store.records.push({
8366
8430
  origin: entry.origin,
@@ -8424,9 +8488,86 @@ class ApprovalStore {
8424
8488
  scope: decision === "site" ? "origin" : entry.broad?.scope ?? decision
8425
8489
  };
8426
8490
  }
8427
- /** The decisions still in force, for the approvals list. */
8491
+ /** The decisions still in force, for the approvals list.
8492
+ *
8493
+ * The session grants are merged in rather than kept apart, because the question
8494
+ * the list answers is "which sites can an agent act on as me right now?"
8495
+ * (design 9.3) and a `session` grant is a yes to that question. They carry
8496
+ * `scope: "session"`, which is how the list says "until the app quits". */
8428
8497
  grants() {
8429
- return [...this.store.records];
8498
+ return [...this.store.records, ...this.sessionRecords];
8499
+ }
8500
+ /**
8501
+ * Revoke one origin's approvals: the exact-origin verdict, a session grant, any
8502
+ * BROAD grant that covers it, an unspent `once` grant, and the document receipts
8503
+ * issued on it.
8504
+ *
8505
+ * A broad grant is revoked too, and that is the honest reading of a per-origin
8506
+ * revoke: the user pointed at a site and said "not this one". Leaving a domain
8507
+ * grant in place would let the agent reach the very origin just revoked, which
8508
+ * is the failure mode where a revoke button appears to do nothing.
8509
+ *
8510
+ * Deliberately does NOT touch cookies (design 9.4): revoking approvals does not
8511
+ * log the user out, and clearing cookies does not restore the deny state.
8512
+ *
8513
+ * WHY THIS IS NOT `revokeAll` FOR ONE ORIGIN, and why the two paths cannot share
8514
+ * an implementation: the bulk path can bump the global `revision` and floor every
8515
+ * capability in the store, because it is revoking everything. A per-origin
8516
+ * revoke that did the same would refuse receipts and in-flight admissions for
8517
+ * origins the user never touched (review round 1's objection to that route), so
8518
+ * it moves ONE origin's epoch instead — and everything that authorises that
8519
+ * origin dies with it: the durable verdict, the session grant, the provenance
8520
+ * rows, the covering broad grant, the unspent `once` grant, the document
8521
+ * receipts already issued for it, and any admission closure still in flight.
8522
+ *
8523
+ * Returns how many grants were dropped, so the caller can say what happened
8524
+ * rather than reporting a click. An unspent `once` grant counts: it is live
8525
+ * authority for this origin (review round 2, minor) and a revoke that left it
8526
+ * behind reported "0 approvals revoked" to the user. A document receipt does
8527
+ * NOT count separately: it is a capability derived from a grant that is already
8528
+ * counted, and counting both would double-count one decision.
8529
+ */
8530
+ revokeOrigin(rawOrigin) {
8531
+ let removed = 0;
8532
+ let origin = rawOrigin;
8533
+ try {
8534
+ origin = new URL(rawOrigin).origin;
8535
+ } catch {
8536
+ }
8537
+ if (this.onceGrants[origin] !== void 0) {
8538
+ delete this.onceGrants[origin];
8539
+ removed += 1;
8540
+ }
8541
+ for (const [token, receipt] of this.documents) {
8542
+ if (receipt.origin === origin) this.documents.delete(token);
8543
+ }
8544
+ this.originEpochs.set(origin, (this.originEpochs.get(origin) ?? 0) + 1);
8545
+ if (this.store.origins[origin] !== void 0) {
8546
+ delete this.store.origins[origin];
8547
+ removed += 1;
8548
+ }
8549
+ if (this.sessionGrants.delete(origin)) removed += 1;
8550
+ const before = this.store.records.length;
8551
+ this.store.records = this.store.records.filter(
8552
+ (record) => record.origin !== origin
8553
+ );
8554
+ removed += before - this.store.records.length;
8555
+ const beforeSession = this.sessionRecords.length;
8556
+ this.sessionRecords = this.sessionRecords.filter(
8557
+ (record) => record.origin !== origin
8558
+ );
8559
+ removed += beforeSession - this.sessionRecords.length;
8560
+ try {
8561
+ const broad = broadGrantFor(new URL(origin));
8562
+ if (broad && this.store.siteGrants.grants[broad.key] !== void 0) {
8563
+ delete this.store.siteGrants.grants[broad.key];
8564
+ removed += 1;
8565
+ }
8566
+ } catch {
8567
+ }
8568
+ this.persist();
8569
+ this.onChanged();
8570
+ return removed;
8430
8571
  }
8431
8572
  /**
8432
8573
  * Revoke every site approval.
@@ -8437,17 +8578,21 @@ class ApprovalStore {
8437
8578
  * in the copy rather than left to look like a bug.
8438
8579
  */
8439
8580
  revokeAll() {
8440
- const removed = this.store.records.length;
8581
+ const removed = this.store.records.length + this.sessionRecords.length + Object.keys(this.onceGrants).length;
8441
8582
  this.store.origins = {};
8442
8583
  this.store.siteGrants = { version: 1, grants: {} };
8443
8584
  this.store.records = [];
8444
8585
  this.resetPending();
8586
+ this.sessionGrants.clear();
8587
+ this.sessionRecords = [];
8445
8588
  this.persist();
8446
8589
  this.onChanged();
8447
8590
  return removed;
8448
8591
  }
8449
8592
  /** Drop everything about the pending flow. Used by the host-off toggle, which
8450
- * tears the state file down so discovery is honest. */
8593
+ * tears the state file down so discovery is honest. Deliberately keeps the
8594
+ * grants: turning the host off leaves the approvals inspectable and revocable
8595
+ * (design 9.4), it does not silently withdraw them. */
8451
8596
  resetPending() {
8452
8597
  this.revision += 1;
8453
8598
  this.documents.clear();
@@ -8910,6 +9055,49 @@ class CdpPool {
8910
9055
  for (const id2 of [...this.attachments.keys()]) await this.detach(id2);
8911
9056
  }
8912
9057
  }
9058
+ const CONSENT_TITLE = "Site approval needed";
9059
+ function consentBody(origin) {
9060
+ return `An agent wants to open ${origin}. Approve or deny it in the browser tab.`;
9061
+ }
9062
+ class ConsentNotifier {
9063
+ constructor(options) {
9064
+ this.options = options;
9065
+ }
9066
+ announced = /* @__PURE__ */ new Set();
9067
+ /**
9068
+ * Announce the pending entries that have not been announced yet.
9069
+ *
9070
+ * Called with the CURRENT pending list on every change rather than on an
9071
+ * "added" event: the store's change hook is one callback for a mutable set,
9072
+ * and a diff against what was already announced is both simpler and correct
9073
+ * when an entry is superseded and replaced by a new one with a new id.
9074
+ */
9075
+ announce(pending) {
9076
+ const live = new Set(pending.map((entry) => entry.entryId));
9077
+ for (const entryId of [...this.announced]) {
9078
+ if (!live.has(entryId)) this.announced.delete(entryId);
9079
+ }
9080
+ if (this.options.show !== "focus") return;
9081
+ if (!electron.Notification.isSupported()) return;
9082
+ for (const entry of pending) {
9083
+ if (this.announced.has(entry.entryId)) continue;
9084
+ this.announced.add(entry.entryId);
9085
+ try {
9086
+ const notification = new electron.Notification({
9087
+ title: CONSENT_TITLE,
9088
+ body: consentBody(entry.origin),
9089
+ silent: false
9090
+ });
9091
+ notification.on("click", () => this.options.onAttention(entry.entryId));
9092
+ notification.show();
9093
+ } catch (error) {
9094
+ this.options.log?.(
9095
+ `[browser] could not raise a consent banner: ${String(error)}`
9096
+ );
9097
+ }
9098
+ }
9099
+ }
9100
+ }
8913
9101
  function requesterOf(params, requestId2) {
8914
9102
  const supplied = typeof params.requester === "string" ? params.requester.trim() : "";
8915
9103
  return supplied.startsWith("session:") ? supplied : requestId2;
@@ -9620,6 +9808,7 @@ class TabRegistry {
9620
9808
  nonce: restored || options.owner === "user" ? null : mintNonce(),
9621
9809
  handedTo: null,
9622
9810
  restored,
9811
+ restoreRow: options.restoreRow,
9623
9812
  createdAt: Date.now(),
9624
9813
  lastUsedAt: Date.now(),
9625
9814
  epoch: 0,
@@ -9808,7 +9997,16 @@ class TabRegistry {
9808
9997
  // ---- layout, visibility, activation --------------------------------------
9809
9998
  /** The renderer owns presentation geometry, not whether a background renderer
9810
9999
  * has a viewport. Inactive views keep bounded default dimensions independently
9811
- * of this rectangle, so agent actions never require a route or focus change. */
10000
+ * of this rectangle, so agent actions never require a route or focus change.
10001
+ *
10002
+ * A NULL rect still hides every view, and that is a correctness requirement
10003
+ * rather than a tidy-up: the browser surface is a ROUTE, so navigating away
10004
+ * unmounts the only thing that knows where the view belongs. Without this, the
10005
+ * last rect would stay applied and the native view would go on painting over
10006
+ * the chat route — the one failure mode that makes this feature look like a
10007
+ * hijacked window. Visiting the route again reports a fresh rect and restores
10008
+ * it. A null rect is also how the caller hides the view at teardown, so it must
10009
+ * never be swallowed on the way here (see `use-browser-chrome`). */
9812
10010
  setContentRect(rect) {
9813
10011
  this.contentRect = rect;
9814
10012
  this.applyLayout();
@@ -10172,6 +10370,36 @@ const TAB_SCOPED = /* @__PURE__ */ new Set([
10172
10370
  "close",
10173
10371
  "retitle"
10174
10372
  ]);
10373
+ const RESTORE_CONCURRENCY = 4;
10374
+ const RESTORE_TAB_TIMEOUT_MS = 1e4;
10375
+ const RESTORE_BUDGET_MS = 8e3;
10376
+ function withTimeout(work, ms) {
10377
+ return new Promise((resolve, reject) => {
10378
+ const timer = setTimeout(
10379
+ () => reject(new Error(`timed out after ${ms}ms`)),
10380
+ ms
10381
+ );
10382
+ timer.unref?.();
10383
+ work.then(
10384
+ (value) => {
10385
+ clearTimeout(timer);
10386
+ resolve(value);
10387
+ },
10388
+ (error) => {
10389
+ clearTimeout(timer);
10390
+ reject(error instanceof Error ? error : new Error(String(error)));
10391
+ }
10392
+ );
10393
+ });
10394
+ }
10395
+ function isReportableLoadFailure(code) {
10396
+ return code !== 0 && code !== -3;
10397
+ }
10398
+ function sessionRequesterOf(requester) {
10399
+ if (!requester.startsWith("session:")) return null;
10400
+ const id2 = requester.slice("session:".length);
10401
+ return id2 || null;
10402
+ }
10175
10403
  class BrowserHost {
10176
10404
  registry;
10177
10405
  cdp;
@@ -10180,6 +10408,21 @@ class BrowserHost {
10180
10408
  log;
10181
10409
  onChanged;
10182
10410
  facts;
10411
+ /** The session's per-origin storage clear, injected (see `BrowserHostOptions`). */
10412
+ forgetSiteData;
10413
+ /**
10414
+ * The last main-frame load failure per tab, cleared by the next load.
10415
+ *
10416
+ * Keyed by `tabId` and DROPPED with the tab: this is a statement about a document
10417
+ * that a tab is (or is not) showing, so a recycled id or a closed tab must not be
10418
+ * able to inherit it.
10419
+ */
10420
+ loadFailures = /* @__PURE__ */ new Map();
10421
+ /**
10422
+ * The background hydration pass, so a caller can wait for it without the host
10423
+ * ever making anyone wait for it. See `restoreTabs`.
10424
+ */
10425
+ hydration = Promise.resolve();
10183
10426
  constructor(options) {
10184
10427
  this.registry = options.registry;
10185
10428
  this.cdp = options.cdp;
@@ -10188,6 +10431,7 @@ class BrowserHost {
10188
10431
  this.log = options.log;
10189
10432
  this.onChanged = options.onChanged;
10190
10433
  this.facts = options.facts;
10434
+ this.forgetSiteData = options.forgetSiteData;
10191
10435
  }
10192
10436
  /** Answer one wire request. The only place a method name becomes an action. */
10193
10437
  async dispatch(method, params, requestId2) {
@@ -10340,6 +10584,49 @@ class BrowserHost {
10340
10584
  * per-tab ownership markers. It never carries a nonce — the renderer is not an
10341
10585
  * agent and has no reason to hold a capability (design 11.7).
10342
10586
  */
10587
+ /**
10588
+ * Record a main-frame load failure for a tab.
10589
+ *
10590
+ * Called from the view's own `did-fail-load`, which is the only place that knows a
10591
+ * navigation was refused by the network rather than by the gate. NOT recorded for
10592
+ * `ERR_ABORTED`, which is what a stop, a redirect chain and a superseded
10593
+ * navigation all report: those are the user's own browsing succeeding at
10594
+ * something, and presenting one as a failure would make the panel cry wolf on
10595
+ * every redirect (see `isReportableLoadFailure`).
10596
+ */
10597
+ recordLoadFailure(tabId, failure) {
10598
+ if (!this.registry.get(tabId)) return;
10599
+ this.loadFailures.set(tabId, failure);
10600
+ this.onChanged();
10601
+ }
10602
+ /** The next navigation on this tab is under way, so the last failure is stale. */
10603
+ clearLoadFailure(tabId) {
10604
+ if (!this.loadFailures.delete(tabId)) return;
10605
+ this.onChanged();
10606
+ }
10607
+ /** The failure the chrome shows for the ACTIVE tab, or null. */
10608
+ activeLoadFailure(activeTabId) {
10609
+ if (activeTabId === null) return null;
10610
+ return this.loadFailures.get(activeTabId) ?? null;
10611
+ }
10612
+ /**
10613
+ * A tab title the chrome should show, or "" when the document has none.
10614
+ *
10615
+ * Chromium answers `about:blank` as the TITLE of a document that did not name
10616
+ * itself — a new tab, and a restored tab whose page has not committed yet — and
10617
+ * that is a URL the user never visited rather than a page name. The URL bar
10618
+ * already refuses to render it (`displayUrl` in the chrome maps it to an empty
10619
+ * field, for the same reason). Every other window onto a tab's name reads THIS
10620
+ * projection — the strip's label, its `Tab actions for …` and `Close …` labels,
10621
+ * the hand-over dialog's summary and the paused note — so the rule belongs here,
10622
+ * once, rather than five times in the renderer: an untitled tab arrives empty
10623
+ * and each surface falls back to its own words (the strip's "New tab").
10624
+ * (Review round 2, U3: the strip used to read `about:blank` in five places while
10625
+ * the bar showed nothing.)
10626
+ */
10627
+ titleForChrome(title) {
10628
+ return title === "about:blank" ? "" : title;
10629
+ }
10343
10630
  chromeState() {
10344
10631
  const activeRecord = this.registry.activeTab;
10345
10632
  const active = activeRecord && !activeRecord.view.webContents.isDestroyed() ? activeRecord : null;
@@ -10347,19 +10634,27 @@ class BrowserHost {
10347
10634
  return {
10348
10635
  tabs: this.registry.snapshot().map((entry) => ({
10349
10636
  tabId: entry.tabId,
10350
- title: entry.title || "New tab",
10637
+ title: this.titleForChrome(entry.title) || "New tab",
10351
10638
  url: entry.url,
10352
10639
  owner: entry.owner,
10353
10640
  active: entry.active,
10354
10641
  restored: entry.restored,
10355
- handedOver: entry.handedTo !== null
10642
+ handedOver: entry.handedTo !== null,
10643
+ // Per TAB, not only for the active one: a background tab whose load was
10644
+ // refused has no other way to say so - its page area is blank and the
10645
+ // band belongs to the active tab - so the strip carries the mark.
10646
+ failed: this.loadFailures.has(entry.tabId)
10356
10647
  })),
10357
10648
  activeTabId: activeRecord?.tabId ?? null,
10358
10649
  url: active ? active.view.webContents.getURL() : "",
10359
- title: active ? active.view.webContents.getTitle() : "",
10650
+ title: active ? this.titleForChrome(active.view.webContents.getTitle()) : "",
10360
10651
  loading: active ? active.view.webContents.isLoading() : false,
10361
10652
  canGoBack: navigation ? navigation.canGoBack() : false,
10362
10653
  canGoForward: navigation ? navigation.canGoForward() : false,
10654
+ // WHY the page area is empty, when it is. Null on a healthy tab, so the
10655
+ // chrome's failure panel is driven by a fact rather than by "the page looks
10656
+ // blank", which is also what a slow load and an empty document look like.
10657
+ navFailure: this.activeLoadFailure(activeRecord?.tabId ?? null),
10363
10658
  // The consent surface (PR 7) renders from this. Exposed now so the
10364
10659
  // transport does not need a second wire change when it lands, and so an
10365
10660
  // evidence run can answer a prompt headlessly.
@@ -10368,7 +10663,38 @@ class BrowserHost {
10368
10663
  origin: entry.origin,
10369
10664
  authority: entry.displayAuthority,
10370
10665
  broad: entry.broad ?? null,
10371
- expiresAt: entry.expiresAt
10666
+ expiresAt: entry.expiresAt,
10667
+ // WHO IS ASKING, as an id the renderer may resolve and nothing more.
10668
+ //
10669
+ // The vendored queue says `requester` is an "authority boundary only. Never
10670
+ // render or include in ambient notifications", and the consent bar has to
10671
+ // tell the user which conversation they are authorising — in a
10672
+ // multi-conversation app, "An agent" beside five choices is not a decision
10673
+ // anyone can make (design round 1, D2). So what travels is the BARE lop
10674
+ // session id, which is not a credential: it is the id the app already puts
10675
+ // in its own chat routes, and it is exactly the value `handOver` matches
10676
+ // against. The renderer resolves it to a conversation title from the same
10677
+ // session list the hand-over dialog uses.
10678
+ //
10679
+ // STRICTLY `session:`-PREFIXED, which is why this does not reuse
10680
+ // `sessionIdOf`: that helper returns any non-session identity unchanged, and
10681
+ // a requester that is a bare request id (`actions/context.ts` falls back to
10682
+ // one) would then be published to the UI.
10683
+ requesterSessionId: sessionRequesterOf(entry.requester)
10684
+ })),
10685
+ // Which sites an agent may act on as the user RIGHT NOW (design 9.3's
10686
+ // honesty requirement). Shipped in the same projection as the strip rather
10687
+ // than behind a second channel: the answer is only useful next to the tabs
10688
+ // it applies to, and one subscription is one thing that can go stale.
10689
+ //
10690
+ // The `requester` on a record is deliberately NOT projected. The vendored
10691
+ // queue marks it "authority boundary only. Never render or include in
10692
+ // ambient notifications", so the list says which SITE and which SCOPE —
10693
+ // which is what the user's question is about — and never names a session.
10694
+ approvals: this.approvals.grants().map((record) => ({
10695
+ origin: record.origin,
10696
+ scope: record.scope,
10697
+ grantedAt: record.grantedAt
10372
10698
  }))
10373
10699
  };
10374
10700
  }
@@ -10383,10 +10709,151 @@ class BrowserHost {
10383
10709
  }
10384
10710
  closeTab(tabId) {
10385
10711
  this.dropReceipt(tabId);
10712
+ this.loadFailures.delete(tabId);
10386
10713
  this.registry.destroy(tabId);
10387
10714
  this.onChanged();
10388
10715
  return this.chromeState();
10389
10716
  }
10717
+ /**
10718
+ * Re-create the tabs a previous run recorded (design 7).
10719
+ *
10720
+ * THE THREE RULES THIS ENFORCES, each of which has a section behind it:
10721
+ *
10722
+ * 1. **A restored tab is the user's, with a FRESH tabId and NO nonce** (7.3).
10723
+ * That is `registry.create({owner: "user", restored: true})`, and it is why
10724
+ * a session holding `ui:<oldTabId>:<oldNonce>` gets the ordinary `tab_closed`
10725
+ * on its next action instead of silently reclaiming a tab whose authority
10726
+ * came off a file in `userData`. No special-case code exists for that
10727
+ * recovery, which is the point: the handle rule already produces it.
10728
+ * 2. **`navigationHistory.restore()` runs before anything navigates** (7.1):
10729
+ * Electron documents it as "recommended to call this API before any
10730
+ * navigation entries are created, so ideally before you call `loadURL()`".
10731
+ * That ordering is load-bearing here because `cdp.attach` gives a document
10732
+ * to any view that has never navigated — so attach runs AFTER the restore
10733
+ * has put a document in, or the `<about:blank>` it would load would replace
10734
+ * the restored stack with one blank entry.
10735
+ * 3. **Restoring does not steal the active tab** (11.4): the recorded active
10736
+ * tab is activated once, at the end, so a background tab's restore cannot
10737
+ * take the user's place.
10738
+ *
10739
+ * A restore that fails is logged and left as it is: the tab keeps whatever
10740
+ * Chromium managed to load, which is a blank tab rather than a broken one, and
10741
+ * blocking startup on a page that will not load is exactly what 7.2 forbids.
10742
+ *
10743
+ * TWO PHASES, because they have different clocks (review round 1, R5).
10744
+ *
10745
+ * 1. **Allocate, synchronously.** Every view, every tab id and the active tab are
10746
+ * settled before this method returns, off a list `readSession` has already
10747
+ * validated and bounded (`MAX_RESTORED_TABS`). So the strip is correct on the
10748
+ * first paint and the host can serve — an agent's `open`, the chrome's `state`
10749
+ * read — while the pages are still loading.
10750
+ * 2. **Hydrate, in the background.** `history.restore()` and `cdp.attach()` per
10751
+ * tab, four at a time, each with its own timeout, all under one overall budget.
10752
+ * A page that never answers delays nothing outside its own tab, and the pass
10753
+ * never withholds a host that is already usable.
10754
+ *
10755
+ * WHY NOT `Promise.all` AND `await`, which is what this was: it created one view
10756
+ * per entry with no concurrency bound and awaited every one of them before RPC
10757
+ * started, so a file with 256 valid rows produced 256 views and one hung page
10758
+ * withheld the browser host entirely. The `catch` around it bounded nothing at
10759
+ * all about the pending case.
10760
+ *
10761
+ * Allocating synchronously is also what keeps rule 3 true: the active tab is
10762
+ * set from the recorded flag before any page has loaded, rather than when the
10763
+ * last tab happens to finish — which was a tab activation arriving after the
10764
+ * user had already started working, taking their place for no reason they
10765
+ * could see.
10766
+ */
10767
+ restoreTabs(tabs2) {
10768
+ if (!tabs2.length) {
10769
+ this.hydration = this.newTab().then(() => void 0);
10770
+ return this.chromeState();
10771
+ }
10772
+ const created = tabs2.map((recorded) => ({
10773
+ tabId: this.registry.create({
10774
+ owner: "user",
10775
+ restored: true,
10776
+ restoreRow: recorded
10777
+ }).tabId,
10778
+ recorded
10779
+ }));
10780
+ const wanted = created.find((entry) => entry.recorded.active)?.tabId ?? created.at(-1)?.tabId;
10781
+ if (wanted !== void 0) this.registry.activate(wanted);
10782
+ this.onChanged();
10783
+ this.hydration = this.hydrateRestored(created);
10784
+ return this.chromeState();
10785
+ }
10786
+ /** Wait for the background hydration pass. For tests and the proof run, which
10787
+ * want the tabs to have finished loading; nothing on a user's path calls it. */
10788
+ whenRestored() {
10789
+ return this.hydration;
10790
+ }
10791
+ /**
10792
+ * Apply each restored tab's history and debugger session, bounded.
10793
+ *
10794
+ * `Promise.allSettled` rather than `Promise.all`: the two steps below already turn
10795
+ * a failure into a log line, and a rejection here would be an unhandled rejection
10796
+ * on a promise only a test awaits.
10797
+ */
10798
+ async hydrateRestored(created) {
10799
+ const deadline2 = Date.now() + RESTORE_BUDGET_MS;
10800
+ const queue = [...created];
10801
+ let reported = false;
10802
+ const worker = async () => {
10803
+ for (; ; ) {
10804
+ const next = queue.shift();
10805
+ if (!next) return;
10806
+ if (Date.now() >= deadline2) {
10807
+ if (!reported) {
10808
+ reported = true;
10809
+ this.log(
10810
+ `[browser] the ${RESTORE_BUDGET_MS}ms restore budget expired with ${queue.length + 1} tab(s) still loading; they keep loading in the background`
10811
+ );
10812
+ }
10813
+ return;
10814
+ }
10815
+ await this.hydrateOne(next.tabId, next.recorded);
10816
+ }
10817
+ };
10818
+ await Promise.allSettled(
10819
+ Array.from(
10820
+ { length: Math.min(RESTORE_CONCURRENCY, created.length) },
10821
+ worker
10822
+ )
10823
+ );
10824
+ }
10825
+ /** One tab's half of the pass: the history stack, then the debugger session. */
10826
+ async hydrateOne(tabId, recorded) {
10827
+ const record = this.registry.get(tabId);
10828
+ if (!record) return;
10829
+ const contents = record.view.webContents;
10830
+ const history = contents.navigationHistory;
10831
+ const entry = recorded.entries[recorded.activeIndex];
10832
+ try {
10833
+ await withTimeout(
10834
+ history?.restore ? history.restore({
10835
+ entries: recorded.entries,
10836
+ index: recorded.activeIndex
10837
+ }) : (
10838
+ // The honest degradation (see `NavigationHistoryLike`): a view with no
10839
+ // history API still gets put back on the page it was showing, without
10840
+ // its stack and its page state.
10841
+ entry ? contents.loadURL(entry.url) : Promise.resolve()
10842
+ ),
10843
+ RESTORE_TAB_TIMEOUT_MS
10844
+ );
10845
+ } catch (error) {
10846
+ this.log(`[browser] could not restore tab ${tabId}: ${String(error)}`);
10847
+ }
10848
+ if (!this.registry.get(tabId)) return;
10849
+ try {
10850
+ await withTimeout(this.cdp.attach(contents), RESTORE_TAB_TIMEOUT_MS);
10851
+ } catch (error) {
10852
+ this.log(
10853
+ `[browser] could not attach to restored tab ${tabId}: ${String(error)}`
10854
+ );
10855
+ }
10856
+ }
10390
10857
  activateTab(tabId) {
10391
10858
  this.registry.activate(tabId);
10392
10859
  this.onChanged();
@@ -10491,6 +10958,38 @@ class BrowserHost {
10491
10958
  this.onChanged();
10492
10959
  return { ...result, ...this.chromeState() };
10493
10960
  }
10961
+ /** Revoke one origin's approvals (design 9.4). Separate from closing a tab and
10962
+ * separate from clearing cookies: "stop this agent" and "forget this site" are
10963
+ * different intentions. */
10964
+ revokeApproval(origin) {
10965
+ const removed = this.approvals.revokeOrigin(origin);
10966
+ this.onChanged();
10967
+ return { removed, origin, ...this.chromeState() };
10968
+ }
10969
+ /** Revoke every site approval. Does not log the user out (design 9.4). */
10970
+ revokeAllApprovals() {
10971
+ const removed = this.approvals.revokeAll();
10972
+ this.onChanged();
10973
+ return { removed, ...this.chromeState() };
10974
+ }
10975
+ /**
10976
+ * "Forget this site" (design 9.4): withdraw the approval AND clear what this
10977
+ * app stored for that origin.
10978
+ *
10979
+ * Two effects in one affordance because they are one intention — the user
10980
+ * wanting the site gone from this app — while being explicit that they are two
10981
+ * mechanisms with two consequences: the revoke does not log them out, and the
10982
+ * storage clear does not restore a deny state. The confirmation in the chrome
10983
+ * says both rather than leaving the user to discover the second half.
10984
+ */
10985
+ async forgetSite(rawOrigin) {
10986
+ const origin = safeHttpUrl(rawOrigin).origin;
10987
+ const removed = this.approvals.revokeOrigin(origin);
10988
+ await this.forgetSiteData(origin);
10989
+ this.log(`[browser] forgot ${origin}: ${removed} approval(s) revoked`);
10990
+ this.onChanged();
10991
+ return { origin, removed, ...this.chromeState() };
10992
+ }
10494
10993
  /** The registry's handles, for a diagnostic or the `tabs` listing. */
10495
10994
  handleFor(record) {
10496
10995
  const token = surfaceToken(record);
@@ -10512,6 +11011,9 @@ const BROWSER_IPC_CHANNELS = [
10512
11011
  "browser-hand-over",
10513
11012
  "browser-revoke-hand-over",
10514
11013
  "browser-consent-respond",
11014
+ "browser-revoke-approval",
11015
+ "browser-revoke-all-approvals",
11016
+ "browser-forget-site",
10515
11017
  "browser-clear-data"
10516
11018
  ];
10517
11019
  function registerBrowserIpc(options) {
@@ -10582,12 +11084,30 @@ function registerBrowserIpc(options) {
10582
11084
  if (typeof entryId !== "string" || !entryId) {
10583
11085
  throw new Error("A pending request id is required.");
10584
11086
  }
10585
- if (decision !== "once" && decision !== "site" && decision !== "domain" && decision !== "deny") {
11087
+ if (decision !== "once" && decision !== "session" && decision !== "site" && decision !== "domain" && decision !== "deny") {
10586
11088
  throw new Error("Unsupported consent decision.");
10587
11089
  }
10588
11090
  return host.respondToConsent(entryId, decision);
10589
11091
  }
10590
11092
  );
11093
+ electron.ipcMain.handle("browser-revoke-approval", (event, origin) => {
11094
+ const host = authorize(event);
11095
+ if (typeof origin !== "string" || !origin.trim()) {
11096
+ throw new Error("An origin is required.");
11097
+ }
11098
+ return host.revokeApproval(origin.trim());
11099
+ });
11100
+ electron.ipcMain.handle(
11101
+ "browser-revoke-all-approvals",
11102
+ (event) => authorize(event).revokeAllApprovals()
11103
+ );
11104
+ electron.ipcMain.handle("browser-forget-site", async (event, origin) => {
11105
+ const host = authorize(event);
11106
+ if (typeof origin !== "string" || !origin.trim()) {
11107
+ throw new Error("An origin is required.");
11108
+ }
11109
+ return host.forgetSite(origin.trim());
11110
+ });
10591
11111
  electron.ipcMain.handle("browser-clear-data", async (event, what) => {
10592
11112
  authorize(event);
10593
11113
  if (what !== "cookies" && what !== "cache" && what !== "everything") {
@@ -10986,6 +11506,23 @@ async function clearBrowsingData(browserSession, what) {
10986
11506
  await browserSession.clearData();
10987
11507
  await browserSession.clearCache();
10988
11508
  }
11509
+ async function clearOriginData(browserSession, origin) {
11510
+ browserSession.flushStorageData();
11511
+ await browserSession.clearData({
11512
+ origins: [origin],
11513
+ originMatchingMode: "origin-in-all-contexts",
11514
+ dataTypes: [
11515
+ "cookies",
11516
+ "localStorage",
11517
+ "indexedDB",
11518
+ "serviceWorkers",
11519
+ "fileSystems",
11520
+ "webSQL",
11521
+ "backgroundFetch",
11522
+ "cache"
11523
+ ]
11524
+ });
11525
+ }
10989
11526
  function flushBrowserStorage(browserSession) {
10990
11527
  try {
10991
11528
  browserSession.flushStorageData();
@@ -12034,6 +12571,277 @@ function createHiddenCookieJarTarget(view) {
12034
12571
  }
12035
12572
  };
12036
12573
  }
12574
+ const SESSION_FILENAME = "session.json";
12575
+ const MAX_SESSION_FILE_BYTES = 4 * 1024 * 1024;
12576
+ const MAX_RESTORED_TABS = 20;
12577
+ const MAX_RESTORED_ENTRIES = 50;
12578
+ const MAX_RESTORED_URL_CHARS = 2048;
12579
+ const MAX_RESTORED_PAGE_STATE_CHARS = 256 * 1024;
12580
+ const WRITE_DEBOUNCE_MS = 500;
12581
+ function restorable(entry) {
12582
+ if (typeof entry.url !== "string") return false;
12583
+ if (entry.url.length > MAX_RESTORED_URL_CHARS) return false;
12584
+ try {
12585
+ const url = new URL(entry.url);
12586
+ return url.protocol === "http:" || url.protocol === "https:";
12587
+ } catch {
12588
+ return false;
12589
+ }
12590
+ }
12591
+ function boundPageState(entry) {
12592
+ if (typeof entry.pageState !== "string" || entry.pageState.length <= MAX_RESTORED_PAGE_STATE_CHARS) {
12593
+ return entry;
12594
+ }
12595
+ const { pageState: _dropped, ...rest } = entry;
12596
+ return rest;
12597
+ }
12598
+ function boundEntries(entries, activeIndex) {
12599
+ if (entries.length <= MAX_RESTORED_ENTRIES) return { entries, activeIndex };
12600
+ const historyKept = Math.floor(MAX_RESTORED_ENTRIES / 4);
12601
+ const start = Math.max(
12602
+ 0,
12603
+ Math.min(activeIndex - historyKept, entries.length - MAX_RESTORED_ENTRIES)
12604
+ );
12605
+ return {
12606
+ entries: entries.slice(start, start + MAX_RESTORED_ENTRIES),
12607
+ activeIndex: activeIndex - start
12608
+ };
12609
+ }
12610
+ function saneTab(raw) {
12611
+ if (!raw || typeof raw !== "object") return null;
12612
+ const candidate = raw;
12613
+ if (!Array.isArray(candidate.entries)) return null;
12614
+ const entries = candidate.entries.filter(
12615
+ (entry) => !!entry && typeof entry === "object" && typeof entry.url === "string"
12616
+ ).filter(restorable).map(boundPageState);
12617
+ if (!entries.length) return null;
12618
+ const recorded = typeof candidate.activeIndex === "number" && Number.isInteger(candidate.activeIndex) && candidate.activeIndex >= 0 ? Math.min(
12619
+ candidate.activeIndex,
12620
+ candidate.entries.length - 1
12621
+ ) : entries.length - 1;
12622
+ const survivorsBefore = candidate.entries.slice(0, recorded).filter(
12623
+ (entry) => !!entry && typeof entry === "object" && typeof entry.url === "string"
12624
+ ).filter(restorable).length;
12625
+ const bounded = boundEntries(
12626
+ entries,
12627
+ Math.min(survivorsBefore, entries.length - 1)
12628
+ );
12629
+ return {
12630
+ owner: candidate.owner === "agent" ? "agent" : "user",
12631
+ active: candidate.active === true,
12632
+ entries: bounded.entries,
12633
+ activeIndex: bounded.activeIndex
12634
+ };
12635
+ }
12636
+ function boundTabs(tabs2) {
12637
+ if (tabs2.length <= MAX_RESTORED_TABS) return { kept: tabs2, dropped: 0 };
12638
+ const activeIndex = tabs2.findIndex((tab) => tab.active);
12639
+ const keep = /* @__PURE__ */ new Set();
12640
+ if (activeIndex >= 0) keep.add(activeIndex);
12641
+ for (let index = tabs2.length - 1; index >= 0 && keep.size < MAX_RESTORED_TABS; index -= 1) {
12642
+ keep.add(index);
12643
+ }
12644
+ const kept = tabs2.filter((_tab, index) => keep.has(index));
12645
+ return { kept, dropped: tabs2.length - kept.length };
12646
+ }
12647
+ function readSession(path2, log = () => {
12648
+ }) {
12649
+ try {
12650
+ const size = fs.statSync(path2, { throwIfNoEntry: false })?.size ?? 0;
12651
+ if (size > MAX_SESSION_FILE_BYTES) {
12652
+ log(
12653
+ `[browser] ignoring ${path2}: ${size} bytes is past the ${MAX_SESSION_FILE_BYTES}-byte restore budget`
12654
+ );
12655
+ return [];
12656
+ }
12657
+ const file = readJson(path2);
12658
+ if (!file) return [];
12659
+ if (file.version !== 1) {
12660
+ log(
12661
+ `[browser] ignoring ${path2}: version ${String(file.version)} is not one this build writes`
12662
+ );
12663
+ return [];
12664
+ }
12665
+ if (!Array.isArray(file.tabs)) return [];
12666
+ const sane = file.tabs.map(saneTab).filter((tab) => tab !== null);
12667
+ const { kept, dropped } = boundTabs(sane);
12668
+ if (dropped) {
12669
+ log(
12670
+ `[browser] restoring ${kept.length} of ${sane.length} recorded tabs; the cap keeps whichever tab was active plus the newest of the rest`
12671
+ );
12672
+ }
12673
+ return kept;
12674
+ } catch (error) {
12675
+ log(`[browser] could not read ${path2}: ${String(error)}`);
12676
+ return [];
12677
+ }
12678
+ }
12679
+ function stopSnapshotDecision(rows, durableRows) {
12680
+ if (rows < durableRows) {
12681
+ return {
12682
+ write: false,
12683
+ reason: `the quit-time capture holds ${rows} tab(s) and the record on disk holds ${durableRows}, so the record is kept`
12684
+ };
12685
+ }
12686
+ return {
12687
+ write: true,
12688
+ reason: `the quit-time capture holds ${rows} tab(s) and the record on disk holds ${durableRows}`
12689
+ };
12690
+ }
12691
+ function captureTabs(records, activeTabId) {
12692
+ const captured = [];
12693
+ for (const record of records) {
12694
+ const contents = record.view.webContents;
12695
+ const history = contents.isDestroyed() ? void 0 : contents.navigationHistory;
12696
+ const entries = history?.getAllEntries && history.getActiveIndex ? history.getAllEntries().map((entry) => ({
12697
+ url: entry.url,
12698
+ title: entry.title,
12699
+ ...entry.pageState ? { pageState: entry.pageState } : {}
12700
+ })) : [];
12701
+ if (entries.some(restorable)) {
12702
+ captured.push({
12703
+ owner: record.owner,
12704
+ active: record.tabId === activeTabId,
12705
+ entries,
12706
+ activeIndex: Math.max(0, history?.getActiveIndex?.() ?? 0)
12707
+ });
12708
+ continue;
12709
+ }
12710
+ const restored = record.restoreRow;
12711
+ if (restored) {
12712
+ captured.push({
12713
+ owner: record.owner,
12714
+ active: record.tabId === activeTabId,
12715
+ entries: restored.entries,
12716
+ activeIndex: restored.activeIndex
12717
+ });
12718
+ }
12719
+ }
12720
+ return captured;
12721
+ }
12722
+ class BrowserSessionStore {
12723
+ path;
12724
+ log;
12725
+ debounceMs;
12726
+ timer = null;
12727
+ pending = null;
12728
+ /** Set by `commitStopCapture`: from then on this store stages nothing more. */
12729
+ sealed = false;
12730
+ constructor(options) {
12731
+ this.path = path$1.join(options.dir, SESSION_FILENAME);
12732
+ this.log = options.log ?? (() => {
12733
+ });
12734
+ this.debounceMs = options.debounceMs ?? WRITE_DEBOUNCE_MS;
12735
+ }
12736
+ get filePath() {
12737
+ return this.path;
12738
+ }
12739
+ /** Record the current tabs, to be written after the debounce.
12740
+ *
12741
+ * A SEALED STORE IGNORES THIS (review round 3, B2's MAJOR). The stop path has
12742
+ * already made the last write decision this process gets to make, and the
12743
+ * capture that arrives afterwards is not a change to record: it is a view's
12744
+ * `destroyed` handler running during teardown, which is exactly the capture
12745
+ * that is short for a reason that is not the user's doing. Accepting it would
12746
+ * put the refused content back in `pending` for the next `flush()` to write,
12747
+ * which is the data loss the decision exists to prevent. The guard therefore
12748
+ * lives here, at the only writer, rather than at the call site that happens to
12749
+ * be running when the views die. */
12750
+ record(tabs2) {
12751
+ if (this.sealed) return;
12752
+ this.pending = tabs2;
12753
+ if (this.timer) clearTimeout(this.timer);
12754
+ this.timer = setTimeout(() => this.flush(), this.debounceMs);
12755
+ this.timer.unref?.();
12756
+ }
12757
+ /** Commit the quit-time capture: stage it, or refuse it and TAKE BACK what is
12758
+ * staged. Returns the decision so the caller can log which happened.
12759
+ *
12760
+ * WHY THE STORE OWNS THIS, rather than the host's stop path deciding and the
12761
+ * store writing whatever happened to be pending (review round 3, B2's MAJOR).
12762
+ * The stop path is not the only writer of `pending`: every `notifyChanged`
12763
+ * during teardown stages one, and the measured ordering - the views destroyed
12764
+ * BEFORE `stop()` runs - stages a short capture first and then reaches the
12765
+ * decision. `flush()` writes `pending` regardless of what the decision said,
12766
+ * so a refusal that only declined to call `record()` was undone by the flush a
12767
+ * line later: 3 rows durable, 1 row captured, decision `write: false`, 1 row on
12768
+ * disk. Refusing and then writing the refused content is the original B2 loss
12769
+ * through a different door. Making the decision binding means the refused
12770
+ * capture must be dropped before anything can flush it, and the seal must
12771
+ * outlive the call so no later capture can stage it again.
12772
+ *
12773
+ * WHAT IT DOES NOT DO: it does not read the capture's CONTENT, and it does not
12774
+ * compare it against the durable rows. The rule is `stopSnapshotDecision`'s and
12775
+ * is deliberately one-sided on a COUNT (see its comment).
12776
+ *
12777
+ * TWO INSTRUMENTS MEASURED THE DEFECT AND THEY DISAGREED ON SEVERITY, which is
12778
+ * worth keeping beside the fix. The reviewer drove the shipped classes and got
12779
+ * DATA LOSS - `durableRows 3 / atStop 1 / decision write false`, ONE row on disk,
12780
+ * the durable three gone. The independent QA pass drove six stop cases and lost
12781
+ * NO session across any of them, and called the same defect a write that should
12782
+ * not have happened: "the stop logs `the record is kept`, then `flush()` writes
12783
+ * the pending refused capture". Both descriptions are of ONE mechanism, and the
12784
+ * difference between them is the LENGTH CONDITION: the loss needs a staged
12785
+ * capture SHORTER than the durable record - a restored tab with no history of
12786
+ * its own yet, or a page that never committed - which is exactly the scenario
12787
+ * the guard exists for and not one that QA's six cases happened to open. A guard
12788
+ * that holds only when the two lengths agree is not a guard, so this is a fix
12789
+ * rather than a note, and the test beside it drives the length condition
12790
+ * explicitly instead of a representative sequence. */
12791
+ commitStopCapture(rows) {
12792
+ const decision = stopSnapshotDecision(
12793
+ rows.length,
12794
+ readSession(this.path, this.log).length
12795
+ );
12796
+ if (decision.write) {
12797
+ this.record(rows);
12798
+ } else {
12799
+ this.discard();
12800
+ }
12801
+ this.sealed = true;
12802
+ return decision;
12803
+ }
12804
+ /** Take back whatever `record()` staged, without writing it. */
12805
+ discard() {
12806
+ if (this.timer) {
12807
+ clearTimeout(this.timer);
12808
+ this.timer = null;
12809
+ }
12810
+ this.pending = null;
12811
+ }
12812
+ /** Write now, if anything is pending. Called from the host's stop path, so a
12813
+ * quit (or a window close, which stops the host) never loses the last change
12814
+ * to a debounce that was still ticking. */
12815
+ flush() {
12816
+ if (this.timer) {
12817
+ clearTimeout(this.timer);
12818
+ this.timer = null;
12819
+ }
12820
+ const tabs2 = this.pending;
12821
+ this.pending = null;
12822
+ if (!tabs2) return;
12823
+ const file = { version: 1, tabs: tabs2 };
12824
+ if (!writeJsonAtomic(this.path, file)) {
12825
+ this.log(
12826
+ `[browser] could not write the session file at ${this.path}; tabs will not be restored`
12827
+ );
12828
+ }
12829
+ }
12830
+ /** Drop the file. Used when the restore decision is "not this time" — the
12831
+ * session is policy, so a user who wants it gone gets it gone. */
12832
+ clear() {
12833
+ if (this.timer) {
12834
+ clearTimeout(this.timer);
12835
+ this.timer = null;
12836
+ }
12837
+ this.pending = null;
12838
+ try {
12839
+ fs.rmSync(this.path, { force: true });
12840
+ } catch (error) {
12841
+ this.log(`[browser] could not remove ${this.path}: ${String(error)}`);
12842
+ }
12843
+ }
12844
+ }
12037
12845
  const PSL_RULES = "ac\ncom.ac\nedu.ac\ngov.ac\nmil.ac\nnet.ac\norg.ac\nad\nae\nac.ae\nco.ae\ngov.ae\nmil.ae\nnet.ae\norg.ae\nsch.ae\naero\nairline.aero\nairport.aero\naccident-investigation.aero\naccident-prevention.aero\naerobatic.aero\naeroclub.aero\naerodrome.aero\nagents.aero\nair-surveillance.aero\nair-traffic-control.aero\naircraft.aero\nairtraffic.aero\nambulance.aero\nassociation.aero\nauthor.aero\nballooning.aero\nbroker.aero\ncaa.aero\ncargo.aero\ncatering.aero\ncertification.aero\nchampionship.aero\ncharter.aero\ncivilaviation.aero\nclub.aero\nconference.aero\nconsultant.aero\nconsulting.aero\ncontrol.aero\ncouncil.aero\ncrew.aero\ndesign.aero\ndgca.aero\neducator.aero\nemergency.aero\nengine.aero\nengineer.aero\nentertainment.aero\nequipment.aero\nexchange.aero\nexpress.aero\nfederation.aero\nflight.aero\nfreight.aero\nfuel.aero\ngliding.aero\ngovernment.aero\ngroundhandling.aero\ngroup.aero\nhanggliding.aero\nhomebuilt.aero\ninsurance.aero\njournal.aero\njournalist.aero\nleasing.aero\nlogistics.aero\nmagazine.aero\nmaintenance.aero\nmarketplace.aero\nmedia.aero\nmicrolight.aero\nmodelling.aero\nnavigation.aero\nparachuting.aero\nparagliding.aero\npassenger-association.aero\npilot.aero\npress.aero\nproduction.aero\nrecreation.aero\nrepbody.aero\nres.aero\nresearch.aero\nrotorcraft.aero\nsafety.aero\nscientist.aero\nservices.aero\nshow.aero\nskydiving.aero\nsoftware.aero\nstudent.aero\ntaxi.aero\ntrader.aero\ntrading.aero\ntrainer.aero\nunion.aero\nworkinggroup.aero\nworks.aero\naf\ncom.af\nedu.af\ngov.af\nnet.af\norg.af\nag\nco.ag\ncom.ag\nnet.ag\nnom.ag\norg.ag\nai\ncom.ai\nnet.ai\noff.ai\norg.ai\nal\ncom.al\nedu.al\ngov.al\nmil.al\nnet.al\norg.al\nam\nco.am\ncom.am\ncommune.am\nnet.am\norg.am\nao\nco.ao\ned.ao\nedu.ao\ngov.ao\ngv.ao\nit.ao\nog.ao\norg.ao\npb.ao\naq\nar\nbet.ar\ncom.ar\ncoop.ar\nedu.ar\ngob.ar\ngov.ar\nint.ar\nmil.ar\nmusica.ar\nmutual.ar\nnet.ar\norg.ar\nseg.ar\nsenasa.ar\ntur.ar\narpa\ne164.arpa\nhome.arpa\nin-addr.arpa\nip6.arpa\niris.arpa\nuri.arpa\nurn.arpa\nas\ngov.as\nasia\nat\nac.at\nsth.ac.at\nco.at\ngv.at\nor.at\nau\nasn.au\ncom.au\nedu.au\ngov.au\nid.au\nnet.au\norg.au\nconf.au\noz.au\nact.au\nnsw.au\nnt.au\nqld.au\nsa.au\ntas.au\nvic.au\nwa.au\nact.edu.au\ncatholic.edu.au\nnsw.edu.au\nnt.edu.au\nqld.edu.au\nsa.edu.au\ntas.edu.au\nvic.edu.au\nwa.edu.au\nqld.gov.au\nsa.gov.au\ntas.gov.au\nvic.gov.au\nwa.gov.au\naw\ncom.aw\nax\naz\nbiz.az\nco.az\ncom.az\nedu.az\ngov.az\ninfo.az\nint.az\nmil.az\nname.az\nnet.az\norg.az\npp.az\npro.az\nba\ncom.ba\nedu.ba\ngov.ba\nmil.ba\nnet.ba\norg.ba\nbb\nbiz.bb\nco.bb\ncom.bb\nedu.bb\ngov.bb\ninfo.bb\nnet.bb\norg.bb\nstore.bb\ntv.bb\nbd\nac.bd\nai.bd\nco.bd\ncom.bd\nedu.bd\ngov.bd\nid.bd\ninfo.bd\nit.bd\nmil.bd\nnet.bd\norg.bd\nsch.bd\ntv.bd\nbe\nac.be\nbf\ngov.bf\nbg\n0.bg\n1.bg\n2.bg\n3.bg\n4.bg\n5.bg\n6.bg\n7.bg\n8.bg\n9.bg\na.bg\nb.bg\nc.bg\nd.bg\ne.bg\nf.bg\ng.bg\nh.bg\ni.bg\nj.bg\nk.bg\nl.bg\nm.bg\nn.bg\no.bg\np.bg\nq.bg\nr.bg\ns.bg\nt.bg\nu.bg\nv.bg\nw.bg\nx.bg\ny.bg\nz.bg\nbh\ncom.bh\nedu.bh\ngov.bh\nnet.bh\norg.bh\nbi\nco.bi\ncom.bi\nedu.bi\nor.bi\norg.bi\nbiz\nbj\nafrica.bj\nagro.bj\narchitectes.bj\nassur.bj\navocats.bj\nco.bj\ncom.bj\neco.bj\necono.bj\nedu.bj\ninfo.bj\nloisirs.bj\nmoney.bj\nnet.bj\norg.bj\note.bj\nrestaurant.bj\nresto.bj\ntourism.bj\nuniv.bj\nbm\ncom.bm\nedu.bm\ngov.bm\nnet.bm\norg.bm\nbn\ncom.bn\nedu.bn\ngov.bn\nnet.bn\norg.bn\nbo\ncom.bo\nedu.bo\ngob.bo\nint.bo\nmil.bo\nnet.bo\norg.bo\ntv.bo\nweb.bo\nacademia.bo\nagro.bo\narte.bo\nblog.bo\nbolivia.bo\nciencia.bo\ncooperativa.bo\ndemocracia.bo\ndeporte.bo\necologia.bo\neconomia.bo\nempresa.bo\nia.bo\nindigena.bo\nindustria.bo\ninfo.bo\nmedicina.bo\nmovimiento.bo\nmusica.bo\nnatural.bo\nnombre.bo\nnoticias.bo\npatria.bo\nplurinacional.bo\npolitica.bo\nprofesional.bo\npueblo.bo\nrevista.bo\nsalud.bo\ntecnologia.bo\ntksat.bo\ntransporte.bo\nwiki.bo\nbr\n9guacu.br\nabc.br\nadm.br\nadv.br\nagr.br\naju.br\nam.br\nanani.br\naparecida.br\napi.br\napp.br\narq.br\nart.br\nato.br\nb.br\nbarueri.br\nbelem.br\nbet.br\nbhz.br\nbib.br\nbio.br\nblog.br\nbmd.br\nboavista.br\nbsb.br\ncampinagrande.br\ncampinas.br\ncaxias.br\ncim.br\ncng.br\ncnt.br\ncom.br\ncontagem.br\ncoop.br\ncoz.br\ncri.br\ncuiaba.br\ncuritiba.br\ndef.br\ndes.br\ndet.br\ndev.br\necn.br\neco.br\nedu.br\nemp.br\nenf.br\neng.br\nesp.br\netc.br\neti.br\nfar.br\nfeira.br\nflog.br\nfloripa.br\nfm.br\nfnd.br\nfortal.br\nfot.br\nfoz.br\nfst.br\ng12.br\ngeo.br\nggf.br\ngoiania.br\ngov.br\nac.gov.br\nal.gov.br\nam.gov.br\nap.gov.br\nba.gov.br\nce.gov.br\ndf.gov.br\nes.gov.br\ngo.gov.br\nma.gov.br\nmg.gov.br\nms.gov.br\nmt.gov.br\npa.gov.br\npb.gov.br\npe.gov.br\npi.gov.br\npr.gov.br\nrj.gov.br\nrn.gov.br\nro.gov.br\nrr.gov.br\nrs.gov.br\nsc.gov.br\nse.gov.br\nsp.gov.br\nto.gov.br\ngru.br\nia.br\nimb.br\nind.br\ninf.br\njab.br\njampa.br\njdf.br\njoinville.br\njor.br\njus.br\nleg.br\nleilao.br\nlel.br\nlog.br\nlondrina.br\nmacapa.br\nmaceio.br\nmanaus.br\nmaringa.br\nmat.br\nmed.br\nmil.br\nmorena.br\nmp.br\nmus.br\nnatal.br\nnet.br\nniteroi.br\n*.nom.br\nnot.br\nntr.br\nodo.br\nong.br\norg.br\nosasco.br\npalmas.br\npoa.br\nppg.br\npro.br\npsc.br\npsi.br\npvh.br\nqsl.br\nradio.br\nrec.br\nrecife.br\nrep.br\nribeirao.br\nrio.br\nriobranco.br\nriopreto.br\nsalvador.br\nsampa.br\nsantamaria.br\nsantoandre.br\nsaobernardo.br\nsaogonca.br\nseg.br\nsjc.br\nslg.br\nslz.br\nsocial.br\nsorocaba.br\nsrv.br\ntaxi.br\ntc.br\ntec.br\nteo.br\nthe.br\ntmp.br\ntrd.br\ntur.br\ntv.br\nudi.br\nvet.br\nvix.br\nvlog.br\nwiki.br\nxyz.br\nzlg.br\nbs\ncom.bs\nedu.bs\ngov.bs\nnet.bs\norg.bs\nbt\ncom.bt\nedu.bt\ngov.bt\nnet.bt\norg.bt\nbv\nbw\nac.bw\nco.bw\ngov.bw\nnet.bw\norg.bw\nby\ngov.by\nmil.by\ncom.by\nof.by\nbz\nco.bz\ncom.bz\nedu.bz\ngov.bz\nnet.bz\norg.bz\nca\nab.ca\nbc.ca\nmb.ca\nnb.ca\nnf.ca\nnl.ca\nns.ca\nnt.ca\nnu.ca\non.ca\npe.ca\nqc.ca\nsk.ca\nyk.ca\ngc.ca\ncat\ncc\ncd\ngov.cd\ncf\ncg\nch\nci\nac.ci\nxn--aroport-bya.ci\nasso.ci\nco.ci\ncom.ci\ned.ci\nedu.ci\ngo.ci\ngouv.ci\nint.ci\nnet.ci\nor.ci\norg.ci\n*.ck\n!www.ck\ncl\nco.cl\ngob.cl\ngov.cl\nmil.cl\ncm\nco.cm\ncom.cm\ngov.cm\nnet.cm\ncn\nac.cn\ncom.cn\nedu.cn\ngov.cn\nmil.cn\nnet.cn\norg.cn\nxn--55qx5d.cn\nxn--od0alg.cn\nxn--io0a7i.cn\nah.cn\nbj.cn\ncq.cn\nfj.cn\ngd.cn\ngs.cn\ngx.cn\ngz.cn\nha.cn\nhb.cn\nhe.cn\nhi.cn\nhk.cn\nhl.cn\nhn.cn\njl.cn\njs.cn\njx.cn\nln.cn\nmo.cn\nnm.cn\nnx.cn\nqh.cn\nsc.cn\nsd.cn\nsh.cn\nsn.cn\nsx.cn\ntj.cn\ntw.cn\nxj.cn\nxz.cn\nyn.cn\nzj.cn\nco\ncom.co\nedu.co\ngov.co\nmil.co\nnet.co\nnom.co\norg.co\ncom\ncoop\ncr\nac.cr\nco.cr\ned.cr\nfi.cr\ngo.cr\nor.cr\nsa.cr\ncu\ncom.cu\nedu.cu\ngob.cu\ninf.cu\nnat.cu\nnet.cu\norg.cu\ncv\ncom.cv\nedu.cv\nid.cv\nint.cv\nnet.cv\nnome.cv\norg.cv\npubl.cv\ncw\ncom.cw\nedu.cw\nnet.cw\norg.cw\ncx\ngov.cx\ncy\nac.cy\nbiz.cy\ncom.cy\nekloges.cy\ngov.cy\nltd.cy\nmil.cy\nnet.cy\norg.cy\npress.cy\npro.cy\ntm.cy\ncz\ngov.cz\nde\ndj\ndk\ndm\nco.dm\ncom.dm\nedu.dm\ngov.dm\nnet.dm\norg.dm\ndo\nart.do\ncom.do\nedu.do\ngob.do\ngov.do\nmil.do\nnet.do\norg.do\nsld.do\nweb.do\ndz\nart.dz\nasso.dz\ncom.dz\nedu.dz\ngov.dz\nnet.dz\norg.dz\npol.dz\nsoc.dz\ntm.dz\nec\nabg.ec\nadm.ec\nagron.ec\narqt.ec\nart.ec\nbar.ec\nchef.ec\ncom.ec\ncont.ec\ncpa.ec\ncue.ec\ndent.ec\ndgn.ec\ndisco.ec\ndoc.ec\nedu.ec\neng.ec\nesm.ec\nfin.ec\nfot.ec\ngal.ec\ngob.ec\ngov.ec\ngye.ec\nibr.ec\ninfo.ec\nk12.ec\nlat.ec\nloj.ec\nmed.ec\nmil.ec\nmktg.ec\nmon.ec\nnet.ec\nntr.ec\nodont.ec\norg.ec\npro.ec\nprof.ec\npsic.ec\npsiq.ec\npub.ec\nrio.ec\nrrpp.ec\nsal.ec\ntech.ec\ntul.ec\ntur.ec\nuio.ec\nvet.ec\nxxx.ec\nedu\nee\naip.ee\ncom.ee\nedu.ee\nfie.ee\ngov.ee\nlib.ee\nmed.ee\norg.ee\npri.ee\nriik.ee\neg\nac.eg\ncom.eg\nedu.eg\neun.eg\ngov.eg\ninfo.eg\nme.eg\nmil.eg\nname.eg\nnet.eg\norg.eg\nsci.eg\nsport.eg\ntv.eg\n*.er\nes\ncom.es\nedu.es\ngob.es\nnom.es\norg.es\net\nbiz.et\ncom.et\nedu.et\ngov.et\ninfo.et\nname.et\nnet.et\norg.et\neu\nfi\naland.fi\nfj\nac.fj\nbiz.fj\ncom.fj\nedu.fj\ngov.fj\nid.fj\ninfo.fj\nmil.fj\nname.fj\nnet.fj\norg.fj\npro.fj\n*.fk\nfm\ncom.fm\nedu.fm\nnet.fm\norg.fm\nfo\nfr\nasso.fr\ncom.fr\ngouv.fr\nnom.fr\nprd.fr\ntm.fr\navoues.fr\ncci.fr\ngreta.fr\nhuissier-justice.fr\nga\ngb\ngd\nedu.gd\ngov.gd\nge\ncom.ge\ncyb.ge\nedu.ge\ngov.ge\nllc.ge\nnet.ge\nonline.ge\norg.ge\npvt.ge\nschool.ge\ntnx.ge\ngf\ngg\nco.gg\nnet.gg\norg.gg\ngh\nbiz.gh\ncom.gh\nedu.gh\ngov.gh\nmil.gh\nnet.gh\norg.gh\ngi\ncom.gi\nedu.gi\ngov.gi\nltd.gi\nmod.gi\norg.gi\ngl\nco.gl\ncom.gl\nedu.gl\nnet.gl\norg.gl\ngm\ngn\nac.gn\ncom.gn\nedu.gn\ngov.gn\nnet.gn\norg.gn\ngov\ngp\nasso.gp\ncom.gp\nedu.gp\nmobi.gp\nnet.gp\norg.gp\ngq\ngr\ncom.gr\nedu.gr\ngov.gr\nnet.gr\norg.gr\ngs\ngt\ncom.gt\nedu.gt\ngob.gt\nind.gt\nmil.gt\nnet.gt\norg.gt\ngu\ncom.gu\nedu.gu\ngov.gu\nguam.gu\ninfo.gu\nnet.gu\norg.gu\nweb.gu\ngw\ngy\nco.gy\ncom.gy\nedu.gy\ngov.gy\nnet.gy\norg.gy\nhk\ncom.hk\nedu.hk\ngov.hk\nidv.hk\nnet.hk\norg.hk\nxn--ciqpn.hk\nxn--gmqw5a.hk\nxn--55qx5d.hk\nxn--mxtq1m.hk\nxn--lcvr32d.hk\nxn--wcvs22d.hk\nxn--gmq050i.hk\nxn--uc0atv.hk\nxn--uc0ay4a.hk\nxn--od0alg.hk\nxn--zf0avx.hk\nxn--mk0axi.hk\nxn--tn0ag.hk\nxn--od0aq3b.hk\nxn--io0a7i.hk\nhm\nhn\ncom.hn\nedu.hn\ngob.hn\nmil.hn\nnet.hn\norg.hn\nhr\ncom.hr\nfrom.hr\niz.hr\nname.hr\nht\nadult.ht\nart.ht\nasso.ht\ncom.ht\ncoop.ht\nedu.ht\nfirm.ht\ngouv.ht\ninfo.ht\nmed.ht\nnet.ht\norg.ht\nperso.ht\npol.ht\npro.ht\nrel.ht\nshop.ht\nhu\n2000.hu\nagrar.hu\nbolt.hu\ncasino.hu\ncity.hu\nco.hu\nerotica.hu\nerotika.hu\nfilm.hu\nforum.hu\ngames.hu\nhotel.hu\ninfo.hu\ningatlan.hu\njogasz.hu\nkonyvelo.hu\nlakas.hu\nmedia.hu\nnews.hu\norg.hu\npriv.hu\nreklam.hu\nsex.hu\nshop.hu\nsport.hu\nsuli.hu\nszex.hu\ntm.hu\ntozsde.hu\nutazas.hu\nvideo.hu\nid\nac.id\nai.id\nbiz.id\nco.id\ndesa.id\ngo.id\nkop.id\nmil.id\nmy.id\nnet.id\nor.id\nponpes.id\nsch.id\nweb.id\nxn--9tfky.id\nie\ngov.ie\nil\nac.il\nco.il\ngov.il\nidf.il\nk12.il\nmuni.il\nnet.il\norg.il\nxn--4dbrk0ce\nxn--4dbgdty6c.xn--4dbrk0ce\nxn--5dbhl8d.xn--4dbrk0ce\nxn--8dbq2a.xn--4dbrk0ce\nxn--hebda8b.xn--4dbrk0ce\nim\nac.im\nco.im\nltd.co.im\nplc.co.im\ncom.im\nnet.im\norg.im\ntt.im\ntv.im\nin\n5g.in\n6g.in\nac.in\naero.in\nai.in\nalumni.in\nam.in\nbank.in\nbihar.in\nbiz.in\nbusiness.in\nca.in\ncn.in\nco.in\ncom.in\ncoop.in\ncs.in\ndelhi.in\ndr.in\nedu.in\ner.in\nfin.in\nfirm.in\ngen.in\ngov.in\ngujarat.in\nind.in\ninfo.in\nint.in\ninternet.in\nio.in\nme.in\nmil.in\nnet.in\nnic.in\norg.in\npg.in\npost.in\npro.in\nres.in\nschool.in\ntravel.in\ntv.in\nub.in\nuk.in\nup.in\nus.in\ninfo\nint\neu.int\nio\nco.io\ncom.io\nedu.io\ngov.io\nmil.io\nnet.io\nnom.io\norg.io\niq\ncom.iq\nedu.iq\ngov.iq\nmil.iq\nnet.iq\norg.iq\nir\nac.ir\nco.ir\ngov.ir\nid.ir\nnet.ir\norg.ir\nsch.ir\nxn--mgba3a4f16a.ir\nxn--mgba3a4fra.ir\nis\nit\nedu.it\ngov.it\nabr.it\nabruzzo.it\naosta-valley.it\naostavalley.it\nbas.it\nbasilicata.it\ncal.it\ncalabria.it\ncam.it\ncampania.it\nemilia-romagna.it\nemiliaromagna.it\nemr.it\nfriuli-v-giulia.it\nfriuli-ve-giulia.it\nfriuli-vegiulia.it\nfriuli-venezia-giulia.it\nfriuli-veneziagiulia.it\nfriuli-vgiulia.it\nfriuliv-giulia.it\nfriulive-giulia.it\nfriulivegiulia.it\nfriulivenezia-giulia.it\nfriuliveneziagiulia.it\nfriulivgiulia.it\nfvg.it\nlaz.it\nlazio.it\nlig.it\nliguria.it\nlom.it\nlombardia.it\nlombardy.it\nlucania.it\nmar.it\nmarche.it\nmol.it\nmolise.it\npiedmont.it\npiemonte.it\npmn.it\npug.it\npuglia.it\nsar.it\nsardegna.it\nsardinia.it\nsic.it\nsicilia.it\nsicily.it\ntaa.it\ntos.it\ntoscana.it\ntrentin-sud-tirol.it\nxn--trentin-sd-tirol-rzb.it\ntrentin-sudtirol.it\nxn--trentin-sdtirol-7vb.it\ntrentin-sued-tirol.it\ntrentin-suedtirol.it\ntrentino-a-adige.it\ntrentino-aadige.it\ntrentino-alto-adige.it\ntrentino-altoadige.it\ntrentino-s-tirol.it\ntrentino-stirol.it\ntrentino-sud-tirol.it\nxn--trentino-sd-tirol-c3b.it\ntrentino-sudtirol.it\nxn--trentino-sdtirol-szb.it\ntrentino-sued-tirol.it\ntrentino-suedtirol.it\ntrentinoa-adige.it\ntrentinoaadige.it\ntrentinoalto-adige.it\ntrentinoaltoadige.it\ntrentinos-tirol.it\ntrentinostirol.it\ntrentinosud-tirol.it\nxn--trentinosd-tirol-rzb.it\nxn--trentinosdtirol-7vb.it\ntrentinosued-tirol.it\ntrentinosuedtirol.it\ntrentinsud-tirol.it\nxn--trentinsd-tirol-6vb.it\ntrentinsudtirol.it\nxn--trentinsdtirol-nsb.it\ntrentinsued-tirol.it\ntrentinsuedtirol.it\ntuscany.it\numb.it\numbria.it\nval-d-aosta.it\nval-daosta.it\nvald-aosta.it\nvalle-aosta.it\nvalle-d-aosta.it\nvalle-daosta.it\nvalleaosta.it\nvalled-aosta.it\nvalledaosta.it\nvallee-aoste.it\nxn--valle-aoste-ebb.it\nvallee-d-aoste.it\nxn--valle-d-aoste-ehb.it\nvalleeaoste.it\nxn--valleaoste-e7a.it\nvalleedaoste.it\nxn--valledaoste-ebb.it\nvao.it\nvda.it\nven.it\nveneto.it\nag.it\nagrigento.it\nal.it\nalessandria.it\nalto-adige.it\naltoadige.it\nan.it\nancona.it\nandria-barletta-trani.it\nandria-trani-barletta.it\nandriabarlettatrani.it\nandriatranibarletta.it\nao.it\naosta.it\naoste.it\nap.it\naq.it\nar.it\narezzo.it\nascoli-piceno.it\nascolipiceno.it\nasti.it\nat.it\nav.it\navellino.it\nba.it\nbalsan.it\nbalsan-sudtirol.it\nxn--balsan-sdtirol-nsb.it\nbalsan-suedtirol.it\nbari.it\nbarletta-trani-andria.it\nbarlettatraniandria.it\nbelluno.it\nbenevento.it\nbergamo.it\nbg.it\nbi.it\nbiella.it\nbl.it\nbn.it\nbo.it\nbologna.it\nbolzano.it\nbolzano-altoadige.it\nbozen.it\nbozen-sudtirol.it\nxn--bozen-sdtirol-2ob.it\nbozen-suedtirol.it\nbr.it\nbrescia.it\nbrindisi.it\nbs.it\nbt.it\nbulsan.it\nbulsan-sudtirol.it\nxn--bulsan-sdtirol-nsb.it\nbulsan-suedtirol.it\nbz.it\nca.it\ncagliari.it\ncaltanissetta.it\ncampidano-medio.it\ncampidanomedio.it\ncampobasso.it\ncarbonia-iglesias.it\ncarboniaiglesias.it\ncarrara-massa.it\ncarraramassa.it\ncaserta.it\ncatania.it\ncatanzaro.it\ncb.it\nce.it\ncesena-forli.it\nxn--cesena-forl-mcb.it\ncesenaforli.it\nxn--cesenaforl-i8a.it\nch.it\nchieti.it\nci.it\ncl.it\ncn.it\nco.it\ncomo.it\ncosenza.it\ncr.it\ncremona.it\ncrotone.it\ncs.it\nct.it\ncuneo.it\ncz.it\ndell-ogliastra.it\ndellogliastra.it\nen.it\nenna.it\nfc.it\nfe.it\nfermo.it\nferrara.it\nfg.it\nfi.it\nfirenze.it\nflorence.it\nfm.it\nfoggia.it\nforli-cesena.it\nxn--forl-cesena-fcb.it\nforlicesena.it\nxn--forlcesena-c8a.it\nfr.it\nfrosinone.it\nge.it\ngenoa.it\ngenova.it\ngo.it\ngorizia.it\ngr.it\ngrosseto.it\niglesias-carbonia.it\niglesiascarbonia.it\nim.it\nimperia.it\nis.it\nisernia.it\nkr.it\nla-spezia.it\nlaquila.it\nlaspezia.it\nlatina.it\nlc.it\nle.it\nlecce.it\nlecco.it\nli.it\nlivorno.it\nlo.it\nlodi.it\nlt.it\nlu.it\nlucca.it\nmacerata.it\nmantova.it\nmassa-carrara.it\nmassacarrara.it\nmatera.it\nmb.it\nmc.it\nme.it\nmedio-campidano.it\nmediocampidano.it\nmessina.it\nmi.it\nmilan.it\nmilano.it\nmn.it\nmo.it\nmodena.it\nmonza.it\nmonza-brianza.it\nmonza-e-della-brianza.it\nmonzabrianza.it\nmonzaebrianza.it\nmonzaedellabrianza.it\nms.it\nmt.it\nna.it\nnaples.it\nnapoli.it\nno.it\nnovara.it\nnu.it\nnuoro.it\nog.it\nogliastra.it\nolbia-tempio.it\nolbiatempio.it\nor.it\noristano.it\not.it\npa.it\npadova.it\npadua.it\npalermo.it\nparma.it\npavia.it\npc.it\npd.it\npe.it\nperugia.it\npesaro-urbino.it\npesarourbino.it\npescara.it\npg.it\npi.it\npiacenza.it\npisa.it\npistoia.it\npn.it\npo.it\npordenone.it\npotenza.it\npr.it\nprato.it\npt.it\npu.it\npv.it\npz.it\nra.it\nragusa.it\nravenna.it\nrc.it\nre.it\nreggio-calabria.it\nreggio-emilia.it\nreggiocalabria.it\nreggioemilia.it\nrg.it\nri.it\nrieti.it\nrimini.it\nrm.it\nrn.it\nro.it\nroma.it\nrome.it\nrovigo.it\nsa.it\nsalerno.it\nsassari.it\nsavona.it\nsi.it\nsiena.it\nsiracusa.it\nso.it\nsondrio.it\nsp.it\nsr.it\nss.it\nsu.it\nsud-sardegna.it\nsudsardegna.it\nxn--sdtirol-n2a.it\nsuedtirol.it\nsv.it\nta.it\ntaranto.it\nte.it\ntempio-olbia.it\ntempioolbia.it\nteramo.it\nterni.it\ntn.it\nto.it\ntorino.it\ntp.it\ntr.it\ntrani-andria-barletta.it\ntrani-barletta-andria.it\ntraniandriabarletta.it\ntranibarlettaandria.it\ntrapani.it\ntrentino.it\ntrento.it\ntreviso.it\ntrieste.it\nts.it\nturin.it\ntv.it\nud.it\nudine.it\nurbino-pesaro.it\nurbinopesaro.it\nva.it\nvarese.it\nvb.it\nvc.it\nve.it\nvenezia.it\nvenice.it\nverbania.it\nverbano-cusio-ossola.it\nvercelli.it\nverona.it\nvi.it\nvibo-valentia.it\nvibovalentia.it\nvicenza.it\nviterbo.it\nvr.it\nvs.it\nvt.it\nvv.it\nje\nco.je\nnet.je\norg.je\n*.jm\njo\nagri.jo\nai.jo\ncom.jo\nedu.jo\neng.jo\nfm.jo\ngov.jo\nmil.jo\nnet.jo\norg.jo\nper.jo\nphd.jo\nsch.jo\ntv.jo\njobs\njp\nac.jp\nad.jp\nco.jp\ned.jp\ngo.jp\ngr.jp\nlg.jp\nne.jp\nor.jp\naichi.jp\nakita.jp\naomori.jp\nchiba.jp\nehime.jp\nfukui.jp\nfukuoka.jp\nfukushima.jp\ngifu.jp\ngunma.jp\nhiroshima.jp\nhokkaido.jp\nhyogo.jp\nibaraki.jp\nishikawa.jp\niwate.jp\nkagawa.jp\nkagoshima.jp\nkanagawa.jp\nkochi.jp\nkumamoto.jp\nkyoto.jp\nmie.jp\nmiyagi.jp\nmiyazaki.jp\nnagano.jp\nnagasaki.jp\nnara.jp\nniigata.jp\noita.jp\nokayama.jp\nokinawa.jp\nosaka.jp\nsaga.jp\nsaitama.jp\nshiga.jp\nshimane.jp\nshizuoka.jp\ntochigi.jp\ntokushima.jp\ntokyo.jp\ntottori.jp\ntoyama.jp\nwakayama.jp\nyamagata.jp\nyamaguchi.jp\nyamanashi.jp\nxn--ehqz56n.jp\nxn--1lqs03n.jp\nxn--qqqt11m.jp\nxn--f6qx53a.jp\nxn--djrs72d6uy.jp\nxn--mkru45i.jp\nxn--0trq7p7nn.jp\nxn--5js045d.jp\nxn--kbrq7o.jp\nxn--pssu33l.jp\nxn--ntsq17g.jp\nxn--uisz3g.jp\nxn--6btw5a.jp\nxn--1ctwo.jp\nxn--6orx2r.jp\nxn--rht61e.jp\nxn--rht27z.jp\nxn--nit225k.jp\nxn--rht3d.jp\nxn--djty4k.jp\nxn--klty5x.jp\nxn--kltx9a.jp\nxn--kltp7d.jp\nxn--c3s14m.jp\nxn--vgu402c.jp\nxn--efvn9s.jp\nxn--1lqs71d.jp\nxn--4pvxs.jp\nxn--uuwu58a.jp\nxn--zbx025d.jp\nxn--8pvr4u.jp\nxn--5rtp49c.jp\nxn--ntso0iqx3a.jp\nxn--elqq16h.jp\nxn--4it168d.jp\nxn--klt787d.jp\nxn--rny31h.jp\nxn--7t0a264c.jp\nxn--uist22h.jp\nxn--8ltr62k.jp\nxn--2m4a15e.jp\nxn--32vp30h.jp\nxn--4it797k.jp\nxn--5rtq34k.jp\nxn--k7yn95e.jp\nxn--tor131o.jp\nxn--d5qv7z876c.jp\n*.kawasaki.jp\n!city.kawasaki.jp\n*.kitakyushu.jp\n!city.kitakyushu.jp\n*.kobe.jp\n!city.kobe.jp\n*.nagoya.jp\n!city.nagoya.jp\n*.sapporo.jp\n!city.sapporo.jp\n*.sendai.jp\n!city.sendai.jp\n*.yokohama.jp\n!city.yokohama.jp\naisai.aichi.jp\nama.aichi.jp\nanjo.aichi.jp\nasuke.aichi.jp\nchiryu.aichi.jp\nchita.aichi.jp\nfuso.aichi.jp\ngamagori.aichi.jp\nhanda.aichi.jp\nhazu.aichi.jp\nhekinan.aichi.jp\nhigashiura.aichi.jp\nichinomiya.aichi.jp\ninazawa.aichi.jp\ninuyama.aichi.jp\nisshiki.aichi.jp\niwakura.aichi.jp\nkanie.aichi.jp\nkariya.aichi.jp\nkasugai.aichi.jp\nkira.aichi.jp\nkiyosu.aichi.jp\nkomaki.aichi.jp\nkonan.aichi.jp\nkota.aichi.jp\nmihama.aichi.jp\nmiyoshi.aichi.jp\nnishio.aichi.jp\nnisshin.aichi.jp\nobu.aichi.jp\noguchi.aichi.jp\noharu.aichi.jp\nokazaki.aichi.jp\nowariasahi.aichi.jp\nseto.aichi.jp\nshikatsu.aichi.jp\nshinshiro.aichi.jp\nshitara.aichi.jp\ntahara.aichi.jp\ntakahama.aichi.jp\ntobishima.aichi.jp\ntoei.aichi.jp\ntogo.aichi.jp\ntokai.aichi.jp\ntokoname.aichi.jp\ntoyoake.aichi.jp\ntoyohashi.aichi.jp\ntoyokawa.aichi.jp\ntoyone.aichi.jp\ntoyota.aichi.jp\ntsushima.aichi.jp\nyatomi.aichi.jp\nakita.akita.jp\ndaisen.akita.jp\nfujisato.akita.jp\ngojome.akita.jp\nhachirogata.akita.jp\nhappou.akita.jp\nhigashinaruse.akita.jp\nhonjo.akita.jp\nhonjyo.akita.jp\nikawa.akita.jp\nkamikoani.akita.jp\nkamioka.akita.jp\nkatagami.akita.jp\nkazuno.akita.jp\nkitaakita.akita.jp\nkosaka.akita.jp\nkyowa.akita.jp\nmisato.akita.jp\nmitane.akita.jp\nmoriyoshi.akita.jp\nnikaho.akita.jp\nnoshiro.akita.jp\nodate.akita.jp\noga.akita.jp\nogata.akita.jp\nsemboku.akita.jp\nyokote.akita.jp\nyurihonjo.akita.jp\naomori.aomori.jp\ngonohe.aomori.jp\nhachinohe.aomori.jp\nhashikami.aomori.jp\nhiranai.aomori.jp\nhirosaki.aomori.jp\nitayanagi.aomori.jp\nkuroishi.aomori.jp\nmisawa.aomori.jp\nmutsu.aomori.jp\nnakadomari.aomori.jp\nnoheji.aomori.jp\noirase.aomori.jp\nowani.aomori.jp\nrokunohe.aomori.jp\nsannohe.aomori.jp\nshichinohe.aomori.jp\nshingo.aomori.jp\ntakko.aomori.jp\ntowada.aomori.jp\ntsugaru.aomori.jp\ntsuruta.aomori.jp\nabiko.chiba.jp\nasahi.chiba.jp\nchonan.chiba.jp\nchosei.chiba.jp\nchoshi.chiba.jp\nchuo.chiba.jp\nfunabashi.chiba.jp\nfuttsu.chiba.jp\nhanamigawa.chiba.jp\nichihara.chiba.jp\nichikawa.chiba.jp\nichinomiya.chiba.jp\ninzai.chiba.jp\nisumi.chiba.jp\nkamagaya.chiba.jp\nkamogawa.chiba.jp\nkashiwa.chiba.jp\nkatori.chiba.jp\nkatsuura.chiba.jp\nkimitsu.chiba.jp\nkisarazu.chiba.jp\nkozaki.chiba.jp\nkujukuri.chiba.jp\nkyonan.chiba.jp\nmatsudo.chiba.jp\nmidori.chiba.jp\nmihama.chiba.jp\nminamiboso.chiba.jp\nmobara.chiba.jp\nmutsuzawa.chiba.jp\nnagara.chiba.jp\nnagareyama.chiba.jp\nnarashino.chiba.jp\nnarita.chiba.jp\nnoda.chiba.jp\noamishirasato.chiba.jp\nomigawa.chiba.jp\nonjuku.chiba.jp\notaki.chiba.jp\nsakae.chiba.jp\nsakura.chiba.jp\nshimofusa.chiba.jp\nshirako.chiba.jp\nshiroi.chiba.jp\nshisui.chiba.jp\nsodegaura.chiba.jp\nsosa.chiba.jp\ntako.chiba.jp\ntateyama.chiba.jp\ntogane.chiba.jp\ntohnosho.chiba.jp\ntomisato.chiba.jp\nurayasu.chiba.jp\nyachimata.chiba.jp\nyachiyo.chiba.jp\nyokaichiba.chiba.jp\nyokoshibahikari.chiba.jp\nyotsukaido.chiba.jp\nainan.ehime.jp\nhonai.ehime.jp\nikata.ehime.jp\nimabari.ehime.jp\niyo.ehime.jp\nkamijima.ehime.jp\nkihoku.ehime.jp\nkumakogen.ehime.jp\nmasaki.ehime.jp\nmatsuno.ehime.jp\nmatsuyama.ehime.jp\nnamikata.ehime.jp\nniihama.ehime.jp\nozu.ehime.jp\nsaijo.ehime.jp\nseiyo.ehime.jp\nshikokuchuo.ehime.jp\ntobe.ehime.jp\ntoon.ehime.jp\nuchiko.ehime.jp\nuwajima.ehime.jp\nyawatahama.ehime.jp\nechizen.fukui.jp\neiheiji.fukui.jp\nfukui.fukui.jp\nikeda.fukui.jp\nkatsuyama.fukui.jp\nmihama.fukui.jp\nminamiechizen.fukui.jp\nobama.fukui.jp\nohi.fukui.jp\nono.fukui.jp\nsabae.fukui.jp\nsakai.fukui.jp\ntakahama.fukui.jp\ntsuruga.fukui.jp\nwakasa.fukui.jp\nashiya.fukuoka.jp\nbuzen.fukuoka.jp\nchikugo.fukuoka.jp\nchikuho.fukuoka.jp\nchikujo.fukuoka.jp\nchikushino.fukuoka.jp\nchikuzen.fukuoka.jp\nchuo.fukuoka.jp\ndazaifu.fukuoka.jp\nfukuchi.fukuoka.jp\nhakata.fukuoka.jp\nhigashi.fukuoka.jp\nhirokawa.fukuoka.jp\nhisayama.fukuoka.jp\niizuka.fukuoka.jp\ninatsuki.fukuoka.jp\nkaho.fukuoka.jp\nkasuga.fukuoka.jp\nkasuya.fukuoka.jp\nkawara.fukuoka.jp\nkeisen.fukuoka.jp\nkoga.fukuoka.jp\nkurate.fukuoka.jp\nkurogi.fukuoka.jp\nkurume.fukuoka.jp\nminami.fukuoka.jp\nmiyako.fukuoka.jp\nmiyama.fukuoka.jp\nmiyawaka.fukuoka.jp\nmizumaki.fukuoka.jp\nmunakata.fukuoka.jp\nnakagawa.fukuoka.jp\nnakama.fukuoka.jp\nnishi.fukuoka.jp\nnogata.fukuoka.jp\nogori.fukuoka.jp\nokagaki.fukuoka.jp\nokawa.fukuoka.jp\noki.fukuoka.jp\nomuta.fukuoka.jp\nonga.fukuoka.jp\nonojo.fukuoka.jp\noto.fukuoka.jp\nsaigawa.fukuoka.jp\nsasaguri.fukuoka.jp\nshingu.fukuoka.jp\nshinyoshitomi.fukuoka.jp\nshonai.fukuoka.jp\nsoeda.fukuoka.jp\nsue.fukuoka.jp\ntachiarai.fukuoka.jp\ntagawa.fukuoka.jp\ntakata.fukuoka.jp\ntoho.fukuoka.jp\ntoyotsu.fukuoka.jp\ntsuiki.fukuoka.jp\nukiha.fukuoka.jp\numi.fukuoka.jp\nusui.fukuoka.jp\nyamada.fukuoka.jp\nyame.fukuoka.jp\nyanagawa.fukuoka.jp\nyukuhashi.fukuoka.jp\naizubange.fukushima.jp\naizumisato.fukushima.jp\naizuwakamatsu.fukushima.jp\nasakawa.fukushima.jp\nbandai.fukushima.jp\ndate.fukushima.jp\nfukushima.fukushima.jp\nfurudono.fukushima.jp\nfutaba.fukushima.jp\nhanawa.fukushima.jp\nhigashi.fukushima.jp\nhirata.fukushima.jp\nhirono.fukushima.jp\niitate.fukushima.jp\ninawashiro.fukushima.jp\nishikawa.fukushima.jp\niwaki.fukushima.jp\nizumizaki.fukushima.jp\nkagamiishi.fukushima.jp\nkaneyama.fukushima.jp\nkawamata.fukushima.jp\nkitakata.fukushima.jp\nkitashiobara.fukushima.jp\nkoori.fukushima.jp\nkoriyama.fukushima.jp\nkunimi.fukushima.jp\nmiharu.fukushima.jp\nmishima.fukushima.jp\nnamie.fukushima.jp\nnango.fukushima.jp\nnishiaizu.fukushima.jp\nnishigo.fukushima.jp\nokuma.fukushima.jp\nomotego.fukushima.jp\nono.fukushima.jp\notama.fukushima.jp\nsamegawa.fukushima.jp\nshimogo.fukushima.jp\nshirakawa.fukushima.jp\nshowa.fukushima.jp\nsoma.fukushima.jp\nsukagawa.fukushima.jp\ntaishin.fukushima.jp\ntamakawa.fukushima.jp\ntanagura.fukushima.jp\ntenei.fukushima.jp\nyabuki.fukushima.jp\nyamato.fukushima.jp\nyamatsuri.fukushima.jp\nyanaizu.fukushima.jp\nyugawa.fukushima.jp\nanpachi.gifu.jp\nena.gifu.jp\ngifu.gifu.jp\nginan.gifu.jp\ngodo.gifu.jp\ngujo.gifu.jp\nhashima.gifu.jp\nhichiso.gifu.jp\nhida.gifu.jp\nhigashishirakawa.gifu.jp\nibigawa.gifu.jp\nikeda.gifu.jp\nkakamigahara.gifu.jp\nkani.gifu.jp\nkasahara.gifu.jp\nkasamatsu.gifu.jp\nkawaue.gifu.jp\nkitagata.gifu.jp\nmino.gifu.jp\nminokamo.gifu.jp\nmitake.gifu.jp\nmizunami.gifu.jp\nmotosu.gifu.jp\nnakatsugawa.gifu.jp\nogaki.gifu.jp\nsakahogi.gifu.jp\nseki.gifu.jp\nsekigahara.gifu.jp\nshirakawa.gifu.jp\ntajimi.gifu.jp\ntakayama.gifu.jp\ntarui.gifu.jp\ntoki.gifu.jp\ntomika.gifu.jp\nwanouchi.gifu.jp\nyamagata.gifu.jp\nyaotsu.gifu.jp\nyoro.gifu.jp\nannaka.gunma.jp\nchiyoda.gunma.jp\nfujioka.gunma.jp\nhigashiagatsuma.gunma.jp\nisesaki.gunma.jp\nitakura.gunma.jp\nkanna.gunma.jp\nkanra.gunma.jp\nkatashina.gunma.jp\nkawaba.gunma.jp\nkiryu.gunma.jp\nkusatsu.gunma.jp\nmaebashi.gunma.jp\nmeiwa.gunma.jp\nmidori.gunma.jp\nminakami.gunma.jp\nnaganohara.gunma.jp\nnakanojo.gunma.jp\nnanmoku.gunma.jp\nnumata.gunma.jp\noizumi.gunma.jp\nora.gunma.jp\nota.gunma.jp\nshibukawa.gunma.jp\nshimonita.gunma.jp\nshinto.gunma.jp\nshowa.gunma.jp\ntakasaki.gunma.jp\ntakayama.gunma.jp\ntamamura.gunma.jp\ntatebayashi.gunma.jp\ntomioka.gunma.jp\ntsukiyono.gunma.jp\ntsumagoi.gunma.jp\nueno.gunma.jp\nyoshioka.gunma.jp\nasaminami.hiroshima.jp\ndaiwa.hiroshima.jp\netajima.hiroshima.jp\nfuchu.hiroshima.jp\nfukuyama.hiroshima.jp\nhatsukaichi.hiroshima.jp\nhigashihiroshima.hiroshima.jp\nhongo.hiroshima.jp\njinsekikogen.hiroshima.jp\nkaita.hiroshima.jp\nkui.hiroshima.jp\nkumano.hiroshima.jp\nkure.hiroshima.jp\nmihara.hiroshima.jp\nmiyoshi.hiroshima.jp\nnaka.hiroshima.jp\nonomichi.hiroshima.jp\nosakikamijima.hiroshima.jp\notake.hiroshima.jp\nsaka.hiroshima.jp\nsera.hiroshima.jp\nseranishi.hiroshima.jp\nshinichi.hiroshima.jp\nshobara.hiroshima.jp\ntakehara.hiroshima.jp\nabashiri.hokkaido.jp\nabira.hokkaido.jp\naibetsu.hokkaido.jp\nakabira.hokkaido.jp\nakkeshi.hokkaido.jp\nasahikawa.hokkaido.jp\nashibetsu.hokkaido.jp\nashoro.hokkaido.jp\nassabu.hokkaido.jp\natsuma.hokkaido.jp\nbibai.hokkaido.jp\nbiei.hokkaido.jp\nbifuka.hokkaido.jp\nbihoro.hokkaido.jp\nbiratori.hokkaido.jp\nchippubetsu.hokkaido.jp\nchitose.hokkaido.jp\ndate.hokkaido.jp\nebetsu.hokkaido.jp\nembetsu.hokkaido.jp\neniwa.hokkaido.jp\nerimo.hokkaido.jp\nesan.hokkaido.jp\nesashi.hokkaido.jp\nfukagawa.hokkaido.jp\nfukushima.hokkaido.jp\nfurano.hokkaido.jp\nfurubira.hokkaido.jp\nhaboro.hokkaido.jp\nhakodate.hokkaido.jp\nhamatonbetsu.hokkaido.jp\nhidaka.hokkaido.jp\nhigashikagura.hokkaido.jp\nhigashikawa.hokkaido.jp\nhiroo.hokkaido.jp\nhokuryu.hokkaido.jp\nhokuto.hokkaido.jp\nhonbetsu.hokkaido.jp\nhorokanai.hokkaido.jp\nhoronobe.hokkaido.jp\nikeda.hokkaido.jp\nimakane.hokkaido.jp\nishikari.hokkaido.jp\niwamizawa.hokkaido.jp\niwanai.hokkaido.jp\nkamifurano.hokkaido.jp\nkamikawa.hokkaido.jp\nkamishihoro.hokkaido.jp\nkamisunagawa.hokkaido.jp\nkamoenai.hokkaido.jp\nkayabe.hokkaido.jp\nkembuchi.hokkaido.jp\nkikonai.hokkaido.jp\nkimobetsu.hokkaido.jp\nkitahiroshima.hokkaido.jp\nkitami.hokkaido.jp\nkiyosato.hokkaido.jp\nkoshimizu.hokkaido.jp\nkunneppu.hokkaido.jp\nkuriyama.hokkaido.jp\nkuromatsunai.hokkaido.jp\nkushiro.hokkaido.jp\nkutchan.hokkaido.jp\nkyowa.hokkaido.jp\nmashike.hokkaido.jp\nmatsumae.hokkaido.jp\nmikasa.hokkaido.jp\nminamifurano.hokkaido.jp\nmombetsu.hokkaido.jp\nmoseushi.hokkaido.jp\nmukawa.hokkaido.jp\nmuroran.hokkaido.jp\nnaie.hokkaido.jp\nnakagawa.hokkaido.jp\nnakasatsunai.hokkaido.jp\nnakatombetsu.hokkaido.jp\nnanae.hokkaido.jp\nnanporo.hokkaido.jp\nnayoro.hokkaido.jp\nnemuro.hokkaido.jp\nniikappu.hokkaido.jp\nniki.hokkaido.jp\nnishiokoppe.hokkaido.jp\nnoboribetsu.hokkaido.jp\nnumata.hokkaido.jp\nobihiro.hokkaido.jp\nobira.hokkaido.jp\noketo.hokkaido.jp\nokoppe.hokkaido.jp\notaru.hokkaido.jp\notobe.hokkaido.jp\notofuke.hokkaido.jp\notoineppu.hokkaido.jp\noumu.hokkaido.jp\nozora.hokkaido.jp\npippu.hokkaido.jp\nrankoshi.hokkaido.jp\nrebun.hokkaido.jp\nrikubetsu.hokkaido.jp\nrishiri.hokkaido.jp\nrishirifuji.hokkaido.jp\nsaroma.hokkaido.jp\nsarufutsu.hokkaido.jp\nshakotan.hokkaido.jp\nshari.hokkaido.jp\nshibecha.hokkaido.jp\nshibetsu.hokkaido.jp\nshikabe.hokkaido.jp\nshikaoi.hokkaido.jp\nshimamaki.hokkaido.jp\nshimizu.hokkaido.jp\nshimokawa.hokkaido.jp\nshinshinotsu.hokkaido.jp\nshintoku.hokkaido.jp\nshiranuka.hokkaido.jp\nshiraoi.hokkaido.jp\nshiriuchi.hokkaido.jp\nsobetsu.hokkaido.jp\nsunagawa.hokkaido.jp\ntaiki.hokkaido.jp\ntakasu.hokkaido.jp\ntakikawa.hokkaido.jp\ntakinoue.hokkaido.jp\nteshikaga.hokkaido.jp\ntobetsu.hokkaido.jp\ntohma.hokkaido.jp\ntomakomai.hokkaido.jp\ntomari.hokkaido.jp\ntoya.hokkaido.jp\ntoyako.hokkaido.jp\ntoyotomi.hokkaido.jp\ntoyoura.hokkaido.jp\ntsubetsu.hokkaido.jp\ntsukigata.hokkaido.jp\nurakawa.hokkaido.jp\nurausu.hokkaido.jp\nuryu.hokkaido.jp\nutashinai.hokkaido.jp\nwakkanai.hokkaido.jp\nwassamu.hokkaido.jp\nyakumo.hokkaido.jp\nyoichi.hokkaido.jp\naioi.hyogo.jp\nakashi.hyogo.jp\nako.hyogo.jp\namagasaki.hyogo.jp\naogaki.hyogo.jp\nasago.hyogo.jp\nashiya.hyogo.jp\nawaji.hyogo.jp\nfukusaki.hyogo.jp\ngoshiki.hyogo.jp\nharima.hyogo.jp\nhimeji.hyogo.jp\nichikawa.hyogo.jp\ninagawa.hyogo.jp\nitami.hyogo.jp\nkakogawa.hyogo.jp\nkamigori.hyogo.jp\nkamikawa.hyogo.jp\nkasai.hyogo.jp\nkasuga.hyogo.jp\nkawanishi.hyogo.jp\nmiki.hyogo.jp\nminamiawaji.hyogo.jp\nnishinomiya.hyogo.jp\nnishiwaki.hyogo.jp\nono.hyogo.jp\nsanda.hyogo.jp\nsannan.hyogo.jp\nsasayama.hyogo.jp\nsayo.hyogo.jp\nshingu.hyogo.jp\nshinonsen.hyogo.jp\nshiso.hyogo.jp\nsumoto.hyogo.jp\ntaishi.hyogo.jp\ntaka.hyogo.jp\ntakarazuka.hyogo.jp\ntakasago.hyogo.jp\ntakino.hyogo.jp\ntamba.hyogo.jp\ntatsuno.hyogo.jp\ntoyooka.hyogo.jp\nyabu.hyogo.jp\nyashiro.hyogo.jp\nyoka.hyogo.jp\nyokawa.hyogo.jp\nami.ibaraki.jp\nasahi.ibaraki.jp\nbando.ibaraki.jp\nchikusei.ibaraki.jp\ndaigo.ibaraki.jp\nfujishiro.ibaraki.jp\nhitachi.ibaraki.jp\nhitachinaka.ibaraki.jp\nhitachiomiya.ibaraki.jp\nhitachiota.ibaraki.jp\nibaraki.ibaraki.jp\nina.ibaraki.jp\ninashiki.ibaraki.jp\nitako.ibaraki.jp\niwama.ibaraki.jp\njoso.ibaraki.jp\nkamisu.ibaraki.jp\nkasama.ibaraki.jp\nkashima.ibaraki.jp\nkasumigaura.ibaraki.jp\nkoga.ibaraki.jp\nmiho.ibaraki.jp\nmito.ibaraki.jp\nmoriya.ibaraki.jp\nnaka.ibaraki.jp\nnamegata.ibaraki.jp\noarai.ibaraki.jp\nogawa.ibaraki.jp\nomitama.ibaraki.jp\nryugasaki.ibaraki.jp\nsakai.ibaraki.jp\nsakuragawa.ibaraki.jp\nshimodate.ibaraki.jp\nshimotsuma.ibaraki.jp\nshirosato.ibaraki.jp\nsowa.ibaraki.jp\nsuifu.ibaraki.jp\ntakahagi.ibaraki.jp\ntamatsukuri.ibaraki.jp\ntokai.ibaraki.jp\ntomobe.ibaraki.jp\ntone.ibaraki.jp\ntoride.ibaraki.jp\ntsuchiura.ibaraki.jp\ntsukuba.ibaraki.jp\nuchihara.ibaraki.jp\nushiku.ibaraki.jp\nyachiyo.ibaraki.jp\nyamagata.ibaraki.jp\nyawara.ibaraki.jp\nyuki.ibaraki.jp\nanamizu.ishikawa.jp\nhakui.ishikawa.jp\nhakusan.ishikawa.jp\nkaga.ishikawa.jp\nkahoku.ishikawa.jp\nkanazawa.ishikawa.jp\nkawakita.ishikawa.jp\nkomatsu.ishikawa.jp\nnakanoto.ishikawa.jp\nnanao.ishikawa.jp\nnomi.ishikawa.jp\nnonoichi.ishikawa.jp\nnoto.ishikawa.jp\nshika.ishikawa.jp\nsuzu.ishikawa.jp\ntsubata.ishikawa.jp\ntsurugi.ishikawa.jp\nuchinada.ishikawa.jp\nwajima.ishikawa.jp\nfudai.iwate.jp\nfujisawa.iwate.jp\nhanamaki.iwate.jp\nhiraizumi.iwate.jp\nhirono.iwate.jp\nichinohe.iwate.jp\nichinoseki.iwate.jp\niwaizumi.iwate.jp\niwate.iwate.jp\njoboji.iwate.jp\nkamaishi.iwate.jp\nkanegasaki.iwate.jp\nkarumai.iwate.jp\nkawai.iwate.jp\nkitakami.iwate.jp\nkuji.iwate.jp\nkunohe.iwate.jp\nkuzumaki.iwate.jp\nmiyako.iwate.jp\nmizusawa.iwate.jp\nmorioka.iwate.jp\nninohe.iwate.jp\nnoda.iwate.jp\nofunato.iwate.jp\noshu.iwate.jp\notsuchi.iwate.jp\nrikuzentakata.iwate.jp\nshiwa.iwate.jp\nshizukuishi.iwate.jp\nsumita.iwate.jp\ntanohata.iwate.jp\ntono.iwate.jp\nyahaba.iwate.jp\nyamada.iwate.jp\nayagawa.kagawa.jp\nhigashikagawa.kagawa.jp\nkanonji.kagawa.jp\nkotohira.kagawa.jp\nmanno.kagawa.jp\nmarugame.kagawa.jp\nmitoyo.kagawa.jp\nnaoshima.kagawa.jp\nsanuki.kagawa.jp\ntadotsu.kagawa.jp\ntakamatsu.kagawa.jp\ntonosho.kagawa.jp\nuchinomi.kagawa.jp\nutazu.kagawa.jp\nzentsuji.kagawa.jp\nakune.kagoshima.jp\namami.kagoshima.jp\nhioki.kagoshima.jp\nisa.kagoshima.jp\nisen.kagoshima.jp\nizumi.kagoshima.jp\nkagoshima.kagoshima.jp\nkanoya.kagoshima.jp\nkawanabe.kagoshima.jp\nkinko.kagoshima.jp\nkouyama.kagoshima.jp\nmakurazaki.kagoshima.jp\nmatsumoto.kagoshima.jp\nminamitane.kagoshima.jp\nnakatane.kagoshima.jp\nnishinoomote.kagoshima.jp\nsatsumasendai.kagoshima.jp\nsoo.kagoshima.jp\ntarumizu.kagoshima.jp\nyusui.kagoshima.jp\naikawa.kanagawa.jp\natsugi.kanagawa.jp\nayase.kanagawa.jp\nchigasaki.kanagawa.jp\nebina.kanagawa.jp\nfujisawa.kanagawa.jp\nhadano.kanagawa.jp\nhakone.kanagawa.jp\nhiratsuka.kanagawa.jp\nisehara.kanagawa.jp\nkaisei.kanagawa.jp\nkamakura.kanagawa.jp\nkiyokawa.kanagawa.jp\nmatsuda.kanagawa.jp\nminamiashigara.kanagawa.jp\nmiura.kanagawa.jp\nnakai.kanagawa.jp\nninomiya.kanagawa.jp\nodawara.kanagawa.jp\noi.kanagawa.jp\noiso.kanagawa.jp\nsagamihara.kanagawa.jp\nsamukawa.kanagawa.jp\ntsukui.kanagawa.jp\nyamakita.kanagawa.jp\nyamato.kanagawa.jp\nyokosuka.kanagawa.jp\nyugawara.kanagawa.jp\nzama.kanagawa.jp\nzushi.kanagawa.jp\naki.kochi.jp\ngeisei.kochi.jp\nhidaka.kochi.jp\nhigashitsuno.kochi.jp\nino.kochi.jp\nkagami.kochi.jp\nkami.kochi.jp\nkitagawa.kochi.jp\nkochi.kochi.jp\nmihara.kochi.jp\nmotoyama.kochi.jp\nmuroto.kochi.jp\nnahari.kochi.jp\nnakamura.kochi.jp\nnankoku.kochi.jp\nnishitosa.kochi.jp\nniyodogawa.kochi.jp\nochi.kochi.jp\nokawa.kochi.jp\notoyo.kochi.jp\notsuki.kochi.jp\nsakawa.kochi.jp\nsukumo.kochi.jp\nsusaki.kochi.jp\ntosa.kochi.jp\ntosashimizu.kochi.jp\ntoyo.kochi.jp\ntsuno.kochi.jp\numaji.kochi.jp\nyasuda.kochi.jp\nyusuhara.kochi.jp\namakusa.kumamoto.jp\narao.kumamoto.jp\naso.kumamoto.jp\nchoyo.kumamoto.jp\ngyokuto.kumamoto.jp\nkamiamakusa.kumamoto.jp\nkikuchi.kumamoto.jp\nkumamoto.kumamoto.jp\nmashiki.kumamoto.jp\nmifune.kumamoto.jp\nminamata.kumamoto.jp\nminamioguni.kumamoto.jp\nnagasu.kumamoto.jp\nnishihara.kumamoto.jp\noguni.kumamoto.jp\nozu.kumamoto.jp\nsumoto.kumamoto.jp\ntakamori.kumamoto.jp\nuki.kumamoto.jp\nuto.kumamoto.jp\nyamaga.kumamoto.jp\nyamato.kumamoto.jp\nyatsushiro.kumamoto.jp\nayabe.kyoto.jp\nfukuchiyama.kyoto.jp\nhigashiyama.kyoto.jp\nide.kyoto.jp\nine.kyoto.jp\njoyo.kyoto.jp\nkameoka.kyoto.jp\nkamo.kyoto.jp\nkita.kyoto.jp\nkizu.kyoto.jp\nkumiyama.kyoto.jp\nkyotamba.kyoto.jp\nkyotanabe.kyoto.jp\nkyotango.kyoto.jp\nmaizuru.kyoto.jp\nminami.kyoto.jp\nminamiyamashiro.kyoto.jp\nmiyazu.kyoto.jp\nmuko.kyoto.jp\nnagaokakyo.kyoto.jp\nnakagyo.kyoto.jp\nnantan.kyoto.jp\noyamazaki.kyoto.jp\nsakyo.kyoto.jp\nseika.kyoto.jp\ntanabe.kyoto.jp\nuji.kyoto.jp\nujitawara.kyoto.jp\nwazuka.kyoto.jp\nyamashina.kyoto.jp\nyawata.kyoto.jp\nasahi.mie.jp\ninabe.mie.jp\nise.mie.jp\nkameyama.mie.jp\nkawagoe.mie.jp\nkiho.mie.jp\nkisosaki.mie.jp\nkiwa.mie.jp\nkomono.mie.jp\nkumano.mie.jp\nkuwana.mie.jp\nmatsusaka.mie.jp\nmeiwa.mie.jp\nmihama.mie.jp\nminamiise.mie.jp\nmisugi.mie.jp\nmiyama.mie.jp\nnabari.mie.jp\nshima.mie.jp\nsuzuka.mie.jp\ntado.mie.jp\ntaiki.mie.jp\ntaki.mie.jp\ntamaki.mie.jp\ntoba.mie.jp\ntsu.mie.jp\nudono.mie.jp\nureshino.mie.jp\nwatarai.mie.jp\nyokkaichi.mie.jp\nfurukawa.miyagi.jp\nhigashimatsushima.miyagi.jp\nishinomaki.miyagi.jp\niwanuma.miyagi.jp\nkakuda.miyagi.jp\nkami.miyagi.jp\nkawasaki.miyagi.jp\nmarumori.miyagi.jp\nmatsushima.miyagi.jp\nminamisanriku.miyagi.jp\nmisato.miyagi.jp\nmurata.miyagi.jp\nnatori.miyagi.jp\nogawara.miyagi.jp\nohira.miyagi.jp\nonagawa.miyagi.jp\nosaki.miyagi.jp\nrifu.miyagi.jp\nsemine.miyagi.jp\nshibata.miyagi.jp\nshichikashuku.miyagi.jp\nshikama.miyagi.jp\nshiogama.miyagi.jp\nshiroishi.miyagi.jp\ntagajo.miyagi.jp\ntaiwa.miyagi.jp\ntome.miyagi.jp\ntomiya.miyagi.jp\nwakuya.miyagi.jp\nwatari.miyagi.jp\nyamamoto.miyagi.jp\nzao.miyagi.jp\naya.miyazaki.jp\nebino.miyazaki.jp\ngokase.miyazaki.jp\nhyuga.miyazaki.jp\nkadogawa.miyazaki.jp\nkawaminami.miyazaki.jp\nkijo.miyazaki.jp\nkitagawa.miyazaki.jp\nkitakata.miyazaki.jp\nkitaura.miyazaki.jp\nkobayashi.miyazaki.jp\nkunitomi.miyazaki.jp\nkushima.miyazaki.jp\nmimata.miyazaki.jp\nmiyakonojo.miyazaki.jp\nmiyazaki.miyazaki.jp\nmorotsuka.miyazaki.jp\nnichinan.miyazaki.jp\nnishimera.miyazaki.jp\nnobeoka.miyazaki.jp\nsaito.miyazaki.jp\nshiiba.miyazaki.jp\nshintomi.miyazaki.jp\ntakaharu.miyazaki.jp\ntakanabe.miyazaki.jp\ntakazaki.miyazaki.jp\ntsuno.miyazaki.jp\nachi.nagano.jp\nagematsu.nagano.jp\nanan.nagano.jp\naoki.nagano.jp\nasahi.nagano.jp\nazumino.nagano.jp\nchikuhoku.nagano.jp\nchikuma.nagano.jp\nchino.nagano.jp\nfujimi.nagano.jp\nhakuba.nagano.jp\nhara.nagano.jp\nhiraya.nagano.jp\niida.nagano.jp\niijima.nagano.jp\niiyama.nagano.jp\niizuna.nagano.jp\nikeda.nagano.jp\nikusaka.nagano.jp\nina.nagano.jp\nkaruizawa.nagano.jp\nkawakami.nagano.jp\nkiso.nagano.jp\nkisofukushima.nagano.jp\nkitaaiki.nagano.jp\nkomagane.nagano.jp\nkomoro.nagano.jp\nmatsukawa.nagano.jp\nmatsumoto.nagano.jp\nmiasa.nagano.jp\nminamiaiki.nagano.jp\nminamimaki.nagano.jp\nminamiminowa.nagano.jp\nminowa.nagano.jp\nmiyada.nagano.jp\nmiyota.nagano.jp\nmochizuki.nagano.jp\nnagano.nagano.jp\nnagawa.nagano.jp\nnagiso.nagano.jp\nnakagawa.nagano.jp\nnakano.nagano.jp\nnozawaonsen.nagano.jp\nobuse.nagano.jp\nogawa.nagano.jp\nokaya.nagano.jp\nomachi.nagano.jp\nomi.nagano.jp\nookuwa.nagano.jp\nooshika.nagano.jp\notaki.nagano.jp\notari.nagano.jp\nsakae.nagano.jp\nsakaki.nagano.jp\nsaku.nagano.jp\nsakuho.nagano.jp\nshimosuwa.nagano.jp\nshinanomachi.nagano.jp\nshiojiri.nagano.jp\nsuwa.nagano.jp\nsuzaka.nagano.jp\ntakagi.nagano.jp\ntakamori.nagano.jp\ntakayama.nagano.jp\ntateshina.nagano.jp\ntatsuno.nagano.jp\ntogakushi.nagano.jp\ntogura.nagano.jp\ntomi.nagano.jp\nueda.nagano.jp\nwada.nagano.jp\nyamagata.nagano.jp\nyamanouchi.nagano.jp\nyasaka.nagano.jp\nyasuoka.nagano.jp\nchijiwa.nagasaki.jp\nfutsu.nagasaki.jp\ngoto.nagasaki.jp\nhasami.nagasaki.jp\nhirado.nagasaki.jp\niki.nagasaki.jp\nisahaya.nagasaki.jp\nkawatana.nagasaki.jp\nkuchinotsu.nagasaki.jp\nmatsuura.nagasaki.jp\nnagasaki.nagasaki.jp\nobama.nagasaki.jp\nomura.nagasaki.jp\noseto.nagasaki.jp\nsaikai.nagasaki.jp\nsasebo.nagasaki.jp\nseihi.nagasaki.jp\nshimabara.nagasaki.jp\nshinkamigoto.nagasaki.jp\ntogitsu.nagasaki.jp\ntsushima.nagasaki.jp\nunzen.nagasaki.jp\nando.nara.jp\ngose.nara.jp\nheguri.nara.jp\nhigashiyoshino.nara.jp\nikaruga.nara.jp\nikoma.nara.jp\nkamikitayama.nara.jp\nkanmaki.nara.jp\nkashiba.nara.jp\nkashihara.nara.jp\nkatsuragi.nara.jp\nkawai.nara.jp\nkawakami.nara.jp\nkawanishi.nara.jp\nkoryo.nara.jp\nkurotaki.nara.jp\nmitsue.nara.jp\nmiyake.nara.jp\nnara.nara.jp\nnosegawa.nara.jp\noji.nara.jp\nouda.nara.jp\noyodo.nara.jp\nsakurai.nara.jp\nsango.nara.jp\nshimoichi.nara.jp\nshimokitayama.nara.jp\nshinjo.nara.jp\nsoni.nara.jp\ntakatori.nara.jp\ntawaramoto.nara.jp\ntenkawa.nara.jp\ntenri.nara.jp\nuda.nara.jp\nyamatokoriyama.nara.jp\nyamatotakada.nara.jp\nyamazoe.nara.jp\nyoshino.nara.jp\naga.niigata.jp\nagano.niigata.jp\ngosen.niigata.jp\nitoigawa.niigata.jp\nizumozaki.niigata.jp\njoetsu.niigata.jp\nkamo.niigata.jp\nkariwa.niigata.jp\nkashiwazaki.niigata.jp\nminamiuonuma.niigata.jp\nmitsuke.niigata.jp\nmuika.niigata.jp\nmurakami.niigata.jp\nmyoko.niigata.jp\nnagaoka.niigata.jp\nniigata.niigata.jp\nojiya.niigata.jp\nomi.niigata.jp\nsado.niigata.jp\nsanjo.niigata.jp\nseiro.niigata.jp\nseirou.niigata.jp\nsekikawa.niigata.jp\nshibata.niigata.jp\ntagami.niigata.jp\ntainai.niigata.jp\ntochio.niigata.jp\ntokamachi.niigata.jp\ntsubame.niigata.jp\ntsunan.niigata.jp\nuonuma.niigata.jp\nyahiko.niigata.jp\nyoita.niigata.jp\nyuzawa.niigata.jp\nbeppu.oita.jp\nbungoono.oita.jp\nbungotakada.oita.jp\nhasama.oita.jp\nhiji.oita.jp\nhimeshima.oita.jp\nhita.oita.jp\nkamitsue.oita.jp\nkokonoe.oita.jp\nkuju.oita.jp\nkunisaki.oita.jp\nkusu.oita.jp\noita.oita.jp\nsaiki.oita.jp\ntaketa.oita.jp\ntsukumi.oita.jp\nusa.oita.jp\nusuki.oita.jp\nyufu.oita.jp\nakaiwa.okayama.jp\nasakuchi.okayama.jp\nbizen.okayama.jp\nhayashima.okayama.jp\nibara.okayama.jp\nkagamino.okayama.jp\nkasaoka.okayama.jp\nkibichuo.okayama.jp\nkumenan.okayama.jp\nkurashiki.okayama.jp\nmaniwa.okayama.jp\nmisaki.okayama.jp\nnagi.okayama.jp\nniimi.okayama.jp\nnishiawakura.okayama.jp\nokayama.okayama.jp\nsatosho.okayama.jp\nsetouchi.okayama.jp\nshinjo.okayama.jp\nshoo.okayama.jp\nsoja.okayama.jp\ntakahashi.okayama.jp\ntamano.okayama.jp\ntsuyama.okayama.jp\nwake.okayama.jp\nyakage.okayama.jp\naguni.okinawa.jp\nginowan.okinawa.jp\nginoza.okinawa.jp\ngushikami.okinawa.jp\nhaebaru.okinawa.jp\nhigashi.okinawa.jp\nhirara.okinawa.jp\niheya.okinawa.jp\nishigaki.okinawa.jp\nishikawa.okinawa.jp\nitoman.okinawa.jp\nizena.okinawa.jp\nkadena.okinawa.jp\nkin.okinawa.jp\nkitadaito.okinawa.jp\nkitanakagusuku.okinawa.jp\nkumejima.okinawa.jp\nkunigami.okinawa.jp\nminamidaito.okinawa.jp\nmotobu.okinawa.jp\nnago.okinawa.jp\nnaha.okinawa.jp\nnakagusuku.okinawa.jp\nnakijin.okinawa.jp\nnanjo.okinawa.jp\nnishihara.okinawa.jp\nogimi.okinawa.jp\nokinawa.okinawa.jp\nonna.okinawa.jp\nshimoji.okinawa.jp\ntaketomi.okinawa.jp\ntarama.okinawa.jp\ntokashiki.okinawa.jp\ntomigusuku.okinawa.jp\ntonaki.okinawa.jp\nurasoe.okinawa.jp\nuruma.okinawa.jp\nyaese.okinawa.jp\nyomitan.okinawa.jp\nyonabaru.okinawa.jp\nyonaguni.okinawa.jp\nzamami.okinawa.jp\nabeno.osaka.jp\nchihayaakasaka.osaka.jp\nchuo.osaka.jp\ndaito.osaka.jp\nfujiidera.osaka.jp\nhabikino.osaka.jp\nhannan.osaka.jp\nhigashiosaka.osaka.jp\nhigashisumiyoshi.osaka.jp\nhigashiyodogawa.osaka.jp\nhirakata.osaka.jp\nibaraki.osaka.jp\nikeda.osaka.jp\nizumi.osaka.jp\nizumiotsu.osaka.jp\nizumisano.osaka.jp\nkadoma.osaka.jp\nkaizuka.osaka.jp\nkanan.osaka.jp\nkashiwara.osaka.jp\nkatano.osaka.jp\nkawachinagano.osaka.jp\nkishiwada.osaka.jp\nkita.osaka.jp\nkumatori.osaka.jp\nmatsubara.osaka.jp\nminato.osaka.jp\nminoh.osaka.jp\nmisaki.osaka.jp\nmoriguchi.osaka.jp\nneyagawa.osaka.jp\nnishi.osaka.jp\nnose.osaka.jp\nosakasayama.osaka.jp\nsakai.osaka.jp\nsayama.osaka.jp\nsennan.osaka.jp\nsettsu.osaka.jp\nshijonawate.osaka.jp\nshimamoto.osaka.jp\nsuita.osaka.jp\ntadaoka.osaka.jp\ntaishi.osaka.jp\ntajiri.osaka.jp\ntakaishi.osaka.jp\ntakatsuki.osaka.jp\ntondabayashi.osaka.jp\ntoyonaka.osaka.jp\ntoyono.osaka.jp\nyao.osaka.jp\nariake.saga.jp\narita.saga.jp\nfukudomi.saga.jp\ngenkai.saga.jp\nhamatama.saga.jp\nhizen.saga.jp\nimari.saga.jp\nkamimine.saga.jp\nkanzaki.saga.jp\nkaratsu.saga.jp\nkashima.saga.jp\nkitagata.saga.jp\nkitahata.saga.jp\nkiyama.saga.jp\nkouhoku.saga.jp\nkyuragi.saga.jp\nnishiarita.saga.jp\nogi.saga.jp\nomachi.saga.jp\nouchi.saga.jp\nsaga.saga.jp\nshiroishi.saga.jp\ntaku.saga.jp\ntara.saga.jp\ntosu.saga.jp\nyoshinogari.saga.jp\narakawa.saitama.jp\nasaka.saitama.jp\nchichibu.saitama.jp\nfujimi.saitama.jp\nfujimino.saitama.jp\nfukaya.saitama.jp\nhanno.saitama.jp\nhanyu.saitama.jp\nhasuda.saitama.jp\nhatogaya.saitama.jp\nhatoyama.saitama.jp\nhidaka.saitama.jp\nhigashichichibu.saitama.jp\nhigashimatsuyama.saitama.jp\nhonjo.saitama.jp\nina.saitama.jp\niruma.saitama.jp\niwatsuki.saitama.jp\nkamiizumi.saitama.jp\nkamikawa.saitama.jp\nkamisato.saitama.jp\nkasukabe.saitama.jp\nkawagoe.saitama.jp\nkawaguchi.saitama.jp\nkawajima.saitama.jp\nkazo.saitama.jp\nkitamoto.saitama.jp\nkoshigaya.saitama.jp\nkounosu.saitama.jp\nkuki.saitama.jp\nkumagaya.saitama.jp\nmatsubushi.saitama.jp\nminano.saitama.jp\nmisato.saitama.jp\nmiyashiro.saitama.jp\nmiyoshi.saitama.jp\nmoroyama.saitama.jp\nnagatoro.saitama.jp\nnamegawa.saitama.jp\nniiza.saitama.jp\nogano.saitama.jp\nogawa.saitama.jp\nogose.saitama.jp\nokegawa.saitama.jp\nomiya.saitama.jp\notaki.saitama.jp\nranzan.saitama.jp\nryokami.saitama.jp\nsaitama.saitama.jp\nsakado.saitama.jp\nsatte.saitama.jp\nsayama.saitama.jp\nshiki.saitama.jp\nshiraoka.saitama.jp\nsoka.saitama.jp\nsugito.saitama.jp\ntoda.saitama.jp\ntokigawa.saitama.jp\ntokorozawa.saitama.jp\ntsurugashima.saitama.jp\nurawa.saitama.jp\nwarabi.saitama.jp\nyashio.saitama.jp\nyokoze.saitama.jp\nyono.saitama.jp\nyorii.saitama.jp\nyoshida.saitama.jp\nyoshikawa.saitama.jp\nyoshimi.saitama.jp\naisho.shiga.jp\ngamo.shiga.jp\nhigashiomi.shiga.jp\nhikone.shiga.jp\nkoka.shiga.jp\nkonan.shiga.jp\nkosei.shiga.jp\nkoto.shiga.jp\nkusatsu.shiga.jp\nmaibara.shiga.jp\nmoriyama.shiga.jp\nnagahama.shiga.jp\nnishiazai.shiga.jp\nnotogawa.shiga.jp\nomihachiman.shiga.jp\notsu.shiga.jp\nritto.shiga.jp\nryuoh.shiga.jp\ntakashima.shiga.jp\ntakatsuki.shiga.jp\ntorahime.shiga.jp\ntoyosato.shiga.jp\nyasu.shiga.jp\nakagi.shimane.jp\nama.shimane.jp\ngotsu.shimane.jp\nhamada.shimane.jp\nhigashiizumo.shimane.jp\nhikawa.shimane.jp\nhikimi.shimane.jp\nizumo.shimane.jp\nkakinoki.shimane.jp\nmasuda.shimane.jp\nmatsue.shimane.jp\nmisato.shimane.jp\nnishinoshima.shimane.jp\nohda.shimane.jp\nokinoshima.shimane.jp\nokuizumo.shimane.jp\nshimane.shimane.jp\ntamayu.shimane.jp\ntsuwano.shimane.jp\nunnan.shimane.jp\nyakumo.shimane.jp\nyasugi.shimane.jp\nyatsuka.shimane.jp\narai.shizuoka.jp\natami.shizuoka.jp\nfuji.shizuoka.jp\nfujieda.shizuoka.jp\nfujikawa.shizuoka.jp\nfujinomiya.shizuoka.jp\nfukuroi.shizuoka.jp\ngotemba.shizuoka.jp\nhaibara.shizuoka.jp\nhamamatsu.shizuoka.jp\nhigashiizu.shizuoka.jp\nito.shizuoka.jp\niwata.shizuoka.jp\nizu.shizuoka.jp\nizunokuni.shizuoka.jp\nkakegawa.shizuoka.jp\nkannami.shizuoka.jp\nkawanehon.shizuoka.jp\nkawazu.shizuoka.jp\nkikugawa.shizuoka.jp\nkosai.shizuoka.jp\nmakinohara.shizuoka.jp\nmatsuzaki.shizuoka.jp\nminamiizu.shizuoka.jp\nmishima.shizuoka.jp\nmorimachi.shizuoka.jp\nnishiizu.shizuoka.jp\nnumazu.shizuoka.jp\nomaezaki.shizuoka.jp\nshimada.shizuoka.jp\nshimizu.shizuoka.jp\nshimoda.shizuoka.jp\nshizuoka.shizuoka.jp\nsusono.shizuoka.jp\nyaizu.shizuoka.jp\nyoshida.shizuoka.jp\nashikaga.tochigi.jp\nbato.tochigi.jp\nhaga.tochigi.jp\nichikai.tochigi.jp\niwafune.tochigi.jp\nkaminokawa.tochigi.jp\nkanuma.tochigi.jp\nkarasuyama.tochigi.jp\nkuroiso.tochigi.jp\nmashiko.tochigi.jp\nmibu.tochigi.jp\nmoka.tochigi.jp\nmotegi.tochigi.jp\nnasu.tochigi.jp\nnasushiobara.tochigi.jp\nnikko.tochigi.jp\nnishikata.tochigi.jp\nnogi.tochigi.jp\nohira.tochigi.jp\nohtawara.tochigi.jp\noyama.tochigi.jp\nsakura.tochigi.jp\nsano.tochigi.jp\nshimotsuke.tochigi.jp\nshioya.tochigi.jp\ntakanezawa.tochigi.jp\ntochigi.tochigi.jp\ntsuga.tochigi.jp\nujiie.tochigi.jp\nutsunomiya.tochigi.jp\nyaita.tochigi.jp\naizumi.tokushima.jp\nanan.tokushima.jp\nichiba.tokushima.jp\nitano.tokushima.jp\nkainan.tokushima.jp\nkomatsushima.tokushima.jp\nmatsushige.tokushima.jp\nmima.tokushima.jp\nminami.tokushima.jp\nmiyoshi.tokushima.jp\nmugi.tokushima.jp\nnakagawa.tokushima.jp\nnaruto.tokushima.jp\nsanagochi.tokushima.jp\nshishikui.tokushima.jp\ntokushima.tokushima.jp\nwajiki.tokushima.jp\nadachi.tokyo.jp\nakiruno.tokyo.jp\nakishima.tokyo.jp\naogashima.tokyo.jp\narakawa.tokyo.jp\nbunkyo.tokyo.jp\nchiyoda.tokyo.jp\nchofu.tokyo.jp\nchuo.tokyo.jp\nedogawa.tokyo.jp\nfuchu.tokyo.jp\nfussa.tokyo.jp\nhachijo.tokyo.jp\nhachioji.tokyo.jp\nhamura.tokyo.jp\nhigashikurume.tokyo.jp\nhigashimurayama.tokyo.jp\nhigashiyamato.tokyo.jp\nhino.tokyo.jp\nhinode.tokyo.jp\nhinohara.tokyo.jp\ninagi.tokyo.jp\nitabashi.tokyo.jp\nkatsushika.tokyo.jp\nkita.tokyo.jp\nkiyose.tokyo.jp\nkodaira.tokyo.jp\nkoganei.tokyo.jp\nkokubunji.tokyo.jp\nkomae.tokyo.jp\nkoto.tokyo.jp\nkouzushima.tokyo.jp\nkunitachi.tokyo.jp\nmachida.tokyo.jp\nmeguro.tokyo.jp\nminato.tokyo.jp\nmitaka.tokyo.jp\nmizuho.tokyo.jp\nmusashimurayama.tokyo.jp\nmusashino.tokyo.jp\nnakano.tokyo.jp\nnerima.tokyo.jp\nogasawara.tokyo.jp\nokutama.tokyo.jp\nome.tokyo.jp\noshima.tokyo.jp\nota.tokyo.jp\nsetagaya.tokyo.jp\nshibuya.tokyo.jp\nshinagawa.tokyo.jp\nshinjuku.tokyo.jp\nsuginami.tokyo.jp\nsumida.tokyo.jp\ntachikawa.tokyo.jp\ntaito.tokyo.jp\ntama.tokyo.jp\ntoshima.tokyo.jp\nchizu.tottori.jp\nhino.tottori.jp\nkawahara.tottori.jp\nkoge.tottori.jp\nkotoura.tottori.jp\nmisasa.tottori.jp\nnanbu.tottori.jp\nnichinan.tottori.jp\nsakaiminato.tottori.jp\ntottori.tottori.jp\nwakasa.tottori.jp\nyazu.tottori.jp\nyonago.tottori.jp\nasahi.toyama.jp\nfuchu.toyama.jp\nfukumitsu.toyama.jp\nfunahashi.toyama.jp\nhimi.toyama.jp\nimizu.toyama.jp\ninami.toyama.jp\njohana.toyama.jp\nkamiichi.toyama.jp\nkurobe.toyama.jp\nnakaniikawa.toyama.jp\nnamerikawa.toyama.jp\nnanto.toyama.jp\nnyuzen.toyama.jp\noyabe.toyama.jp\ntaira.toyama.jp\ntakaoka.toyama.jp\ntateyama.toyama.jp\ntoga.toyama.jp\ntonami.toyama.jp\ntoyama.toyama.jp\nunazuki.toyama.jp\nuozu.toyama.jp\nyamada.toyama.jp\narida.wakayama.jp\naridagawa.wakayama.jp\ngobo.wakayama.jp\nhashimoto.wakayama.jp\nhidaka.wakayama.jp\nhirogawa.wakayama.jp\ninami.wakayama.jp\niwade.wakayama.jp\nkainan.wakayama.jp\nkamitonda.wakayama.jp\nkatsuragi.wakayama.jp\nkimino.wakayama.jp\nkinokawa.wakayama.jp\nkitayama.wakayama.jp\nkoya.wakayama.jp\nkoza.wakayama.jp\nkozagawa.wakayama.jp\nkudoyama.wakayama.jp\nkushimoto.wakayama.jp\nmihama.wakayama.jp\nmisato.wakayama.jp\nnachikatsuura.wakayama.jp\nshingu.wakayama.jp\nshirahama.wakayama.jp\ntaiji.wakayama.jp\ntanabe.wakayama.jp\nwakayama.wakayama.jp\nyuasa.wakayama.jp\nyura.wakayama.jp\nasahi.yamagata.jp\nfunagata.yamagata.jp\nhigashine.yamagata.jp\niide.yamagata.jp\nkahoku.yamagata.jp\nkaminoyama.yamagata.jp\nkaneyama.yamagata.jp\nkawanishi.yamagata.jp\nmamurogawa.yamagata.jp\nmikawa.yamagata.jp\nmurayama.yamagata.jp\nnagai.yamagata.jp\nnakayama.yamagata.jp\nnanyo.yamagata.jp\nnishikawa.yamagata.jp\nobanazawa.yamagata.jp\noe.yamagata.jp\noguni.yamagata.jp\nohkura.yamagata.jp\noishida.yamagata.jp\nsagae.yamagata.jp\nsakata.yamagata.jp\nsakegawa.yamagata.jp\nshinjo.yamagata.jp\nshirataka.yamagata.jp\nshonai.yamagata.jp\ntakahata.yamagata.jp\ntendo.yamagata.jp\ntozawa.yamagata.jp\ntsuruoka.yamagata.jp\nyamagata.yamagata.jp\nyamanobe.yamagata.jp\nyonezawa.yamagata.jp\nyuza.yamagata.jp\nabu.yamaguchi.jp\nhagi.yamaguchi.jp\nhikari.yamaguchi.jp\nhofu.yamaguchi.jp\niwakuni.yamaguchi.jp\nkudamatsu.yamaguchi.jp\nmitou.yamaguchi.jp\nnagato.yamaguchi.jp\noshima.yamaguchi.jp\nshimonoseki.yamaguchi.jp\nshunan.yamaguchi.jp\ntabuse.yamaguchi.jp\ntokuyama.yamaguchi.jp\ntoyota.yamaguchi.jp\nube.yamaguchi.jp\nyuu.yamaguchi.jp\nchuo.yamanashi.jp\ndoshi.yamanashi.jp\nfuefuki.yamanashi.jp\nfujikawa.yamanashi.jp\nfujikawaguchiko.yamanashi.jp\nfujiyoshida.yamanashi.jp\nhayakawa.yamanashi.jp\nhokuto.yamanashi.jp\nichikawamisato.yamanashi.jp\nkai.yamanashi.jp\nkofu.yamanashi.jp\nkoshu.yamanashi.jp\nkosuge.yamanashi.jp\nminami-alps.yamanashi.jp\nminobu.yamanashi.jp\nnakamichi.yamanashi.jp\nnanbu.yamanashi.jp\nnarusawa.yamanashi.jp\nnirasaki.yamanashi.jp\nnishikatsura.yamanashi.jp\noshino.yamanashi.jp\notsuki.yamanashi.jp\nshowa.yamanashi.jp\ntabayama.yamanashi.jp\ntsuru.yamanashi.jp\nuenohara.yamanashi.jp\nyamanakako.yamanashi.jp\nyamanashi.yamanashi.jp\nke\nac.ke\nco.ke\ngo.ke\ninfo.ke\nme.ke\nmobi.ke\nne.ke\nor.ke\nsc.ke\nkg\ncom.kg\nedu.kg\ngov.kg\nmil.kg\nnet.kg\norg.kg\nkh\ncom.kh\nedu.kh\ngov.kh\nnet.kh\norg.kh\nki\nbiz.ki\ncom.ki\nedu.ki\ngov.ki\ninfo.ki\nnet.ki\norg.ki\nkm\nass.km\ncom.km\nedu.km\ngov.km\nmil.km\nnom.km\norg.km\nprd.km\ntm.km\nasso.km\ncoop.km\ngouv.km\nmedecin.km\nnotaires.km\npharmaciens.km\npresse.km\nveterinaire.km\nkn\nedu.kn\ngov.kn\nnet.kn\norg.kn\nkp\ncom.kp\nedu.kp\ngov.kp\norg.kp\nrep.kp\ntra.kp\nkr\nac.kr\nai.kr\nco.kr\nes.kr\ngo.kr\nhs.kr\nio.kr\nit.kr\nkg.kr\nme.kr\nmil.kr\nms.kr\nne.kr\nor.kr\npe.kr\nre.kr\nsc.kr\nbusan.kr\nchungbuk.kr\nchungnam.kr\ndaegu.kr\ndaejeon.kr\ngangwon.kr\ngwangju.kr\ngyeongbuk.kr\ngyeonggi.kr\ngyeongnam.kr\nincheon.kr\njeju.kr\njeonbuk.kr\njeonnam.kr\nseoul.kr\nulsan.kr\nkw\ncom.kw\nedu.kw\nemb.kw\ngov.kw\nind.kw\nnet.kw\norg.kw\nky\ncom.ky\nedu.ky\nnet.ky\norg.ky\nkz\ncom.kz\nedu.kz\ngov.kz\nmil.kz\nnet.kz\norg.kz\nla\ncom.la\nedu.la\ngov.la\ninfo.la\nint.la\nnet.la\norg.la\nper.la\nlb\ncom.lb\nedu.lb\ngov.lb\nnet.lb\norg.lb\nlc\nco.lc\ncom.lc\nedu.lc\ngov.lc\nnet.lc\norg.lc\nli\nlk\nac.lk\nassn.lk\ncom.lk\nedu.lk\ngov.lk\ngrp.lk\nhotel.lk\nint.lk\nltd.lk\nnet.lk\nngo.lk\norg.lk\nsch.lk\nsoc.lk\nweb.lk\nlr\ncom.lr\nedu.lr\ngov.lr\nnet.lr\norg.lr\nls\nac.ls\nbiz.ls\nco.ls\nedu.ls\ngov.ls\ninfo.ls\nnet.ls\norg.ls\nsc.ls\nlt\ngov.lt\nlu\nlv\nasn.lv\ncom.lv\nconf.lv\nedu.lv\ngov.lv\nid.lv\nmil.lv\nnet.lv\norg.lv\nly\ncom.ly\nedu.ly\ngov.ly\nid.ly\nmed.ly\nnet.ly\norg.ly\nplc.ly\nsch.ly\nma\nac.ma\nco.ma\ngov.ma\nnet.ma\norg.ma\npress.ma\nmc\nasso.mc\ntm.mc\nmd\nme\nac.me\nco.me\nedu.me\ngov.me\nits.me\nnet.me\norg.me\npriv.me\nmg\nco.mg\ncom.mg\nedu.mg\ngov.mg\nmil.mg\nnom.mg\norg.mg\nprd.mg\nmh\nmil\nmk\ncom.mk\nedu.mk\ngov.mk\ninf.mk\nname.mk\nnet.mk\norg.mk\nml\nac.ml\nart.ml\nasso.ml\ncom.ml\nedu.ml\ngouv.ml\ngov.ml\ninfo.ml\ninst.ml\nnet.ml\norg.ml\npr.ml\npresse.ml\n*.mm\nmn\nedu.mn\ngov.mn\norg.mn\nmo\ncom.mo\nedu.mo\ngov.mo\nnet.mo\norg.mo\nmobi\nmp\nmq\nmr\ngov.mr\nms\ncom.ms\nedu.ms\ngov.ms\nnet.ms\norg.ms\nmt\ncom.mt\nedu.mt\nnet.mt\norg.mt\nmu\nac.mu\nco.mu\ncom.mu\ngov.mu\nnet.mu\nor.mu\norg.mu\nmuseum\nmv\naero.mv\nbiz.mv\ncom.mv\ncoop.mv\nedu.mv\ngov.mv\ninfo.mv\nint.mv\nmil.mv\nmuseum.mv\nname.mv\nnet.mv\norg.mv\npro.mv\nmw\nac.mw\nbiz.mw\nco.mw\ncom.mw\ncoop.mw\nedu.mw\ngov.mw\nint.mw\nnet.mw\norg.mw\nmx\ncom.mx\nedu.mx\ngob.mx\nnet.mx\norg.mx\nmy\nbiz.my\ncom.my\nedu.my\ngov.my\nmil.my\nname.my\nnet.my\norg.my\nmz\nac.mz\nadv.mz\nco.mz\nedu.mz\ngov.mz\nmil.mz\nnet.mz\norg.mz\nna\nalt.na\nco.na\ncom.na\ngov.na\nnet.na\norg.na\nname\nnc\nasso.nc\nnom.nc\nne\nnet\nnf\narts.nf\ncom.nf\nfirm.nf\ninfo.nf\nnet.nf\nother.nf\nper.nf\nrec.nf\nstore.nf\nweb.nf\nng\ncom.ng\nedu.ng\ngov.ng\ni.ng\nmil.ng\nmobi.ng\nname.ng\nnet.ng\norg.ng\nsch.ng\nni\nac.ni\nbiz.ni\nco.ni\ncom.ni\nedu.ni\ngob.ni\nin.ni\ninfo.ni\nint.ni\nmil.ni\nnet.ni\nnom.ni\norg.ni\nweb.ni\nnl\nno\nfhs.no\nfolkebibl.no\nfylkesbibl.no\ngielda.no\nherad.no\nidrett.no\nkommune.no\nmuseum.no\npriv.no\nsuohkan.no\ntjielte.no\nuenorge.no\nvgs.no\ndep.no\nmil.no\nstat.no\naa.no\nah.no\nbu.no\nfm.no\nhl.no\nhm.no\njan-mayen.no\nmr.no\nnl.no\nnt.no\nof.no\nol.no\noslo.no\nrl.no\nsf.no\nst.no\nsvalbard.no\ntm.no\ntr.no\nva.no\nvf.no\ngs.aa.no\ngs.ah.no\ngs.bu.no\ngs.fm.no\ngs.hl.no\ngs.hm.no\ngs.jan-mayen.no\ngs.mr.no\ngs.nl.no\ngs.nt.no\ngs.of.no\ngs.ol.no\ngs.oslo.no\ngs.rl.no\ngs.sf.no\ngs.st.no\ngs.svalbard.no\ngs.tm.no\ngs.tr.no\ngs.va.no\ngs.vf.no\nakrehamn.no\nxn--krehamn-dxa.no\nalgard.no\nxn--lgrd-poac.no\narna.no\nbronnoysund.no\nxn--brnnysund-m8ac.no\nbrumunddal.no\nbryne.no\ndrobak.no\nxn--drbak-wua.no\negersund.no\nfetsund.no\nfloro.no\nxn--flor-jra.no\nfredrikstad.no\nhokksund.no\nhonefoss.no\nxn--hnefoss-q1a.no\njessheim.no\njorpeland.no\nxn--jrpeland-54a.no\nkirkenes.no\nkopervik.no\nkrokstadelva.no\nlangevag.no\nxn--langevg-jxa.no\nleirvik.no\nmjondalen.no\nxn--mjndalen-64a.no\nmo-i-rana.no\nmosjoen.no\nxn--mosjen-eya.no\nnesoddtangen.no\norkanger.no\nosoyro.no\nxn--osyro-wua.no\nraholt.no\nxn--rholt-mra.no\nsandnessjoen.no\nxn--sandnessjen-ogb.no\nskedsmokorset.no\nslattum.no\nspjelkavik.no\nstathelle.no\nstavern.no\nstjordalshalsen.no\nxn--stjrdalshalsen-sqb.no\ntananger.no\ntranby.no\nvossevangen.no\naarborte.no\naejrie.no\nafjord.no\nxn--fjord-lra.no\nagdenes.no\nnes.akershus.no\naknoluokta.no\nxn--koluokta-7ya57h.no\nal.no\nxn--l-1fa.no\nalaheadju.no\nxn--laheadju-7ya.no\nalesund.no\nxn--lesund-hua.no\nalstahaug.no\nalta.no\nxn--lt-liac.no\nalvdal.no\namli.no\nxn--mli-tla.no\namot.no\nxn--mot-tla.no\nandasuolo.no\nandebu.no\nandoy.no\nxn--andy-ira.no\nardal.no\nxn--rdal-poa.no\naremark.no\narendal.no\nxn--s-1fa.no\naseral.no\nxn--seral-lra.no\nasker.no\naskim.no\naskoy.no\nxn--asky-ira.no\naskvoll.no\nasnes.no\nxn--snes-poa.no\naudnedal.no\naukra.no\naure.no\naurland.no\naurskog-holand.no\nxn--aurskog-hland-jnb.no\naustevoll.no\naustrheim.no\naveroy.no\nxn--avery-yua.no\nbadaddja.no\nxn--bdddj-mrabd.no\nxn--brum-voa.no\nbahcavuotna.no\nxn--bhcavuotna-s4a.no\nbahccavuotna.no\nxn--bhccavuotna-k7a.no\nbaidar.no\nxn--bidr-5nac.no\nbajddar.no\nxn--bjddar-pta.no\nbalat.no\nxn--blt-elab.no\nbalestrand.no\nballangen.no\nbalsfjord.no\nbamble.no\nbardu.no\nbarum.no\nbatsfjord.no\nxn--btsfjord-9za.no\nbearalvahki.no\nxn--bearalvhki-y4a.no\nbeardu.no\nbeiarn.no\nberg.no\nbergen.no\nberlevag.no\nxn--berlevg-jxa.no\nbievat.no\nxn--bievt-0qa.no\nbindal.no\nbirkenes.no\nbjerkreim.no\nbjugn.no\nbodo.no\nxn--bod-2na.no\nbokn.no\nbomlo.no\nxn--bmlo-gra.no\nbremanger.no\nbronnoy.no\nxn--brnny-wuac.no\nbudejju.no\nnes.buskerud.no\nbygland.no\nbykle.no\ncahcesuolo.no\nxn--hcesuolo-7ya35b.no\ndavvenjarga.no\nxn--davvenjrga-y4a.no\ndavvesiida.no\ndeatnu.no\ndielddanuorri.no\ndivtasvuodna.no\ndivttasvuotna.no\ndonna.no\nxn--dnna-gra.no\ndovre.no\ndrammen.no\ndrangedal.no\ndyroy.no\nxn--dyry-ira.no\neid.no\neidfjord.no\neidsberg.no\neidskog.no\neidsvoll.no\neigersund.no\nelverum.no\nenebakk.no\nengerdal.no\netne.no\netnedal.no\nevenassi.no\nxn--eveni-0qa01ga.no\nevenes.no\nevje-og-hornnes.no\nfarsund.no\nfauske.no\nfedje.no\nfet.no\nfinnoy.no\nxn--finny-yua.no\nfitjar.no\nfjaler.no\nfjell.no\nfla.no\nxn--fl-zia.no\nflakstad.no\nflatanger.no\nflekkefjord.no\nflesberg.no\nflora.no\nfolldal.no\nforde.no\nxn--frde-gra.no\nforsand.no\nfosnes.no\nxn--frna-woa.no\nfrana.no\nfrogn.no\nfroland.no\nfrosta.no\nfroya.no\nxn--frya-hra.no\nfuoisku.no\nfuossko.no\nfusa.no\nfyresdal.no\ngaivuotna.no\nxn--givuotna-8ya.no\ngalsa.no\nxn--gls-elac.no\ngamvik.no\ngangaviika.no\nxn--ggaviika-8ya47h.no\ngaular.no\ngausdal.no\ngiehtavuoatna.no\ngildeskal.no\nxn--gildeskl-g0a.no\ngiske.no\ngjemnes.no\ngjerdrum.no\ngjerstad.no\ngjesdal.no\ngjovik.no\nxn--gjvik-wua.no\ngloppen.no\ngol.no\ngran.no\ngrane.no\ngranvin.no\ngratangen.no\ngrimstad.no\ngrong.no\ngrue.no\ngulen.no\nguovdageaidnu.no\nha.no\nxn--h-2fa.no\nhabmer.no\nxn--hbmer-xqa.no\nhadsel.no\nxn--hgebostad-g3a.no\nhagebostad.no\nhalden.no\nhalsa.no\nhamar.no\nhamaroy.no\nxn--hamary-fya.no\nhammarfeasta.no\nxn--hmmrfeasta-s4ac.no\nhammerfest.no\nhapmir.no\nxn--hpmir-xqa.no\nharam.no\nhareid.no\nharstad.no\nhasvik.no\nhattfjelldal.no\nhaugesund.no\nos.hedmark.no\nvaler.hedmark.no\nxn--vler-qoa.hedmark.no\nhemne.no\nhemnes.no\nhemsedal.no\nhitra.no\nhjartdal.no\nhjelmeland.no\nhobol.no\nxn--hobl-ira.no\nhof.no\nhol.no\nhole.no\nholmestrand.no\nholtalen.no\nxn--holtlen-hxa.no\nos.hordaland.no\nhornindal.no\nhorten.no\nhoyanger.no\nxn--hyanger-q1a.no\nhoylandet.no\nxn--hylandet-54a.no\nhurdal.no\nhurum.no\nhvaler.no\nhyllestad.no\nibestad.no\ninderoy.no\nxn--indery-fya.no\niveland.no\nivgu.no\njevnaker.no\njolster.no\nxn--jlster-bya.no\njondal.no\nkafjord.no\nxn--kfjord-iua.no\nkarasjohka.no\nxn--krjohka-hwab49j.no\nkarasjok.no\nkarlsoy.no\nxn--karlsy-fya.no\nkarmoy.no\nxn--karmy-yua.no\nkautokeino.no\nklabu.no\nxn--klbu-woa.no\nklepp.no\nkongsberg.no\nkongsvinger.no\nkraanghke.no\nxn--kranghke-b0a.no\nkragero.no\nxn--krager-gya.no\nkristiansand.no\nkristiansund.no\nkrodsherad.no\nxn--krdsherad-m8a.no\nxn--kvfjord-nxa.no\nxn--kvnangen-k0a.no\nkvafjord.no\nkvalsund.no\nkvam.no\nkvanangen.no\nkvinesdal.no\nkvinnherad.no\nkviteseid.no\nkvitsoy.no\nxn--kvitsy-fya.no\nlaakesvuemie.no\nxn--lrdal-sra.no\nlahppi.no\nxn--lhppi-xqa.no\nlardal.no\nlarvik.no\nlavagis.no\nlavangen.no\nleangaviika.no\nxn--leagaviika-52b.no\nlebesby.no\nleikanger.no\nleirfjord.no\nleka.no\nleksvik.no\nlenvik.no\nlerdal.no\nlesja.no\nlevanger.no\nlier.no\nlierne.no\nlillehammer.no\nlillesand.no\nlindas.no\nxn--linds-pra.no\nlindesnes.no\nloabat.no\nxn--loabt-0qa.no\nlodingen.no\nxn--ldingen-q1a.no\nlom.no\nloppa.no\nlorenskog.no\nxn--lrenskog-54a.no\nloten.no\nxn--lten-gra.no\nlund.no\nlunner.no\nluroy.no\nxn--lury-ira.no\nluster.no\nlyngdal.no\nlyngen.no\nmalatvuopmi.no\nxn--mlatvuopmi-s4a.no\nmalselv.no\nxn--mlselv-iua.no\nmalvik.no\nmandal.no\nmarker.no\nmarnardal.no\nmasfjorden.no\nmasoy.no\nxn--msy-ula0h.no\nmatta-varjjat.no\nxn--mtta-vrjjat-k7af.no\nmeland.no\nmeldal.no\nmelhus.no\nmeloy.no\nxn--mely-ira.no\nmeraker.no\nxn--merker-kua.no\nmidsund.no\nmidtre-gauldal.no\nmoareke.no\nxn--moreke-jua.no\nmodalen.no\nmodum.no\nmolde.no\nheroy.more-og-romsdal.no\nsande.more-og-romsdal.no\nxn--hery-ira.xn--mre-og-romsdal-qqb.no\nsande.xn--mre-og-romsdal-qqb.no\nmoskenes.no\nmoss.no\nmuosat.no\nxn--muost-0qa.no\nnaamesjevuemie.no\nxn--nmesjevuemie-tcba.no\nxn--nry-yla5g.no\nnamdalseid.no\nnamsos.no\nnamsskogan.no\nnannestad.no\nnaroy.no\nnarviika.no\nnarvik.no\nnaustdal.no\nnavuotna.no\nxn--nvuotna-hwa.no\nnedre-eiker.no\nnesna.no\nnesodden.no\nnesseby.no\nnesset.no\nnissedal.no\nnittedal.no\nnord-aurdal.no\nnord-fron.no\nnord-odal.no\nnorddal.no\nnordkapp.no\nbo.nordland.no\nxn--b-5ga.nordland.no\nheroy.nordland.no\nxn--hery-ira.nordland.no\nnordre-land.no\nnordreisa.no\nnore-og-uvdal.no\nnotodden.no\nnotteroy.no\nxn--nttery-byae.no\nodda.no\noksnes.no\nxn--ksnes-uua.no\nomasvuotna.no\noppdal.no\noppegard.no\nxn--oppegrd-ixa.no\norkdal.no\norland.no\nxn--rland-uua.no\norskog.no\nxn--rskog-uua.no\norsta.no\nxn--rsta-fra.no\nosen.no\nosteroy.no\nxn--ostery-fya.no\nvaler.ostfold.no\nxn--vler-qoa.xn--stfold-9xa.no\nostre-toten.no\nxn--stre-toten-zcb.no\noverhalla.no\novre-eiker.no\nxn--vre-eiker-k8a.no\noyer.no\nxn--yer-zna.no\noygarden.no\nxn--ygarden-p1a.no\noystre-slidre.no\nxn--ystre-slidre-ujb.no\nporsanger.no\nporsangu.no\nxn--porsgu-sta26f.no\nporsgrunn.no\nrade.no\nxn--rde-ula.no\nradoy.no\nxn--rady-ira.no\nxn--rlingen-mxa.no\nrahkkeravju.no\nxn--rhkkervju-01af.no\nraisa.no\nxn--risa-5na.no\nrakkestad.no\nralingen.no\nrana.no\nrandaberg.no\nrauma.no\nre.no\nrendalen.no\nrennebu.no\nrennesoy.no\nxn--rennesy-v1a.no\nrindal.no\nringebu.no\nringerike.no\nringsaker.no\nrisor.no\nxn--risr-ira.no\nrissa.no\nroan.no\nrodoy.no\nxn--rdy-0nab.no\nrollag.no\nromsa.no\nromskog.no\nxn--rmskog-bya.no\nroros.no\nxn--rros-gra.no\nrost.no\nxn--rst-0na.no\nroyken.no\nxn--ryken-vua.no\nroyrvik.no\nxn--ryrvik-bya.no\nruovat.no\nrygge.no\nsalangen.no\nsalat.no\nxn--slat-5na.no\nxn--slt-elab.no\nsaltdal.no\nsamnanger.no\nsandefjord.no\nsandnes.no\nsandoy.no\nxn--sandy-yua.no\nsarpsborg.no\nsauda.no\nsauherad.no\nsel.no\nselbu.no\nselje.no\nseljord.no\nsiellak.no\nsigdal.no\nsiljan.no\nsirdal.no\nskanit.no\nxn--sknit-yqa.no\nskanland.no\nxn--sknland-fxa.no\nskaun.no\nskedsmo.no\nski.no\nskien.no\nskierva.no\nxn--skierv-uta.no\nskiptvet.no\nskjak.no\nxn--skjk-soa.no\nskjervoy.no\nxn--skjervy-v1a.no\nskodje.no\nsmola.no\nxn--smla-hra.no\nsnaase.no\nxn--snase-nra.no\nsnasa.no\nxn--snsa-roa.no\nsnillfjord.no\nsnoasa.no\nsogndal.no\nsogne.no\nxn--sgne-gra.no\nsokndal.no\nsola.no\nsolund.no\nsomna.no\nxn--smna-gra.no\nsondre-land.no\nxn--sndre-land-0cb.no\nsongdalen.no\nsor-aurdal.no\nxn--sr-aurdal-l8a.no\nsor-fron.no\nxn--sr-fron-q1a.no\nsor-odal.no\nxn--sr-odal-q1a.no\nsor-varanger.no\nxn--sr-varanger-ggb.no\nsorfold.no\nxn--srfold-bya.no\nsorreisa.no\nxn--srreisa-q1a.no\nsortland.no\nsorum.no\nxn--srum-gra.no\nspydeberg.no\nstange.no\nstavanger.no\nsteigen.no\nsteinkjer.no\nstjordal.no\nxn--stjrdal-s1a.no\nstokke.no\nstor-elvdal.no\nstord.no\nstordal.no\nstorfjord.no\nstrand.no\nstranda.no\nstryn.no\nsula.no\nsuldal.no\nsund.no\nsunndal.no\nsurnadal.no\nsveio.no\nsvelvik.no\nsykkylven.no\ntana.no\nbo.telemark.no\nxn--b-5ga.telemark.no\ntime.no\ntingvoll.no\ntinn.no\ntjeldsund.no\ntjome.no\nxn--tjme-hra.no\ntokke.no\ntolga.no\ntonsberg.no\nxn--tnsberg-q1a.no\ntorsken.no\nxn--trna-woa.no\ntrana.no\ntranoy.no\nxn--trany-yua.no\ntroandin.no\ntrogstad.no\nxn--trgstad-r1a.no\ntromsa.no\ntromso.no\nxn--troms-zua.no\ntrondheim.no\ntrysil.no\ntvedestrand.no\ntydal.no\ntynset.no\ntysfjord.no\ntysnes.no\nxn--tysvr-vra.no\ntysvar.no\nullensaker.no\nullensvang.no\nulstein.no\nulvik.no\nunjarga.no\nxn--unjrga-rta.no\nutsira.no\nvaapste.no\nvadso.no\nxn--vads-jra.no\nxn--vry-yla5g.no\nvaga.no\nxn--vg-yiab.no\nvagan.no\nxn--vgan-qoa.no\nvagsoy.no\nxn--vgsy-qoa0j.no\nvaksdal.no\nvalle.no\nvang.no\nvanylven.no\nvardo.no\nxn--vard-jra.no\nvarggat.no\nxn--vrggt-xqad.no\nvaroy.no\nvefsn.no\nvega.no\nvegarshei.no\nxn--vegrshei-c0a.no\nvennesla.no\nverdal.no\nverran.no\nvestby.no\nsande.vestfold.no\nvestnes.no\nvestre-slidre.no\nvestre-toten.no\nvestvagoy.no\nxn--vestvgy-ixa6o.no\nvevelstad.no\nvik.no\nvikna.no\nvindafjord.no\nvoagat.no\nvolda.no\nvoss.no\n*.np\nnr\nbiz.nr\ncom.nr\nedu.nr\ngov.nr\ninfo.nr\nnet.nr\norg.nr\nnu\nnz\nac.nz\nco.nz\ncri.nz\ngeek.nz\ngen.nz\ngovt.nz\nhealth.nz\niwi.nz\nkiwi.nz\nmaori.nz\nxn--mori-qsa.nz\nmil.nz\nnet.nz\norg.nz\nparliament.nz\nschool.nz\nom\nco.om\ncom.om\nedu.om\ngov.om\nmed.om\nmuseum.om\nnet.om\norg.om\npro.om\nonion\norg\npa\nabo.pa\nac.pa\ncom.pa\nedu.pa\ngob.pa\ning.pa\nmed.pa\nnet.pa\nnom.pa\norg.pa\nsld.pa\npe\ncom.pe\nedu.pe\ngob.pe\nmil.pe\nnet.pe\nnom.pe\norg.pe\npf\ncom.pf\nedu.pf\norg.pf\n*.pg\nph\ncom.ph\nedu.ph\ngov.ph\ni.ph\nmil.ph\nnet.ph\nngo.ph\norg.ph\npk\nac.pk\nbiz.pk\ncom.pk\nedu.pk\nfam.pk\ngkp.pk\ngob.pk\ngog.pk\ngok.pk\ngop.pk\ngos.pk\ngov.pk\nnet.pk\norg.pk\nweb.pk\npl\ncom.pl\nnet.pl\norg.pl\nagro.pl\naid.pl\natm.pl\nauto.pl\nbiz.pl\nedu.pl\ngmina.pl\ngsm.pl\ninfo.pl\nmail.pl\nmedia.pl\nmiasta.pl\nmil.pl\nnieruchomosci.pl\nnom.pl\npc.pl\npowiat.pl\npriv.pl\nrealestate.pl\nrel.pl\nsex.pl\nshop.pl\nsklep.pl\nsos.pl\nszkola.pl\ntargi.pl\ntm.pl\ntourism.pl\ntravel.pl\nturystyka.pl\ngov.pl\nap.gov.pl\ngriw.gov.pl\nic.gov.pl\nis.gov.pl\nkmpsp.gov.pl\nkonsulat.gov.pl\nkppsp.gov.pl\nkwp.gov.pl\nkwpsp.gov.pl\nmup.gov.pl\nmw.gov.pl\noia.gov.pl\noirm.gov.pl\noke.gov.pl\noow.gov.pl\noschr.gov.pl\noum.gov.pl\npa.gov.pl\npinb.gov.pl\npiw.gov.pl\npo.gov.pl\npr.gov.pl\npsp.gov.pl\npsse.gov.pl\npup.gov.pl\nrzgw.gov.pl\nsa.gov.pl\nsdn.gov.pl\nsko.gov.pl\nso.gov.pl\nsr.gov.pl\nstarostwo.gov.pl\nug.gov.pl\nugim.gov.pl\num.gov.pl\numig.gov.pl\nupow.gov.pl\nuppo.gov.pl\nus.gov.pl\nuw.gov.pl\nuzs.gov.pl\nwif.gov.pl\nwiih.gov.pl\nwinb.gov.pl\nwios.gov.pl\nwitd.gov.pl\nwiw.gov.pl\nwkz.gov.pl\nwsa.gov.pl\nwskr.gov.pl\nwsse.gov.pl\nwuoz.gov.pl\nwzmiuw.gov.pl\nzp.gov.pl\nzpisdn.gov.pl\naugustow.pl\nbabia-gora.pl\nbedzin.pl\nbeskidy.pl\nbialowieza.pl\nbialystok.pl\nbielawa.pl\nbieszczady.pl\nboleslawiec.pl\nbydgoszcz.pl\nbytom.pl\ncieszyn.pl\nczeladz.pl\nczest.pl\ndlugoleka.pl\nelblag.pl\nelk.pl\nglogow.pl\ngniezno.pl\ngorlice.pl\ngrajewo.pl\nilawa.pl\njaworzno.pl\njelenia-gora.pl\njgora.pl\nkalisz.pl\nkarpacz.pl\nkartuzy.pl\nkaszuby.pl\nkatowice.pl\nkazimierz-dolny.pl\nkepno.pl\nketrzyn.pl\nklodzko.pl\nkobierzyce.pl\nkolobrzeg.pl\nkonin.pl\nkonskowola.pl\nkutno.pl\nlapy.pl\nlebork.pl\nlegnica.pl\nlezajsk.pl\nlimanowa.pl\nlomza.pl\nlowicz.pl\nlubin.pl\nlukow.pl\nmalbork.pl\nmalopolska.pl\nmazowsze.pl\nmazury.pl\nmielec.pl\nmielno.pl\nmragowo.pl\nnaklo.pl\nnowaruda.pl\nnysa.pl\nolawa.pl\nolecko.pl\nolkusz.pl\nolsztyn.pl\nopoczno.pl\nopole.pl\nostroda.pl\nostroleka.pl\nostrowiec.pl\nostrowwlkp.pl\npila.pl\npisz.pl\npodhale.pl\npodlasie.pl\npolkowice.pl\npomorskie.pl\npomorze.pl\nprochowice.pl\npruszkow.pl\nprzeworsk.pl\npulawy.pl\nradom.pl\nrawa-maz.pl\nrybnik.pl\nrzeszow.pl\nsanok.pl\nsejny.pl\nskoczow.pl\nslask.pl\nslupsk.pl\nsosnowiec.pl\nstalowa-wola.pl\nstarachowice.pl\nstargard.pl\nsuwalki.pl\nswidnica.pl\nswiebodzin.pl\nswinoujscie.pl\nszczecin.pl\nszczytno.pl\ntarnobrzeg.pl\ntgory.pl\nturek.pl\ntychy.pl\nustka.pl\nwalbrzych.pl\nwarmia.pl\nwarszawa.pl\nwaw.pl\nwegrow.pl\nwielun.pl\nwlocl.pl\nwloclawek.pl\nwodzislaw.pl\nwolomin.pl\nwroclaw.pl\nzachpomor.pl\nzagan.pl\nzarow.pl\nzgora.pl\nzgorzelec.pl\npm\npn\nco.pn\nedu.pn\ngov.pn\nnet.pn\norg.pn\npost\npr\nbiz.pr\ncom.pr\nedu.pr\ngov.pr\ninfo.pr\nisla.pr\nname.pr\nnet.pr\norg.pr\npro.pr\nac.pr\nest.pr\nprof.pr\npro\naaa.pro\naca.pro\nacct.pro\navocat.pro\nbar.pro\ncpa.pro\neng.pro\njur.pro\nlaw.pro\nmed.pro\nrecht.pro\nps\ncom.ps\nedu.ps\ngov.ps\nnet.ps\norg.ps\nplo.ps\nsec.ps\npt\ncom.pt\nedu.pt\ngov.pt\nint.pt\nnet.pt\nnome.pt\norg.pt\npubl.pt\npw\ngov.pw\npy\ncom.py\ncoop.py\nedu.py\ngov.py\nmil.py\nnet.py\norg.py\nqa\ncom.qa\nedu.qa\ngov.qa\nmil.qa\nname.qa\nnet.qa\norg.qa\nsch.qa\nre\nasso.re\ncom.re\nro\narts.ro\ncom.ro\nfirm.ro\ninfo.ro\nnom.ro\nnt.ro\norg.ro\nrec.ro\nstore.ro\ntm.ro\nwww.ro\nrs\nac.rs\nco.rs\nedu.rs\ngov.rs\nin.rs\norg.rs\nru\nrw\nac.rw\nco.rw\ncoop.rw\ngov.rw\nmil.rw\nnet.rw\norg.rw\nsa\ncom.sa\nedu.sa\ngov.sa\nmed.sa\nnet.sa\norg.sa\npub.sa\nsch.sa\nsb\ncom.sb\nedu.sb\ngov.sb\nnet.sb\norg.sb\nsc\ncom.sc\nedu.sc\ngov.sc\nnet.sc\norg.sc\nsd\ncom.sd\nedu.sd\ngov.sd\ninfo.sd\nmed.sd\nnet.sd\norg.sd\ntv.sd\nse\na.se\nac.se\nb.se\nbd.se\nbrand.se\nc.se\nd.se\ne.se\nf.se\nfh.se\nfhsk.se\nfhv.se\ng.se\nh.se\ni.se\nk.se\nkomforb.se\nkommunalforbund.se\nkomvux.se\nl.se\nlanbib.se\nm.se\nn.se\nnaturbruksgymn.se\no.se\norg.se\np.se\nparti.se\npp.se\npress.se\nr.se\ns.se\nt.se\ntm.se\nu.se\nw.se\nx.se\ny.se\nz.se\nsg\ncom.sg\nedu.sg\ngov.sg\nnet.sg\norg.sg\nsh\ncom.sh\ngov.sh\nmil.sh\nnet.sh\norg.sh\nsi\nsj\nsk\norg.sk\nsl\ncom.sl\nedu.sl\ngov.sl\nnet.sl\norg.sl\nsm\nsn\nart.sn\ncom.sn\nedu.sn\ngouv.sn\norg.sn\nuniv.sn\nso\ncom.so\nedu.so\ngov.so\nme.so\nnet.so\norg.so\nsr\nss\nbiz.ss\nco.ss\ncom.ss\nedu.ss\ngov.ss\nme.ss\nnet.ss\norg.ss\nsch.ss\nst\nco.st\ncom.st\nconsulado.st\nedu.st\nembaixada.st\nmil.st\nnet.st\norg.st\nprincipe.st\nsaotome.st\nstore.st\nsu\nsv\ncom.sv\nedu.sv\ngob.sv\norg.sv\nred.sv\nsx\ngov.sx\nsy\ncom.sy\nedu.sy\ngov.sy\nmil.sy\nnet.sy\norg.sy\nsz\nac.sz\nco.sz\norg.sz\ntc\ntd\ntel\ntf\ntg\nth\nac.th\nco.th\ngo.th\nin.th\nmi.th\nnet.th\nor.th\ntj\nbiz.tj\nco.tj\ncom.tj\nedu.tj\ngo.tj\ngov.tj\nint.tj\nmil.tj\nname.tj\nnet.tj\nnic.tj\norg.tj\ntest.tj\nweb.tj\ntk\ntl\ngov.tl\ntm\nco.tm\ncom.tm\nedu.tm\ngov.tm\nmil.tm\nnet.tm\nnom.tm\norg.tm\ntn\ncom.tn\nens.tn\nfin.tn\ngov.tn\nind.tn\ninfo.tn\nintl.tn\nmincom.tn\nnat.tn\nnet.tn\norg.tn\nperso.tn\ntourism.tn\nto\ncom.to\nedu.to\ngov.to\nmil.to\nnet.to\norg.to\ntr\nav.tr\nbbs.tr\nbel.tr\nbiz.tr\ncom.tr\ndr.tr\nedu.tr\ngen.tr\ngov.tr\ninfo.tr\nk12.tr\nkep.tr\nmil.tr\nname.tr\nnet.tr\norg.tr\npol.tr\ntel.tr\ntsk.tr\ntv.tr\nweb.tr\nnc.tr\ngov.nc.tr\ntt\nbiz.tt\nco.tt\ncom.tt\nedu.tt\ngov.tt\ninfo.tt\nmil.tt\nname.tt\nnet.tt\norg.tt\npro.tt\ntv\ntw\nclub.tw\ncom.tw\nebiz.tw\nedu.tw\ngame.tw\ngov.tw\nidv.tw\nmil.tw\nnet.tw\norg.tw\ntz\nac.tz\nco.tz\ngo.tz\nhotel.tz\ninfo.tz\nme.tz\nmil.tz\nmobi.tz\nne.tz\nor.tz\nsc.tz\ntv.tz\nua\ncom.ua\nedu.ua\ngov.ua\nin.ua\nnet.ua\norg.ua\ncherkassy.ua\ncherkasy.ua\nchernigov.ua\nchernihiv.ua\nchernivtsi.ua\nchernovtsy.ua\nck.ua\ncn.ua\ncr.ua\ncrimea.ua\ncv.ua\ndn.ua\ndnepropetrovsk.ua\ndnipropetrovsk.ua\ndonetsk.ua\ndp.ua\nif.ua\nivano-frankivsk.ua\nkh.ua\nkharkiv.ua\nkharkov.ua\nkherson.ua\nkhmelnitskiy.ua\nkhmelnytskyi.ua\nkiev.ua\nkirovograd.ua\nkm.ua\nkr.ua\nkropyvnytskyi.ua\nkrym.ua\nks.ua\nkv.ua\nkyiv.ua\nlg.ua\nlt.ua\nlugansk.ua\nluhansk.ua\nlutsk.ua\nlv.ua\nlviv.ua\nmk.ua\nmykolaiv.ua\nnikolaev.ua\nod.ua\nodesa.ua\nodessa.ua\npl.ua\npoltava.ua\nrivne.ua\nrovno.ua\nrv.ua\nsb.ua\nsebastopol.ua\nsevastopol.ua\nsm.ua\nsumy.ua\nte.ua\nternopil.ua\nuz.ua\nuzhgorod.ua\nuzhhorod.ua\nvinnica.ua\nvinnytsia.ua\nvn.ua\nvolyn.ua\nyalta.ua\nzakarpattia.ua\nzaporizhzhe.ua\nzaporizhzhia.ua\nzhitomir.ua\nzhytomyr.ua\nzp.ua\nzt.ua\nug\nac.ug\nco.ug\ncom.ug\nedu.ug\ngo.ug\ngov.ug\nmil.ug\nne.ug\nor.ug\norg.ug\nsc.ug\nus.ug\nuk\nac.uk\nco.uk\ngov.uk\nltd.uk\nme.uk\nnet.uk\nnhs.uk\norg.uk\nplc.uk\npolice.uk\n*.sch.uk\nus\ndni.us\nisa.us\nnsn.us\nak.us\nal.us\nar.us\nas.us\naz.us\nca.us\nco.us\nct.us\ndc.us\nde.us\nfl.us\nga.us\ngu.us\nhi.us\nia.us\nid.us\nil.us\nin.us\nks.us\nky.us\nla.us\nma.us\nmd.us\nme.us\nmi.us\nmn.us\nmo.us\nms.us\nmt.us\nnc.us\nnd.us\nne.us\nnh.us\nnj.us\nnm.us\nnv.us\nny.us\noh.us\nok.us\nor.us\npa.us\npr.us\nri.us\nsc.us\nsd.us\ntn.us\ntx.us\nut.us\nva.us\nvi.us\nvt.us\nwa.us\nwi.us\nwv.us\nwy.us\nk12.ak.us\nk12.al.us\nk12.ar.us\nk12.as.us\nk12.az.us\nk12.ca.us\nk12.co.us\nk12.ct.us\nk12.dc.us\nk12.fl.us\nk12.ga.us\nk12.gu.us\nk12.ia.us\nk12.id.us\nk12.il.us\nk12.in.us\nk12.ks.us\nk12.ky.us\nk12.la.us\nk12.ma.us\nk12.md.us\nk12.me.us\nk12.mi.us\nk12.mn.us\nk12.mo.us\nk12.ms.us\nk12.mt.us\nk12.nc.us\nk12.ne.us\nk12.nh.us\nk12.nj.us\nk12.nm.us\nk12.nv.us\nk12.ny.us\nk12.oh.us\nk12.ok.us\nk12.or.us\nk12.pa.us\nk12.pr.us\nk12.sc.us\nk12.tn.us\nk12.tx.us\nk12.ut.us\nk12.va.us\nk12.vi.us\nk12.vt.us\nk12.wa.us\nk12.wi.us\ncc.ak.us\nlib.ak.us\ncc.al.us\nlib.al.us\ncc.ar.us\nlib.ar.us\ncc.as.us\nlib.as.us\ncc.az.us\nlib.az.us\ncc.ca.us\nlib.ca.us\ncc.co.us\nlib.co.us\ncc.ct.us\nlib.ct.us\ncc.dc.us\nlib.dc.us\ncc.de.us\ncc.fl.us\nlib.fl.us\ncc.ga.us\nlib.ga.us\ncc.gu.us\nlib.gu.us\ncc.hi.us\nlib.hi.us\ncc.ia.us\nlib.ia.us\ncc.id.us\nlib.id.us\ncc.il.us\nlib.il.us\ncc.in.us\nlib.in.us\ncc.ks.us\nlib.ks.us\ncc.ky.us\nlib.ky.us\ncc.la.us\nlib.la.us\ncc.ma.us\nlib.ma.us\ncc.md.us\nlib.md.us\ncc.me.us\nlib.me.us\ncc.mi.us\nlib.mi.us\ncc.mn.us\nlib.mn.us\ncc.mo.us\nlib.mo.us\ncc.ms.us\ncc.mt.us\nlib.mt.us\ncc.nc.us\nlib.nc.us\ncc.ne.us\nlib.ne.us\ncc.nh.us\nlib.nh.us\ncc.nj.us\nlib.nj.us\ncc.nm.us\nlib.nm.us\ncc.nv.us\nlib.nv.us\ncc.ny.us\nlib.ny.us\ncc.oh.us\nlib.oh.us\ncc.ok.us\nlib.ok.us\ncc.or.us\nlib.or.us\ncc.pa.us\nlib.pa.us\ncc.pr.us\nlib.pr.us\ncc.ri.us\nlib.ri.us\ncc.sc.us\nlib.sc.us\ncc.sd.us\nlib.sd.us\ncc.tn.us\nlib.tn.us\ncc.tx.us\nlib.tx.us\ncc.ut.us\nlib.ut.us\ncc.va.us\nlib.va.us\ncc.vi.us\nlib.vi.us\ncc.vt.us\nlib.vt.us\ncc.wa.us\nlib.wa.us\ncc.wi.us\nlib.wi.us\ncc.wv.us\ncc.wy.us\nk12.wy.us\nlib.wy.us\nchtr.k12.ma.us\nparoch.k12.ma.us\npvt.k12.ma.us\nann-arbor.mi.us\ncog.mi.us\ndst.mi.us\neaton.mi.us\ngen.mi.us\nmus.mi.us\ntec.mi.us\nwashtenaw.mi.us\nuy\ncom.uy\nedu.uy\ngub.uy\nmil.uy\nnet.uy\norg.uy\nuz\nco.uz\ncom.uz\nnet.uz\norg.uz\nva\nvc\ncom.vc\nedu.vc\ngov.vc\nmil.vc\nnet.vc\norg.vc\nve\narts.ve\nbib.ve\nco.ve\ncom.ve\ne12.ve\nedu.ve\nemprende.ve\nfirm.ve\ngob.ve\ngov.ve\nia.ve\ninfo.ve\nint.ve\nmil.ve\nnet.ve\nnom.ve\norg.ve\nrar.ve\nrec.ve\nstore.ve\ntec.ve\nweb.ve\nvg\nedu.vg\nvi\nco.vi\ncom.vi\nk12.vi\nnet.vi\norg.vi\nvn\nac.vn\nai.vn\nbiz.vn\ncom.vn\nedu.vn\ngov.vn\nhealth.vn\nid.vn\ninfo.vn\nint.vn\nio.vn\nname.vn\nnet.vn\norg.vn\npro.vn\nangiang.vn\nbacgiang.vn\nbackan.vn\nbaclieu.vn\nbacninh.vn\nbaria-vungtau.vn\nbentre.vn\nbinhdinh.vn\nbinhduong.vn\nbinhphuoc.vn\nbinhthuan.vn\ncamau.vn\ncantho.vn\ncaobang.vn\ndaklak.vn\ndaknong.vn\ndanang.vn\ndienbien.vn\ndongnai.vn\ndongthap.vn\ngialai.vn\nhagiang.vn\nhaiduong.vn\nhaiphong.vn\nhanam.vn\nhanoi.vn\nhatinh.vn\nhaugiang.vn\nhoabinh.vn\nhue.vn\nhungyen.vn\nkhanhhoa.vn\nkiengiang.vn\nkontum.vn\nlaichau.vn\nlamdong.vn\nlangson.vn\nlaocai.vn\nlongan.vn\nnamdinh.vn\nnghean.vn\nninhbinh.vn\nninhthuan.vn\nphutho.vn\nphuyen.vn\nquangbinh.vn\nquangnam.vn\nquangngai.vn\nquangninh.vn\nquangtri.vn\nsoctrang.vn\nsonla.vn\ntayninh.vn\nthaibinh.vn\nthainguyen.vn\nthanhhoa.vn\nthanhphohochiminh.vn\nthuathienhue.vn\ntiengiang.vn\ntravinh.vn\ntuyenquang.vn\nvinhlong.vn\nvinhphuc.vn\nyenbai.vn\nvu\ncom.vu\nedu.vu\nnet.vu\norg.vu\nwf\nws\ncom.ws\nedu.ws\ngov.ws\nnet.ws\norg.ws\nyt\nxn--mgbaam7a8h\nxn--y9a3aq\nxn--54b7fta0cc\nxn--90ae\nxn--mgbcpq6gpa1a\nxn--90ais\nxn--fiqs8s\nxn--fiqz9s\nxn--lgbbat1ad8j\nxn--wgbh1c\nxn--e1a4c\nxn--qxa6a\nxn--mgbah1a3hjkrd\nxn--node\nxn--qxam\nxn--j6w193g\nxn--gmqw5a.xn--j6w193g\nxn--55qx5d.xn--j6w193g\nxn--mxtq1m.xn--j6w193g\nxn--wcvs22d.xn--j6w193g\nxn--uc0atv.xn--j6w193g\nxn--od0alg.xn--j6w193g\nxn--2scrj9c\nxn--3hcrj9c\nxn--45br5cyl\nxn--h2breg3eve\nxn--h2brj9c8c\nxn--mgbgu82a\nxn--rvc1e0am3e\nxn--h2brj9c\nxn--mgbbh1a\nxn--mgbbh1a71e\nxn--fpcrj9c3d\nxn--gecrj9c\nxn--s9brj9c\nxn--45brj9c\nxn--xkc2dl3a5ee0h\nxn--mgba3a4f16a\nxn--mgba3a4fra\nxn--mgbtx2b\nxn--mgbayh7gpa\nxn--3e0b707e\nxn--80ao21a\nxn--q7ce6a\nxn--fzc2c9e2c\nxn--xkc2al3hye2a\nxn--mgbc0a9azcg\nxn--d1alf\nxn--l1acc\nxn--mix891f\nxn--mix082f\nxn--mgbx4cd0ab\nxn--mgb9awbf\nxn--mgbai9azgqp6j\nxn--mgbai9a5eva00b\nxn--ygbi2ammx\nxn--90a3ac\nxn--80au.xn--90a3ac\nxn--90azh.xn--90a3ac\nxn--d1at.xn--90a3ac\nxn--c1avg.xn--90a3ac\nxn--o1ac.xn--90a3ac\nxn--o1ach.xn--90a3ac\nxn--p1ai\nxn--wgbl6a\nxn--mgberp4a5d4ar\nxn--mgberp4a5d4a87g\nxn--mgbqly7c0a67fbc\nxn--mgbqly7cvafr\nxn--mgbpl2fh\nxn--yfro4i67o\nxn--clchc0ea0b2g2a9gcd\nxn--ogbpf8fl\nxn--mgbtf8fl\nxn--o3cw4h\nxn--o3cyx2a.xn--o3cw4h\nxn--12co0c3b4eva.xn--o3cw4h\nxn--m3ch0j3a.xn--o3cw4h\nxn--h3cuzk1di.xn--o3cw4h\nxn--12c1fe0br.xn--o3cw4h\nxn--12cfi8ixb8l.xn--o3cw4h\nxn--pgbs0dh\nxn--kpry57d\nxn--kprw13d\nxn--nnx388a\nxn--j1amh\nxn--mgb2ddes\nxxx\nye\ncom.ye\nedu.ye\ngov.ye\nmil.ye\nnet.ye\norg.ye\nac.za\nagric.za\nalt.za\nco.za\nedu.za\ngov.za\ngrondar.za\nlaw.za\nmil.za\nnet.za\nngo.za\nnic.za\nnis.za\nnom.za\norg.za\nschool.za\ntm.za\nweb.za\nzm\nac.zm\nbiz.zm\nco.zm\ncom.zm\nedu.zm\ngov.zm\ninfo.zm\nmil.zm\nnet.zm\norg.zm\nsch.zm\nzw\nac.zw\nco.zw\ngov.zw\nmil.zw\norg.zw\naaa\naarp\nabb\nabbott\nabbvie\nabc\nable\nabogado\nabudhabi\nacademy\naccenture\naccountant\naccountants\naco\nactor\nads\nadult\naeg\naetna\nafl\nafrica\nagakhan\nagency\naig\nairbus\nairforce\nairtel\nakdn\nalibaba\nalipay\nallfinanz\nallstate\nally\nalsace\nalstom\namazon\namericanexpress\namericanfamily\namex\namfam\namica\namsterdam\nanalytics\nandroid\nanquan\nanz\naol\napartments\napp\napple\naquarelle\narab\naramco\narchi\narmy\nart\narte\nasda\nassociates\nathleta\nattorney\nauction\naudi\naudible\naudio\nauspost\nauthor\nauto\nautos\naws\naxa\nazure\nbaby\nbaidu\nbanamex\nband\nbank\nbar\nbarcelona\nbarclaycard\nbarclays\nbarefoot\nbargains\nbaseball\nbasketball\nbauhaus\nbayern\nbbc\nbbt\nbbva\nbcg\nbcn\nbeats\nbeauty\nbeer\nberlin\nbest\nbestbuy\nbet\nbharti\nbible\nbid\nbike\nbing\nbingo\nbio\nblack\nblackfriday\nblockbuster\nblog\nbloomberg\nblue\nbms\nbmw\nbnpparibas\nboats\nboehringer\nbofa\nbom\nbond\nboo\nbook\nbooking\nbosch\nbostik\nboston\nbot\nboutique\nbox\nbradesco\nbridgestone\nbroadway\nbroker\nbrother\nbrussels\nbuild\nbuilders\nbusiness\nbuy\nbuzz\nbzh\ncab\ncafe\ncal\ncall\ncalvinklein\ncam\ncamera\ncamp\ncanon\ncapetown\ncapital\ncapitalone\ncar\ncaravan\ncards\ncare\ncareer\ncareers\ncars\ncasa\ncase\ncash\ncasino\ncatering\ncatholic\ncba\ncbn\ncbre\ncenter\nceo\ncern\ncfa\ncfd\nchanel\nchannel\ncharity\nchase\nchat\ncheap\nchintai\nchristmas\nchrome\nchurch\ncipriani\ncircle\ncisco\ncitadel\nciti\ncitic\ncity\nclaims\ncleaning\nclick\nclinic\nclinique\nclothing\ncloud\nclub\nclubmed\ncoach\ncodes\ncoffee\ncollege\ncologne\ncommbank\ncommunity\ncompany\ncompare\ncomputer\ncomsec\ncondos\nconstruction\nconsulting\ncontact\ncontractors\ncooking\ncool\ncorsica\ncountry\ncoupon\ncoupons\ncourses\ncpa\ncredit\ncreditcard\ncreditunion\ncricket\ncrown\ncrs\ncruise\ncruises\ncuisinella\ncymru\ncyou\ndad\ndance\ndata\ndate\ndating\ndatsun\nday\ndclk\ndds\ndeal\ndealer\ndeals\ndegree\ndelivery\ndell\ndeloitte\ndelta\ndemocrat\ndental\ndentist\ndesi\ndesign\ndev\ndhl\ndiamonds\ndiet\ndigital\ndirect\ndirectory\ndiscount\ndiscover\ndish\ndiy\ndnp\ndocs\ndoctor\ndog\ndomains\ndot\ndownload\ndrive\ndtv\ndubai\ndupont\ndurban\ndvag\ndvr\nearth\neat\neco\nedeka\neducation\nemail\nemerck\nenergy\nengineer\nengineering\nenterprises\nepson\nequipment\nericsson\nerni\nesq\nestate\neurovision\neus\nevents\nexchange\nexpert\nexposed\nexpress\nextraspace\nfage\nfail\nfairwinds\nfaith\nfamily\nfan\nfans\nfarm\nfarmers\nfashion\nfast\nfedex\nfeedback\nferrari\nferrero\nfidelity\nfido\nfilm\nfinal\nfinance\nfinancial\nfire\nfirestone\nfirmdale\nfish\nfishing\nfit\nfitness\nflickr\nflights\nflir\nflorist\nflowers\nfly\nfoo\nfood\nfootball\nford\nforex\nforsale\nforum\nfoundation\nfox\nfree\nfresenius\nfrl\nfrogans\nfrontier\nftr\nfujitsu\nfun\nfund\nfurniture\nfutbol\nfyi\ngal\ngallery\ngallo\ngallup\ngame\ngames\ngap\ngarden\ngay\ngbiz\ngdn\ngea\ngent\ngenting\ngeorge\nggee\ngift\ngifts\ngives\ngiving\nglass\ngle\nglobal\nglobo\ngmail\ngmbh\ngmo\ngmx\ngodaddy\ngold\ngoldpoint\ngolf\ngoodyear\ngoog\ngoogle\ngop\ngot\ngrainger\ngraphics\ngratis\ngreen\ngripe\ngrocery\ngroup\ngucci\nguge\nguide\nguitars\nguru\nhair\nhamburg\nhangout\nhaus\nhbo\nhdfc\nhdfcbank\nhealth\nhealthcare\nhelp\nhelsinki\nhere\nhermes\nhiphop\nhisamitsu\nhitachi\nhiv\nhkt\nhockey\nholdings\nholiday\nhomedepot\nhomegoods\nhomes\nhomesense\nhonda\nhorse\nhospital\nhost\nhosting\nhot\nhotel\nhotels\nhotmail\nhouse\nhow\nhsbc\nhughes\nhyatt\nhyundai\nibm\nicbc\nice\nicu\nieee\nifm\nikano\nimamat\nimdb\nimmo\nimmobilien\ninc\nindustries\ninfiniti\ning\nink\ninstitute\ninsurance\ninsure\ninternational\nintuit\ninvestments\nipiranga\nirish\nismaili\nist\nistanbul\nitau\nitv\njaguar\njava\njcb\njeep\njetzt\njewelry\njio\njll\njmp\njnj\njoburg\njot\njoy\njpmorgan\njprs\njuegos\njuniper\nkaufen\nkddi\nkerryhotels\nkerryproperties\nkfh\nkia\nkids\nkim\nkindle\nkitchen\nkiwi\nkoeln\nkomatsu\nkosher\nkpmg\nkpn\nkrd\nkred\nkuokgroup\nkyoto\nlacaixa\nlamborghini\nlamer\nland\nlandrover\nlanxess\nlasalle\nlat\nlatino\nlatrobe\nlaw\nlawyer\nlds\nlease\nleclerc\nlefrak\nlegal\nlego\nlexus\nlgbt\nlidl\nlife\nlifeinsurance\nlifestyle\nlighting\nlike\nlilly\nlimited\nlimo\nlincoln\nlink\nlive\nliving\nllc\nllp\nloan\nloans\nlocker\nlocus\nlol\nlondon\nlotte\nlotto\nlove\nlpl\nlplfinancial\nltd\nltda\nlundbeck\nluxe\nluxury\nmadrid\nmaif\nmaison\nmakeup\nman\nmanagement\nmango\nmap\nmarket\nmarketing\nmarkets\nmarriott\nmarshalls\nmattel\nmba\nmckinsey\nmed\nmedia\nmeet\nmelbourne\nmeme\nmemorial\nmen\nmenu\nmerck\nmerckmsd\nmiami\nmicrosoft\nmini\nmint\nmit\nmitsubishi\nmlb\nmls\nmma\nmobile\nmoda\nmoe\nmoi\nmom\nmonash\nmoney\nmonster\nmormon\nmortgage\nmoscow\nmoto\nmotorcycles\nmov\nmovie\nmsd\nmtn\nmtr\nmusic\nnab\nnagoya\nnavy\nnba\nnec\nnetbank\nnetflix\nnetwork\nneustar\nnew\nnews\nnext\nnextdirect\nnexus\nnfl\nngo\nnhk\nnico\nnike\nnikon\nninja\nnissan\nnissay\nnokia\nnorton\nnow\nnowruz\nnowtv\nnra\nnrw\nntt\nnyc\nobi\nobserver\noffice\nokinawa\nolayan\nolayangroup\nollo\nomega\none\nong\nonl\nonline\nooo\nopen\noracle\norange\norganic\norigins\nosaka\notsuka\nott\novh\npage\npanasonic\nparis\npars\npartners\nparts\nparty\npay\npccw\npet\npfizer\npharmacy\nphd\nphilips\nphone\nphoto\nphotography\nphotos\nphysio\npics\npictet\npictures\npid\npin\nping\npink\npioneer\npizza\nplace\nplay\nplaystation\nplumbing\nplus\npnc\npohl\npoker\npolitie\nporn\npraxi\npress\nprime\nprod\nproductions\nprof\nprogressive\npromo\nproperties\nproperty\nprotection\npru\nprudential\npub\npwc\nqpon\nquebec\nquest\nracing\nradio\nread\nrealestate\nrealtor\nrealty\nrecipes\nred\nredumbrella\nrehab\nreise\nreisen\nreit\nreliance\nren\nrent\nrentals\nrepair\nreport\nrepublican\nrest\nrestaurant\nreview\nreviews\nrexroth\nrich\nrichardli\nricoh\nril\nrio\nrip\nrocks\nrodeo\nrogers\nroom\nrsvp\nrugby\nruhr\nrun\nrwe\nryukyu\nsaarland\nsafe\nsafety\nsakura\nsale\nsalon\nsamsclub\nsamsung\nsandvik\nsandvikcoromant\nsanofi\nsap\nsarl\nsas\nsave\nsaxo\nsbi\nsbs\nscb\nschaeffler\nschmidt\nscholarships\nschool\nschule\nschwarz\nscience\nscot\nsearch\nseat\nsecure\nsecurity\nseek\nselect\nsener\nservices\nseven\nsew\nsex\nsexy\nsfr\nshangrila\nsharp\nshell\nshia\nshiksha\nshoes\nshop\nshopping\nshouji\nshow\nsilk\nsina\nsingles\nsite\nski\nskin\nsky\nskype\nsling\nsmart\nsmile\nsncf\nsoccer\nsocial\nsoftbank\nsoftware\nsohu\nsolar\nsolutions\nsong\nsony\nsoy\nspa\nspace\nsport\nspot\nsrl\nstada\nstaples\nstar\nstatebank\nstatefarm\nstc\nstcgroup\nstockholm\nstorage\nstore\nstream\nstudio\nstudy\nstyle\nsucks\nsupplies\nsupply\nsupport\nsurf\nsurgery\nsuzuki\nswatch\nswiss\nsydney\nsystems\ntab\ntaipei\ntalk\ntaobao\ntarget\ntatamotors\ntatar\ntattoo\ntax\ntaxi\ntci\ntdk\nteam\ntech\ntechnology\ntemasek\ntennis\nteva\nthd\ntheater\ntheatre\ntiaa\ntickets\ntienda\ntips\ntires\ntirol\ntjmaxx\ntjx\ntkmaxx\ntmall\ntoday\ntokyo\ntools\ntop\ntoray\ntoshiba\ntotal\ntours\ntown\ntoyota\ntoys\ntrade\ntrading\ntraining\ntravel\ntravelers\ntravelersinsurance\ntrust\ntrv\ntube\ntui\ntunes\ntushu\ntvs\nubank\nubs\nunicom\nuniversity\nuno\nuol\nups\nvacations\nvana\nvanguard\nvegas\nventures\nverisign\nversicherung\nvet\nviajes\nvideo\nvig\nviking\nvillas\nvin\nvip\nvirgin\nvisa\nvision\nviva\nvivo\nvlaanderen\nvodka\nvolvo\nvote\nvoting\nvoto\nvoyage\nwales\nwalmart\nwalter\nwang\nwanggou\nwatch\nwatches\nweather\nweatherchannel\nweb\nwebcam\nweber\nwebsite\nwed\nwedding\nweibo\nweir\nwhoswho\nwien\nwiki\nwilliamhill\nwin\nwindows\nwine\nwinners\nwme\nwoodside\nwork\nworks\nworld\nwow\nwtc\nwtf\nxbox\nxerox\nxihuan\nxin\nxn--11b4c3d\nxn--1ck2e1b\nxn--1qqw23a\nxn--30rr7y\nxn--3bst00m\nxn--3ds443g\nxn--3pxu8k\nxn--42c2d9a\nxn--45q11c\nxn--4gbrim\nxn--55qw42g\nxn--55qx5d\nxn--5su34j936bgsg\nxn--5tzm5g\nxn--6frz82g\nxn--6qq986b3xl\nxn--80adxhks\nxn--80aqecdr1a\nxn--80asehdb\nxn--80aswg\nxn--8y0a063a\nxn--9dbq2a\nxn--9et52u\nxn--9krt00a\nxn--b4w605ferd\nxn--bck1b9a5dre4c\nxn--c1avg\nxn--c2br7g\nxn--cck2b3b\nxn--cckwcxetd\nxn--cg4bki\nxn--czr694b\nxn--czrs0t\nxn--czru2d\nxn--d1acj3b\nxn--eckvdtc9d\nxn--efvy88h\nxn--fct429k\nxn--fhbei\nxn--fiq228c5hs\nxn--fiq64b\nxn--fjq720a\nxn--flw351e\nxn--fzys8d69uvgm\nxn--g2xx48c\nxn--gckr3f0f\nxn--gk3at1e\nxn--hxt814e\nxn--i1b6b1a6a2e\nxn--imr513n\nxn--io0a7i\nxn--j1aef\nxn--jlq480n2rg\nxn--jvr189m\nxn--kcrx77d1x4a\nxn--kput3i\nxn--mgba3a3ejt\nxn--mgba7c0bbn0a\nxn--mgbab2bd\nxn--mgbca7dzdo\nxn--mgbi4ecexp\nxn--mgbt3dhd\nxn--mk1bu44c\nxn--mxtq1m\nxn--ngbc5azd\nxn--ngbe9e0a\nxn--ngbrx\nxn--nqv7f\nxn--nqv7fs00ema\nxn--nyqy26a\nxn--otu796d\nxn--p1acf\nxn--pssy2u\nxn--q9jyb4c\nxn--qcka1pmc\nxn--rhqv96g\nxn--rovu88b\nxn--ses554g\nxn--t60b56a\nxn--tckwe\nxn--tiq49xqyj\nxn--unup4y\nxn--vermgensberater-ctb\nxn--vermgensberatung-pwb\nxn--vhquv\nxn--vuq861b\nxn--w4r85el8fhu5dnra\nxn--w4rs40l\nxn--xhq521b\nxn--zfr164b\nxyz\nyachts\nyahoo\nyamaxun\nyandex\nyodobashi\nyoga\nyokohama\nyou\nyoutube\nyun\nzappos\nzara\nzero\nzip\nzone\nzuerich\nco.krd\nedu.krd\nart.pl\ngliwice.pl\nkrakow.pl\npoznan.pl\nwroc.pl\nzakopane.pl\ncc.ua\ninf.ua\nltd.ua\n611.to\na2hosted.com\ncpserver.com\nactivetrail.biz\nmyaddr.dev\nmyaddr.io\ndyn.addr.tools\nmyaddr.tools\nadobeaemcloud.com\n*.dev.adobeaemcloud.com\naem.live\nhlx.live\nadobeaemcloud.net\naem.network\naem.page\nhlx.page\naem.reviews\nadobeio-static.net\nadobeioruntime.net\nafrica.com\n*.auiusercontent.com\nbeep.pl\naiven.app\n*.aivencloud.com\nakadns.net\nakamai.net\nakamai-staging.net\nakamaiedge.net\nakamaiedge-staging.net\nakamaihd.net\nakamaihd-staging.net\nakamaiorigin.net\nakamaiorigin-staging.net\nakamaized.net\nakamaized-staging.net\nedgekey.net\nedgekey-staging.net\nedgesuite.net\nedgesuite-staging.net\nbarsy.ca\n*.compute.estate\n*.alces.network\nalibabacloudcs.com\nms.fun\nms.show\nkasserver.com\naltervista.org\nalwaysdata.net\nmyamaze.net\nexecute-api.cn-north-1.amazonaws.com.cn\nexecute-api.cn-northwest-1.amazonaws.com.cn\nexecute-api.af-south-1.amazonaws.com\nexecute-api.ap-east-1.amazonaws.com\nexecute-api.ap-northeast-1.amazonaws.com\nexecute-api.ap-northeast-2.amazonaws.com\nexecute-api.ap-northeast-3.amazonaws.com\nexecute-api.ap-south-1.amazonaws.com\nexecute-api.ap-south-2.amazonaws.com\nexecute-api.ap-southeast-1.amazonaws.com\nexecute-api.ap-southeast-2.amazonaws.com\nexecute-api.ap-southeast-3.amazonaws.com\nexecute-api.ap-southeast-4.amazonaws.com\nexecute-api.ap-southeast-5.amazonaws.com\nexecute-api.ca-central-1.amazonaws.com\nexecute-api.ca-west-1.amazonaws.com\nexecute-api.eu-central-1.amazonaws.com\nexecute-api.eu-central-2.amazonaws.com\nexecute-api.eu-north-1.amazonaws.com\nexecute-api.eu-south-1.amazonaws.com\nexecute-api.eu-south-2.amazonaws.com\nexecute-api.eu-west-1.amazonaws.com\nexecute-api.eu-west-2.amazonaws.com\nexecute-api.eu-west-3.amazonaws.com\nexecute-api.il-central-1.amazonaws.com\nexecute-api.me-central-1.amazonaws.com\nexecute-api.me-south-1.amazonaws.com\nexecute-api.sa-east-1.amazonaws.com\nexecute-api.us-east-1.amazonaws.com\nexecute-api.us-east-2.amazonaws.com\nexecute-api.us-gov-east-1.amazonaws.com\nexecute-api.us-gov-west-1.amazonaws.com\nexecute-api.us-west-1.amazonaws.com\nexecute-api.us-west-2.amazonaws.com\ncloudfront.net\nauth.af-south-1.amazoncognito.com\nauth.ap-east-1.amazoncognito.com\nauth.ap-northeast-1.amazoncognito.com\nauth.ap-northeast-2.amazoncognito.com\nauth.ap-northeast-3.amazoncognito.com\nauth.ap-south-1.amazoncognito.com\nauth.ap-south-2.amazoncognito.com\nauth.ap-southeast-1.amazoncognito.com\nauth.ap-southeast-2.amazoncognito.com\nauth.ap-southeast-3.amazoncognito.com\nauth.ap-southeast-4.amazoncognito.com\nauth.ap-southeast-5.amazoncognito.com\nauth.ap-southeast-7.amazoncognito.com\nauth.ca-central-1.amazoncognito.com\nauth.ca-west-1.amazoncognito.com\nauth.eu-central-1.amazoncognito.com\nauth.eu-central-2.amazoncognito.com\nauth.eu-north-1.amazoncognito.com\nauth.eu-south-1.amazoncognito.com\nauth.eu-south-2.amazoncognito.com\nauth.eu-west-1.amazoncognito.com\nauth.eu-west-2.amazoncognito.com\nauth.eu-west-3.amazoncognito.com\nauth.il-central-1.amazoncognito.com\nauth.me-central-1.amazoncognito.com\nauth.me-south-1.amazoncognito.com\nauth.mx-central-1.amazoncognito.com\nauth.sa-east-1.amazoncognito.com\nauth.us-east-1.amazoncognito.com\nauth-fips.us-east-1.amazoncognito.com\nauth.us-east-2.amazoncognito.com\nauth-fips.us-east-2.amazoncognito.com\nauth-fips.us-gov-east-1.amazoncognito.com\nauth-fips.us-gov-west-1.amazoncognito.com\nauth.us-west-1.amazoncognito.com\nauth-fips.us-west-1.amazoncognito.com\nauth.us-west-2.amazoncognito.com\nauth-fips.us-west-2.amazoncognito.com\nauth.cognito-idp.eusc-de-east-1.on.amazonwebservices.eu\n*.compute.amazonaws.com.cn\n*.compute.amazonaws.com\n*.compute-1.amazonaws.com\nus-east-1.amazonaws.com\nemrappui-prod.cn-north-1.amazonaws.com.cn\nemrnotebooks-prod.cn-north-1.amazonaws.com.cn\nemrstudio-prod.cn-north-1.amazonaws.com.cn\nemrappui-prod.cn-northwest-1.amazonaws.com.cn\nemrnotebooks-prod.cn-northwest-1.amazonaws.com.cn\nemrstudio-prod.cn-northwest-1.amazonaws.com.cn\nemrappui-prod.af-south-1.amazonaws.com\nemrnotebooks-prod.af-south-1.amazonaws.com\nemrstudio-prod.af-south-1.amazonaws.com\nemrappui-prod.ap-east-1.amazonaws.com\nemrnotebooks-prod.ap-east-1.amazonaws.com\nemrstudio-prod.ap-east-1.amazonaws.com\nemrappui-prod.ap-northeast-1.amazonaws.com\nemrnotebooks-prod.ap-northeast-1.amazonaws.com\nemrstudio-prod.ap-northeast-1.amazonaws.com\nemrappui-prod.ap-northeast-2.amazonaws.com\nemrnotebooks-prod.ap-northeast-2.amazonaws.com\nemrstudio-prod.ap-northeast-2.amazonaws.com\nemrappui-prod.ap-northeast-3.amazonaws.com\nemrnotebooks-prod.ap-northeast-3.amazonaws.com\nemrstudio-prod.ap-northeast-3.amazonaws.com\nemrappui-prod.ap-south-1.amazonaws.com\nemrnotebooks-prod.ap-south-1.amazonaws.com\nemrstudio-prod.ap-south-1.amazonaws.com\nemrappui-prod.ap-south-2.amazonaws.com\nemrnotebooks-prod.ap-south-2.amazonaws.com\nemrstudio-prod.ap-south-2.amazonaws.com\nemrappui-prod.ap-southeast-1.amazonaws.com\nemrnotebooks-prod.ap-southeast-1.amazonaws.com\nemrstudio-prod.ap-southeast-1.amazonaws.com\nemrappui-prod.ap-southeast-2.amazonaws.com\nemrnotebooks-prod.ap-southeast-2.amazonaws.com\nemrstudio-prod.ap-southeast-2.amazonaws.com\nemrappui-prod.ap-southeast-3.amazonaws.com\nemrnotebooks-prod.ap-southeast-3.amazonaws.com\nemrstudio-prod.ap-southeast-3.amazonaws.com\nemrappui-prod.ap-southeast-4.amazonaws.com\nemrnotebooks-prod.ap-southeast-4.amazonaws.com\nemrstudio-prod.ap-southeast-4.amazonaws.com\nemrappui-prod.ca-central-1.amazonaws.com\nemrnotebooks-prod.ca-central-1.amazonaws.com\nemrstudio-prod.ca-central-1.amazonaws.com\nemrappui-prod.ca-west-1.amazonaws.com\nemrnotebooks-prod.ca-west-1.amazonaws.com\nemrstudio-prod.ca-west-1.amazonaws.com\nemrappui-prod.eu-central-1.amazonaws.com\nemrnotebooks-prod.eu-central-1.amazonaws.com\nemrstudio-prod.eu-central-1.amazonaws.com\nemrappui-prod.eu-central-2.amazonaws.com\nemrnotebooks-prod.eu-central-2.amazonaws.com\nemrstudio-prod.eu-central-2.amazonaws.com\nemrappui-prod.eu-north-1.amazonaws.com\nemrnotebooks-prod.eu-north-1.amazonaws.com\nemrstudio-prod.eu-north-1.amazonaws.com\nemrappui-prod.eu-south-1.amazonaws.com\nemrnotebooks-prod.eu-south-1.amazonaws.com\nemrstudio-prod.eu-south-1.amazonaws.com\nemrappui-prod.eu-south-2.amazonaws.com\nemrnotebooks-prod.eu-south-2.amazonaws.com\nemrstudio-prod.eu-south-2.amazonaws.com\nemrappui-prod.eu-west-1.amazonaws.com\nemrnotebooks-prod.eu-west-1.amazonaws.com\nemrstudio-prod.eu-west-1.amazonaws.com\nemrappui-prod.eu-west-2.amazonaws.com\nemrnotebooks-prod.eu-west-2.amazonaws.com\nemrstudio-prod.eu-west-2.amazonaws.com\nemrappui-prod.eu-west-3.amazonaws.com\nemrnotebooks-prod.eu-west-3.amazonaws.com\nemrstudio-prod.eu-west-3.amazonaws.com\nemrappui-prod.il-central-1.amazonaws.com\nemrnotebooks-prod.il-central-1.amazonaws.com\nemrstudio-prod.il-central-1.amazonaws.com\nemrappui-prod.me-central-1.amazonaws.com\nemrnotebooks-prod.me-central-1.amazonaws.com\nemrstudio-prod.me-central-1.amazonaws.com\nemrappui-prod.me-south-1.amazonaws.com\nemrnotebooks-prod.me-south-1.amazonaws.com\nemrstudio-prod.me-south-1.amazonaws.com\nemrappui-prod.sa-east-1.amazonaws.com\nemrnotebooks-prod.sa-east-1.amazonaws.com\nemrstudio-prod.sa-east-1.amazonaws.com\nemrappui-prod.us-east-1.amazonaws.com\nemrnotebooks-prod.us-east-1.amazonaws.com\nemrstudio-prod.us-east-1.amazonaws.com\nemrappui-prod.us-east-2.amazonaws.com\nemrnotebooks-prod.us-east-2.amazonaws.com\nemrstudio-prod.us-east-2.amazonaws.com\nemrappui-prod.us-gov-east-1.amazonaws.com\nemrnotebooks-prod.us-gov-east-1.amazonaws.com\nemrstudio-prod.us-gov-east-1.amazonaws.com\nemrappui-prod.us-gov-west-1.amazonaws.com\nemrnotebooks-prod.us-gov-west-1.amazonaws.com\nemrstudio-prod.us-gov-west-1.amazonaws.com\nemrappui-prod.us-west-1.amazonaws.com\nemrnotebooks-prod.us-west-1.amazonaws.com\nemrstudio-prod.us-west-1.amazonaws.com\nemrappui-prod.us-west-2.amazonaws.com\nemrnotebooks-prod.us-west-2.amazonaws.com\nemrstudio-prod.us-west-2.amazonaws.com\n*.airflow.af-south-1.on.aws\n*.airflow.ap-east-1.on.aws\n*.airflow.ap-northeast-1.on.aws\n*.airflow.ap-northeast-2.on.aws\n*.airflow.ap-northeast-3.on.aws\n*.airflow.ap-south-1.on.aws\n*.airflow.ap-south-2.on.aws\n*.airflow.ap-southeast-1.on.aws\n*.airflow.ap-southeast-2.on.aws\n*.airflow.ap-southeast-3.on.aws\n*.airflow.ap-southeast-4.on.aws\n*.airflow.ap-southeast-5.on.aws\n*.airflow.ca-central-1.on.aws\n*.airflow.ca-west-1.on.aws\n*.airflow.eu-central-1.on.aws\n*.airflow.eu-central-2.on.aws\n*.airflow.eu-north-1.on.aws\n*.airflow.eu-south-1.on.aws\n*.airflow.eu-south-2.on.aws\n*.airflow.eu-west-1.on.aws\n*.airflow.eu-west-2.on.aws\n*.airflow.eu-west-3.on.aws\n*.airflow.il-central-1.on.aws\n*.airflow.me-central-1.on.aws\n*.airflow.me-south-1.on.aws\n*.airflow.sa-east-1.on.aws\n*.airflow.us-east-1.on.aws\n*.airflow.us-east-2.on.aws\n*.airflow.us-west-1.on.aws\n*.airflow.us-west-2.on.aws\n*.cn-north-1.airflow.amazonaws.com.cn\n*.cn-northwest-1.airflow.amazonaws.com.cn\n*.airflow.cn-north-1.on.amazonwebservices.com.cn\n*.airflow.cn-northwest-1.on.amazonwebservices.com.cn\n*.af-south-1.airflow.amazonaws.com\n*.ap-east-1.airflow.amazonaws.com\n*.ap-northeast-1.airflow.amazonaws.com\n*.ap-northeast-2.airflow.amazonaws.com\n*.ap-northeast-3.airflow.amazonaws.com\n*.ap-south-1.airflow.amazonaws.com\n*.ap-south-2.airflow.amazonaws.com\n*.ap-southeast-1.airflow.amazonaws.com\n*.ap-southeast-2.airflow.amazonaws.com\n*.ap-southeast-3.airflow.amazonaws.com\n*.ap-southeast-4.airflow.amazonaws.com\n*.ap-southeast-5.airflow.amazonaws.com\n*.ap-southeast-7.airflow.amazonaws.com\n*.ca-central-1.airflow.amazonaws.com\n*.ca-west-1.airflow.amazonaws.com\n*.eu-central-1.airflow.amazonaws.com\n*.eu-central-2.airflow.amazonaws.com\n*.eu-north-1.airflow.amazonaws.com\n*.eu-south-1.airflow.amazonaws.com\n*.eu-south-2.airflow.amazonaws.com\n*.eu-west-1.airflow.amazonaws.com\n*.eu-west-2.airflow.amazonaws.com\n*.eu-west-3.airflow.amazonaws.com\n*.il-central-1.airflow.amazonaws.com\n*.me-central-1.airflow.amazonaws.com\n*.me-south-1.airflow.amazonaws.com\n*.sa-east-1.airflow.amazonaws.com\n*.us-east-1.airflow.amazonaws.com\n*.us-east-2.airflow.amazonaws.com\n*.us-west-1.airflow.amazonaws.com\n*.us-west-2.airflow.amazonaws.com\n*.rds.cn-north-1.amazonaws.com.cn\n*.rds.cn-northwest-1.amazonaws.com.cn\n*.af-south-1.rds.amazonaws.com\n*.ap-east-1.rds.amazonaws.com\n*.ap-east-2.rds.amazonaws.com\n*.ap-northeast-1.rds.amazonaws.com\n*.ap-northeast-2.rds.amazonaws.com\n*.ap-northeast-3.rds.amazonaws.com\n*.ap-south-1.rds.amazonaws.com\n*.ap-south-2.rds.amazonaws.com\n*.ap-southeast-1.rds.amazonaws.com\n*.ap-southeast-2.rds.amazonaws.com\n*.ap-southeast-3.rds.amazonaws.com\n*.ap-southeast-4.rds.amazonaws.com\n*.ap-southeast-5.rds.amazonaws.com\n*.ap-southeast-6.rds.amazonaws.com\n*.ap-southeast-7.rds.amazonaws.com\n*.ca-central-1.rds.amazonaws.com\n*.ca-west-1.rds.amazonaws.com\n*.eu-central-1.rds.amazonaws.com\n*.eu-central-2.rds.amazonaws.com\n*.eu-west-1.rds.amazonaws.com\n*.eu-west-2.rds.amazonaws.com\n*.eu-west-3.rds.amazonaws.com\n*.il-central-1.rds.amazonaws.com\n*.me-central-1.rds.amazonaws.com\n*.me-south-1.rds.amazonaws.com\n*.mx-central-1.rds.amazonaws.com\n*.sa-east-1.rds.amazonaws.com\n*.us-east-1.rds.amazonaws.com\n*.us-east-2.rds.amazonaws.com\n*.us-gov-east-1.rds.amazonaws.com\n*.us-gov-west-1.rds.amazonaws.com\n*.us-northeast-1.rds.amazonaws.com\n*.us-west-1.rds.amazonaws.com\n*.us-west-2.rds.amazonaws.com\ns3.dualstack.cn-north-1.amazonaws.com.cn\ns3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn\ns3-website.dualstack.cn-north-1.amazonaws.com.cn\ns3.cn-north-1.amazonaws.com.cn\ns3-accesspoint.cn-north-1.amazonaws.com.cn\ns3-deprecated.cn-north-1.amazonaws.com.cn\ns3-object-lambda.cn-north-1.amazonaws.com.cn\ns3-website.cn-north-1.amazonaws.com.cn\ns3.dualstack.cn-northwest-1.amazonaws.com.cn\ns3-accesspoint.dualstack.cn-northwest-1.amazonaws.com.cn\ns3.cn-northwest-1.amazonaws.com.cn\ns3-accesspoint.cn-northwest-1.amazonaws.com.cn\ns3-object-lambda.cn-northwest-1.amazonaws.com.cn\ns3-website.cn-northwest-1.amazonaws.com.cn\ns3.dualstack.af-south-1.amazonaws.com\ns3-accesspoint.dualstack.af-south-1.amazonaws.com\ns3-website.dualstack.af-south-1.amazonaws.com\ns3.af-south-1.amazonaws.com\ns3-accesspoint.af-south-1.amazonaws.com\ns3-object-lambda.af-south-1.amazonaws.com\ns3-website.af-south-1.amazonaws.com\ns3.dualstack.ap-east-1.amazonaws.com\ns3-accesspoint.dualstack.ap-east-1.amazonaws.com\ns3.ap-east-1.amazonaws.com\ns3-accesspoint.ap-east-1.amazonaws.com\ns3-object-lambda.ap-east-1.amazonaws.com\ns3-website.ap-east-1.amazonaws.com\ns3.dualstack.ap-northeast-1.amazonaws.com\ns3-accesspoint.dualstack.ap-northeast-1.amazonaws.com\ns3-website.dualstack.ap-northeast-1.amazonaws.com\ns3.ap-northeast-1.amazonaws.com\ns3-accesspoint.ap-northeast-1.amazonaws.com\ns3-object-lambda.ap-northeast-1.amazonaws.com\ns3-website.ap-northeast-1.amazonaws.com\ns3.dualstack.ap-northeast-2.amazonaws.com\ns3-accesspoint.dualstack.ap-northeast-2.amazonaws.com\ns3-website.dualstack.ap-northeast-2.amazonaws.com\ns3.ap-northeast-2.amazonaws.com\ns3-accesspoint.ap-northeast-2.amazonaws.com\ns3-object-lambda.ap-northeast-2.amazonaws.com\ns3-website.ap-northeast-2.amazonaws.com\ns3.dualstack.ap-northeast-3.amazonaws.com\ns3-accesspoint.dualstack.ap-northeast-3.amazonaws.com\ns3-website.dualstack.ap-northeast-3.amazonaws.com\ns3.ap-northeast-3.amazonaws.com\ns3-accesspoint.ap-northeast-3.amazonaws.com\ns3-object-lambda.ap-northeast-3.amazonaws.com\ns3-website.ap-northeast-3.amazonaws.com\ns3.dualstack.ap-south-1.amazonaws.com\ns3-accesspoint.dualstack.ap-south-1.amazonaws.com\ns3-website.dualstack.ap-south-1.amazonaws.com\ns3.ap-south-1.amazonaws.com\ns3-accesspoint.ap-south-1.amazonaws.com\ns3-object-lambda.ap-south-1.amazonaws.com\ns3-website.ap-south-1.amazonaws.com\ns3.dualstack.ap-south-2.amazonaws.com\ns3-accesspoint.dualstack.ap-south-2.amazonaws.com\ns3-website.dualstack.ap-south-2.amazonaws.com\ns3.ap-south-2.amazonaws.com\ns3-accesspoint.ap-south-2.amazonaws.com\ns3-object-lambda.ap-south-2.amazonaws.com\ns3-website.ap-south-2.amazonaws.com\ns3.dualstack.ap-southeast-1.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-1.amazonaws.com\ns3-website.dualstack.ap-southeast-1.amazonaws.com\ns3.ap-southeast-1.amazonaws.com\ns3-accesspoint.ap-southeast-1.amazonaws.com\ns3-object-lambda.ap-southeast-1.amazonaws.com\ns3-website.ap-southeast-1.amazonaws.com\ns3.dualstack.ap-southeast-2.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-2.amazonaws.com\ns3-website.dualstack.ap-southeast-2.amazonaws.com\ns3.ap-southeast-2.amazonaws.com\ns3-accesspoint.ap-southeast-2.amazonaws.com\ns3-object-lambda.ap-southeast-2.amazonaws.com\ns3-website.ap-southeast-2.amazonaws.com\ns3.dualstack.ap-southeast-3.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-3.amazonaws.com\ns3-website.dualstack.ap-southeast-3.amazonaws.com\ns3.ap-southeast-3.amazonaws.com\ns3-accesspoint.ap-southeast-3.amazonaws.com\ns3-object-lambda.ap-southeast-3.amazonaws.com\ns3-website.ap-southeast-3.amazonaws.com\ns3.dualstack.ap-southeast-4.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-4.amazonaws.com\ns3-website.dualstack.ap-southeast-4.amazonaws.com\ns3.ap-southeast-4.amazonaws.com\ns3-accesspoint.ap-southeast-4.amazonaws.com\ns3-object-lambda.ap-southeast-4.amazonaws.com\ns3-website.ap-southeast-4.amazonaws.com\ns3.dualstack.ap-southeast-5.amazonaws.com\ns3-accesspoint.dualstack.ap-southeast-5.amazonaws.com\ns3-website.dualstack.ap-southeast-5.amazonaws.com\ns3.ap-southeast-5.amazonaws.com\ns3-accesspoint.ap-southeast-5.amazonaws.com\ns3-deprecated.ap-southeast-5.amazonaws.com\ns3-object-lambda.ap-southeast-5.amazonaws.com\ns3-website.ap-southeast-5.amazonaws.com\ns3.dualstack.ca-central-1.amazonaws.com\ns3-accesspoint.dualstack.ca-central-1.amazonaws.com\ns3-accesspoint-fips.dualstack.ca-central-1.amazonaws.com\ns3-fips.dualstack.ca-central-1.amazonaws.com\ns3-website.dualstack.ca-central-1.amazonaws.com\ns3.ca-central-1.amazonaws.com\ns3-accesspoint.ca-central-1.amazonaws.com\ns3-accesspoint-fips.ca-central-1.amazonaws.com\ns3-fips.ca-central-1.amazonaws.com\ns3-object-lambda.ca-central-1.amazonaws.com\ns3-website.ca-central-1.amazonaws.com\ns3.dualstack.ca-west-1.amazonaws.com\ns3-accesspoint.dualstack.ca-west-1.amazonaws.com\ns3-accesspoint-fips.dualstack.ca-west-1.amazonaws.com\ns3-fips.dualstack.ca-west-1.amazonaws.com\ns3-website.dualstack.ca-west-1.amazonaws.com\ns3.ca-west-1.amazonaws.com\ns3-accesspoint.ca-west-1.amazonaws.com\ns3-accesspoint-fips.ca-west-1.amazonaws.com\ns3-fips.ca-west-1.amazonaws.com\ns3-object-lambda.ca-west-1.amazonaws.com\ns3-website.ca-west-1.amazonaws.com\ns3.dualstack.eu-central-1.amazonaws.com\ns3-accesspoint.dualstack.eu-central-1.amazonaws.com\ns3-website.dualstack.eu-central-1.amazonaws.com\ns3.eu-central-1.amazonaws.com\ns3-accesspoint.eu-central-1.amazonaws.com\ns3-object-lambda.eu-central-1.amazonaws.com\ns3-website.eu-central-1.amazonaws.com\ns3.dualstack.eu-central-2.amazonaws.com\ns3-accesspoint.dualstack.eu-central-2.amazonaws.com\ns3-website.dualstack.eu-central-2.amazonaws.com\ns3.eu-central-2.amazonaws.com\ns3-accesspoint.eu-central-2.amazonaws.com\ns3-object-lambda.eu-central-2.amazonaws.com\ns3-website.eu-central-2.amazonaws.com\ns3.dualstack.eu-north-1.amazonaws.com\ns3-accesspoint.dualstack.eu-north-1.amazonaws.com\ns3.eu-north-1.amazonaws.com\ns3-accesspoint.eu-north-1.amazonaws.com\ns3-object-lambda.eu-north-1.amazonaws.com\ns3-website.eu-north-1.amazonaws.com\ns3.dualstack.eu-south-1.amazonaws.com\ns3-accesspoint.dualstack.eu-south-1.amazonaws.com\ns3-website.dualstack.eu-south-1.amazonaws.com\ns3.eu-south-1.amazonaws.com\ns3-accesspoint.eu-south-1.amazonaws.com\ns3-object-lambda.eu-south-1.amazonaws.com\ns3-website.eu-south-1.amazonaws.com\ns3.dualstack.eu-south-2.amazonaws.com\ns3-accesspoint.dualstack.eu-south-2.amazonaws.com\ns3-website.dualstack.eu-south-2.amazonaws.com\ns3.eu-south-2.amazonaws.com\ns3-accesspoint.eu-south-2.amazonaws.com\ns3-object-lambda.eu-south-2.amazonaws.com\ns3-website.eu-south-2.amazonaws.com\ns3.dualstack.eu-west-1.amazonaws.com\ns3-accesspoint.dualstack.eu-west-1.amazonaws.com\ns3-website.dualstack.eu-west-1.amazonaws.com\ns3.eu-west-1.amazonaws.com\ns3-accesspoint.eu-west-1.amazonaws.com\ns3-deprecated.eu-west-1.amazonaws.com\ns3-object-lambda.eu-west-1.amazonaws.com\ns3-website.eu-west-1.amazonaws.com\ns3.dualstack.eu-west-2.amazonaws.com\ns3-accesspoint.dualstack.eu-west-2.amazonaws.com\ns3.eu-west-2.amazonaws.com\ns3-accesspoint.eu-west-2.amazonaws.com\ns3-object-lambda.eu-west-2.amazonaws.com\ns3-website.eu-west-2.amazonaws.com\ns3.dualstack.eu-west-3.amazonaws.com\ns3-accesspoint.dualstack.eu-west-3.amazonaws.com\ns3-website.dualstack.eu-west-3.amazonaws.com\ns3.eu-west-3.amazonaws.com\ns3-accesspoint.eu-west-3.amazonaws.com\ns3-object-lambda.eu-west-3.amazonaws.com\ns3-website.eu-west-3.amazonaws.com\ns3.dualstack.il-central-1.amazonaws.com\ns3-accesspoint.dualstack.il-central-1.amazonaws.com\ns3-website.dualstack.il-central-1.amazonaws.com\ns3.il-central-1.amazonaws.com\ns3-accesspoint.il-central-1.amazonaws.com\ns3-object-lambda.il-central-1.amazonaws.com\ns3-website.il-central-1.amazonaws.com\ns3.dualstack.me-central-1.amazonaws.com\ns3-accesspoint.dualstack.me-central-1.amazonaws.com\ns3-website.dualstack.me-central-1.amazonaws.com\ns3.me-central-1.amazonaws.com\ns3-accesspoint.me-central-1.amazonaws.com\ns3-object-lambda.me-central-1.amazonaws.com\ns3-website.me-central-1.amazonaws.com\ns3.dualstack.me-south-1.amazonaws.com\ns3-accesspoint.dualstack.me-south-1.amazonaws.com\ns3.me-south-1.amazonaws.com\ns3-accesspoint.me-south-1.amazonaws.com\ns3-object-lambda.me-south-1.amazonaws.com\ns3-website.me-south-1.amazonaws.com\ns3.amazonaws.com\ns3-1.amazonaws.com\ns3-ap-east-1.amazonaws.com\ns3-ap-northeast-1.amazonaws.com\ns3-ap-northeast-2.amazonaws.com\ns3-ap-northeast-3.amazonaws.com\ns3-ap-south-1.amazonaws.com\ns3-ap-southeast-1.amazonaws.com\ns3-ap-southeast-2.amazonaws.com\ns3-ca-central-1.amazonaws.com\ns3-eu-central-1.amazonaws.com\ns3-eu-north-1.amazonaws.com\ns3-eu-west-1.amazonaws.com\ns3-eu-west-2.amazonaws.com\ns3-eu-west-3.amazonaws.com\ns3-external-1.amazonaws.com\ns3-fips-us-gov-east-1.amazonaws.com\ns3-fips-us-gov-west-1.amazonaws.com\nmrap.accesspoint.s3-global.amazonaws.com\ns3-me-south-1.amazonaws.com\ns3-sa-east-1.amazonaws.com\ns3-us-east-2.amazonaws.com\ns3-us-gov-east-1.amazonaws.com\ns3-us-gov-west-1.amazonaws.com\ns3-us-west-1.amazonaws.com\ns3-us-west-2.amazonaws.com\ns3-website-ap-northeast-1.amazonaws.com\ns3-website-ap-southeast-1.amazonaws.com\ns3-website-ap-southeast-2.amazonaws.com\ns3-website-eu-west-1.amazonaws.com\ns3-website-sa-east-1.amazonaws.com\ns3-website-us-east-1.amazonaws.com\ns3-website-us-gov-west-1.amazonaws.com\ns3-website-us-west-1.amazonaws.com\ns3-website-us-west-2.amazonaws.com\ns3.dualstack.sa-east-1.amazonaws.com\ns3-accesspoint.dualstack.sa-east-1.amazonaws.com\ns3-website.dualstack.sa-east-1.amazonaws.com\ns3.sa-east-1.amazonaws.com\ns3-accesspoint.sa-east-1.amazonaws.com\ns3-object-lambda.sa-east-1.amazonaws.com\ns3-website.sa-east-1.amazonaws.com\ns3.dualstack.us-east-1.amazonaws.com\ns3-accesspoint.dualstack.us-east-1.amazonaws.com\ns3-accesspoint-fips.dualstack.us-east-1.amazonaws.com\ns3-fips.dualstack.us-east-1.amazonaws.com\ns3-website.dualstack.us-east-1.amazonaws.com\ns3.us-east-1.amazonaws.com\ns3-accesspoint.us-east-1.amazonaws.com\ns3-accesspoint-fips.us-east-1.amazonaws.com\ns3-deprecated.us-east-1.amazonaws.com\ns3-fips.us-east-1.amazonaws.com\ns3-object-lambda.us-east-1.amazonaws.com\ns3-website.us-east-1.amazonaws.com\ns3.dualstack.us-east-2.amazonaws.com\ns3-accesspoint.dualstack.us-east-2.amazonaws.com\ns3-accesspoint-fips.dualstack.us-east-2.amazonaws.com\ns3-fips.dualstack.us-east-2.amazonaws.com\ns3-website.dualstack.us-east-2.amazonaws.com\ns3.us-east-2.amazonaws.com\ns3-accesspoint.us-east-2.amazonaws.com\ns3-accesspoint-fips.us-east-2.amazonaws.com\ns3-deprecated.us-east-2.amazonaws.com\ns3-fips.us-east-2.amazonaws.com\ns3-object-lambda.us-east-2.amazonaws.com\ns3-website.us-east-2.amazonaws.com\ns3.dualstack.us-gov-east-1.amazonaws.com\ns3-accesspoint.dualstack.us-gov-east-1.amazonaws.com\ns3-accesspoint-fips.dualstack.us-gov-east-1.amazonaws.com\ns3-fips.dualstack.us-gov-east-1.amazonaws.com\ns3-website.dualstack.us-gov-east-1.amazonaws.com\ns3.us-gov-east-1.amazonaws.com\ns3-accesspoint.us-gov-east-1.amazonaws.com\ns3-accesspoint-fips.us-gov-east-1.amazonaws.com\ns3-fips.us-gov-east-1.amazonaws.com\ns3-object-lambda.us-gov-east-1.amazonaws.com\ns3-website.us-gov-east-1.amazonaws.com\ns3.dualstack.us-gov-west-1.amazonaws.com\ns3-accesspoint.dualstack.us-gov-west-1.amazonaws.com\ns3-accesspoint-fips.dualstack.us-gov-west-1.amazonaws.com\ns3-fips.dualstack.us-gov-west-1.amazonaws.com\ns3-website.dualstack.us-gov-west-1.amazonaws.com\ns3.us-gov-west-1.amazonaws.com\ns3-accesspoint.us-gov-west-1.amazonaws.com\ns3-accesspoint-fips.us-gov-west-1.amazonaws.com\ns3-fips.us-gov-west-1.amazonaws.com\ns3-object-lambda.us-gov-west-1.amazonaws.com\ns3-website.us-gov-west-1.amazonaws.com\ns3.dualstack.us-west-1.amazonaws.com\ns3-accesspoint.dualstack.us-west-1.amazonaws.com\ns3-accesspoint-fips.dualstack.us-west-1.amazonaws.com\ns3-fips.dualstack.us-west-1.amazonaws.com\ns3-website.dualstack.us-west-1.amazonaws.com\ns3.us-west-1.amazonaws.com\ns3-accesspoint.us-west-1.amazonaws.com\ns3-accesspoint-fips.us-west-1.amazonaws.com\ns3-fips.us-west-1.amazonaws.com\ns3-object-lambda.us-west-1.amazonaws.com\ns3-website.us-west-1.amazonaws.com\ns3.dualstack.us-west-2.amazonaws.com\ns3-accesspoint.dualstack.us-west-2.amazonaws.com\ns3-accesspoint-fips.dualstack.us-west-2.amazonaws.com\ns3-fips.dualstack.us-west-2.amazonaws.com\ns3-website.dualstack.us-west-2.amazonaws.com\ns3.us-west-2.amazonaws.com\ns3-accesspoint.us-west-2.amazonaws.com\ns3-accesspoint-fips.us-west-2.amazonaws.com\ns3-deprecated.us-west-2.amazonaws.com\ns3-fips.us-west-2.amazonaws.com\ns3-object-lambda.us-west-2.amazonaws.com\ns3-website.us-west-2.amazonaws.com\nlabeling.ap-northeast-1.sagemaker.aws\nlabeling.ap-northeast-2.sagemaker.aws\nlabeling.ap-south-1.sagemaker.aws\nlabeling.ap-southeast-1.sagemaker.aws\nlabeling.ap-southeast-2.sagemaker.aws\nlabeling.ca-central-1.sagemaker.aws\nlabeling.eu-central-1.sagemaker.aws\nlabeling.eu-west-1.sagemaker.aws\nlabeling.eu-west-2.sagemaker.aws\nlabeling.us-east-1.sagemaker.aws\nlabeling.us-east-2.sagemaker.aws\nlabeling.us-west-2.sagemaker.aws\nnotebook.af-south-1.sagemaker.aws\nnotebook.ap-east-1.sagemaker.aws\nnotebook.ap-northeast-1.sagemaker.aws\nnotebook.ap-northeast-2.sagemaker.aws\nnotebook.ap-northeast-3.sagemaker.aws\nnotebook.ap-south-1.sagemaker.aws\nnotebook.ap-south-2.sagemaker.aws\nnotebook.ap-southeast-1.sagemaker.aws\nnotebook.ap-southeast-2.sagemaker.aws\nnotebook.ap-southeast-3.sagemaker.aws\nnotebook.ap-southeast-4.sagemaker.aws\nnotebook.ca-central-1.sagemaker.aws\nnotebook-fips.ca-central-1.sagemaker.aws\nnotebook.ca-west-1.sagemaker.aws\nnotebook-fips.ca-west-1.sagemaker.aws\nnotebook.eu-central-1.sagemaker.aws\nnotebook.eu-central-2.sagemaker.aws\nnotebook.eu-north-1.sagemaker.aws\nnotebook.eu-south-1.sagemaker.aws\nnotebook.eu-south-2.sagemaker.aws\nnotebook.eu-west-1.sagemaker.aws\nnotebook.eu-west-2.sagemaker.aws\nnotebook.eu-west-3.sagemaker.aws\nnotebook.il-central-1.sagemaker.aws\nnotebook.me-central-1.sagemaker.aws\nnotebook.me-south-1.sagemaker.aws\nnotebook.sa-east-1.sagemaker.aws\nnotebook.us-east-1.sagemaker.aws\nnotebook-fips.us-east-1.sagemaker.aws\nnotebook.us-east-2.sagemaker.aws\nnotebook-fips.us-east-2.sagemaker.aws\nnotebook.us-gov-east-1.sagemaker.aws\nnotebook-fips.us-gov-east-1.sagemaker.aws\nnotebook.us-gov-west-1.sagemaker.aws\nnotebook-fips.us-gov-west-1.sagemaker.aws\nnotebook.us-west-1.sagemaker.aws\nnotebook-fips.us-west-1.sagemaker.aws\nnotebook.us-west-2.sagemaker.aws\nnotebook-fips.us-west-2.sagemaker.aws\nnotebook.cn-north-1.sagemaker.com.cn\nnotebook.cn-northwest-1.sagemaker.com.cn\nstudio.af-south-1.sagemaker.aws\nstudio.ap-east-1.sagemaker.aws\nstudio.ap-northeast-1.sagemaker.aws\nstudio.ap-northeast-2.sagemaker.aws\nstudio.ap-northeast-3.sagemaker.aws\nstudio.ap-south-1.sagemaker.aws\nstudio.ap-southeast-1.sagemaker.aws\nstudio.ap-southeast-2.sagemaker.aws\nstudio.ap-southeast-3.sagemaker.aws\nstudio.ca-central-1.sagemaker.aws\nstudio.eu-central-1.sagemaker.aws\nstudio.eu-central-2.sagemaker.aws\nstudio.eu-north-1.sagemaker.aws\nstudio.eu-south-1.sagemaker.aws\nstudio.eu-south-2.sagemaker.aws\nstudio.eu-west-1.sagemaker.aws\nstudio.eu-west-2.sagemaker.aws\nstudio.eu-west-3.sagemaker.aws\nstudio.il-central-1.sagemaker.aws\nstudio.me-central-1.sagemaker.aws\nstudio.me-south-1.sagemaker.aws\nstudio.sa-east-1.sagemaker.aws\nstudio.us-east-1.sagemaker.aws\nstudio.us-east-2.sagemaker.aws\nstudio.us-gov-east-1.sagemaker.aws\nstudio-fips.us-gov-east-1.sagemaker.aws\nstudio.us-gov-west-1.sagemaker.aws\nstudio-fips.us-gov-west-1.sagemaker.aws\nstudio.us-west-1.sagemaker.aws\nstudio.us-west-2.sagemaker.aws\nstudio.cn-north-1.sagemaker.com.cn\nstudio.cn-northwest-1.sagemaker.com.cn\n*.experiments.sagemaker.aws\nanalytics-gateway.ap-northeast-1.amazonaws.com\nanalytics-gateway.ap-northeast-2.amazonaws.com\nanalytics-gateway.ap-south-1.amazonaws.com\nanalytics-gateway.ap-southeast-1.amazonaws.com\nanalytics-gateway.ap-southeast-2.amazonaws.com\nanalytics-gateway.eu-central-1.amazonaws.com\nanalytics-gateway.eu-west-1.amazonaws.com\nanalytics-gateway.us-east-1.amazonaws.com\nanalytics-gateway.us-east-2.amazonaws.com\nanalytics-gateway.us-west-2.amazonaws.com\namplifyapp.com\n*.awsapprunner.com\nwebview-assets.aws-cloud9.af-south-1.amazonaws.com\nvfs.cloud9.af-south-1.amazonaws.com\nwebview-assets.cloud9.af-south-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-east-1.amazonaws.com\nvfs.cloud9.ap-east-1.amazonaws.com\nwebview-assets.cloud9.ap-east-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-northeast-1.amazonaws.com\nvfs.cloud9.ap-northeast-1.amazonaws.com\nwebview-assets.cloud9.ap-northeast-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-northeast-2.amazonaws.com\nvfs.cloud9.ap-northeast-2.amazonaws.com\nwebview-assets.cloud9.ap-northeast-2.amazonaws.com\nwebview-assets.aws-cloud9.ap-northeast-3.amazonaws.com\nvfs.cloud9.ap-northeast-3.amazonaws.com\nwebview-assets.cloud9.ap-northeast-3.amazonaws.com\nwebview-assets.aws-cloud9.ap-south-1.amazonaws.com\nvfs.cloud9.ap-south-1.amazonaws.com\nwebview-assets.cloud9.ap-south-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-southeast-1.amazonaws.com\nvfs.cloud9.ap-southeast-1.amazonaws.com\nwebview-assets.cloud9.ap-southeast-1.amazonaws.com\nwebview-assets.aws-cloud9.ap-southeast-2.amazonaws.com\nvfs.cloud9.ap-southeast-2.amazonaws.com\nwebview-assets.cloud9.ap-southeast-2.amazonaws.com\nwebview-assets.aws-cloud9.ca-central-1.amazonaws.com\nvfs.cloud9.ca-central-1.amazonaws.com\nwebview-assets.cloud9.ca-central-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-central-1.amazonaws.com\nvfs.cloud9.eu-central-1.amazonaws.com\nwebview-assets.cloud9.eu-central-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-north-1.amazonaws.com\nvfs.cloud9.eu-north-1.amazonaws.com\nwebview-assets.cloud9.eu-north-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-south-1.amazonaws.com\nvfs.cloud9.eu-south-1.amazonaws.com\nwebview-assets.cloud9.eu-south-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-west-1.amazonaws.com\nvfs.cloud9.eu-west-1.amazonaws.com\nwebview-assets.cloud9.eu-west-1.amazonaws.com\nwebview-assets.aws-cloud9.eu-west-2.amazonaws.com\nvfs.cloud9.eu-west-2.amazonaws.com\nwebview-assets.cloud9.eu-west-2.amazonaws.com\nwebview-assets.aws-cloud9.eu-west-3.amazonaws.com\nvfs.cloud9.eu-west-3.amazonaws.com\nwebview-assets.cloud9.eu-west-3.amazonaws.com\nwebview-assets.aws-cloud9.il-central-1.amazonaws.com\nvfs.cloud9.il-central-1.amazonaws.com\nwebview-assets.aws-cloud9.me-south-1.amazonaws.com\nvfs.cloud9.me-south-1.amazonaws.com\nwebview-assets.cloud9.me-south-1.amazonaws.com\nwebview-assets.aws-cloud9.sa-east-1.amazonaws.com\nvfs.cloud9.sa-east-1.amazonaws.com\nwebview-assets.cloud9.sa-east-1.amazonaws.com\nwebview-assets.aws-cloud9.us-east-1.amazonaws.com\nvfs.cloud9.us-east-1.amazonaws.com\nwebview-assets.cloud9.us-east-1.amazonaws.com\nwebview-assets.aws-cloud9.us-east-2.amazonaws.com\nvfs.cloud9.us-east-2.amazonaws.com\nwebview-assets.cloud9.us-east-2.amazonaws.com\nwebview-assets.aws-cloud9.us-west-1.amazonaws.com\nvfs.cloud9.us-west-1.amazonaws.com\nwebview-assets.cloud9.us-west-1.amazonaws.com\nwebview-assets.aws-cloud9.us-west-2.amazonaws.com\nvfs.cloud9.us-west-2.amazonaws.com\nwebview-assets.cloud9.us-west-2.amazonaws.com\nawsapps.com\ncn-north-1.eb.amazonaws.com.cn\ncn-northwest-1.eb.amazonaws.com.cn\nelasticbeanstalk.com\naf-south-1.elasticbeanstalk.com\nap-east-1.elasticbeanstalk.com\nap-northeast-1.elasticbeanstalk.com\nap-northeast-2.elasticbeanstalk.com\nap-northeast-3.elasticbeanstalk.com\nap-south-1.elasticbeanstalk.com\nap-southeast-1.elasticbeanstalk.com\nap-southeast-2.elasticbeanstalk.com\nap-southeast-3.elasticbeanstalk.com\nap-southeast-5.elasticbeanstalk.com\nap-southeast-7.elasticbeanstalk.com\nca-central-1.elasticbeanstalk.com\neu-central-1.elasticbeanstalk.com\neu-north-1.elasticbeanstalk.com\neu-south-1.elasticbeanstalk.com\neu-south-2.elasticbeanstalk.com\neu-west-1.elasticbeanstalk.com\neu-west-2.elasticbeanstalk.com\neu-west-3.elasticbeanstalk.com\nil-central-1.elasticbeanstalk.com\nme-central-1.elasticbeanstalk.com\nme-south-1.elasticbeanstalk.com\nsa-east-1.elasticbeanstalk.com\nus-east-1.elasticbeanstalk.com\nus-east-2.elasticbeanstalk.com\nus-gov-east-1.elasticbeanstalk.com\nus-gov-west-1.elasticbeanstalk.com\nus-west-1.elasticbeanstalk.com\nus-west-2.elasticbeanstalk.com\n*.elb.amazonaws.com.cn\n*.elb.amazonaws.com\nawsglobalaccelerator.com\nlambda-url.af-south-1.on.aws\nlambda-url.ap-east-1.on.aws\nlambda-url.ap-northeast-1.on.aws\nlambda-url.ap-northeast-2.on.aws\nlambda-url.ap-northeast-3.on.aws\nlambda-url.ap-south-1.on.aws\nlambda-url.ap-southeast-1.on.aws\nlambda-url.ap-southeast-2.on.aws\nlambda-url.ap-southeast-3.on.aws\nlambda-url.ca-central-1.on.aws\nlambda-url.eu-central-1.on.aws\nlambda-url.eu-north-1.on.aws\nlambda-url.eu-south-1.on.aws\nlambda-url.eu-west-1.on.aws\nlambda-url.eu-west-2.on.aws\nlambda-url.eu-west-3.on.aws\nlambda-url.me-south-1.on.aws\nlambda-url.sa-east-1.on.aws\nlambda-url.us-east-1.on.aws\nlambda-url.us-east-2.on.aws\nlambda-url.us-west-1.on.aws\nlambda-url.us-west-2.on.aws\n*.private.repost.aws\ntransfer-webapp.af-south-1.on.aws\ntransfer-webapp.ap-east-1.on.aws\ntransfer-webapp.ap-northeast-1.on.aws\ntransfer-webapp.ap-northeast-2.on.aws\ntransfer-webapp.ap-northeast-3.on.aws\ntransfer-webapp.ap-south-1.on.aws\ntransfer-webapp.ap-south-2.on.aws\ntransfer-webapp.ap-southeast-1.on.aws\ntransfer-webapp.ap-southeast-2.on.aws\ntransfer-webapp.ap-southeast-3.on.aws\ntransfer-webapp.ap-southeast-4.on.aws\ntransfer-webapp.ap-southeast-5.on.aws\ntransfer-webapp.ap-southeast-7.on.aws\ntransfer-webapp.ca-central-1.on.aws\ntransfer-webapp.ca-west-1.on.aws\ntransfer-webapp.eu-central-1.on.aws\ntransfer-webapp.eu-central-2.on.aws\ntransfer-webapp.eu-north-1.on.aws\ntransfer-webapp.eu-south-1.on.aws\ntransfer-webapp.eu-south-2.on.aws\ntransfer-webapp.eu-west-1.on.aws\ntransfer-webapp.eu-west-2.on.aws\ntransfer-webapp.eu-west-3.on.aws\ntransfer-webapp.il-central-1.on.aws\ntransfer-webapp.me-central-1.on.aws\ntransfer-webapp.me-south-1.on.aws\ntransfer-webapp.mx-central-1.on.aws\ntransfer-webapp.sa-east-1.on.aws\ntransfer-webapp.us-east-1.on.aws\ntransfer-webapp.us-east-2.on.aws\ntransfer-webapp.us-gov-east-1.on.aws\ntransfer-webapp-fips.us-gov-east-1.on.aws\ntransfer-webapp.us-gov-west-1.on.aws\ntransfer-webapp-fips.us-gov-west-1.on.aws\ntransfer-webapp.us-west-1.on.aws\ntransfer-webapp.us-west-2.on.aws\ntransfer-webapp.cn-north-1.on.amazonwebservices.com.cn\ntransfer-webapp.cn-northwest-1.on.amazonwebservices.com.cn\neero.online\neero-stage.online\nopentunnel.xyz\nantagonist.cloud\nclaude.app\nclaudeusercontent.com\nframe.claudeusercontent.com\n*.cursorusercontent.com\napigee.io\npanel.dev\nsiiites.com\nint.apple\n*.cloud.int.apple\n*.r.cloud.int.apple\n*.ap-north-1.r.cloud.int.apple\n*.ap-south-1.r.cloud.int.apple\n*.ap-south-2.r.cloud.int.apple\n*.eu-central-1.r.cloud.int.apple\n*.eu-north-1.r.cloud.int.apple\n*.us-central-1.r.cloud.int.apple\n*.us-central-2.r.cloud.int.apple\n*.us-east-1.r.cloud.int.apple\n*.us-east-2.r.cloud.int.apple\n*.us-west-1.r.cloud.int.apple\n*.us-west-2.r.cloud.int.apple\n*.us-west-3.r.cloud.int.apple\nappspacehosted.com\nappspaceusercontent.com\nappudo.net\nappwrite.global\nappwrite.network\n*.appwrite.run\non-aptible.com\nf5.si\narvanedge.ir\nuser.aseinet.ne.jp\ngv.vc\nd.gv.vc\nuser.party.eus\npimienta.org\npoivron.org\npotager.org\nsweetpepper.org\nmyasustor.com\n*.atlassian-3p.com\n*.atlassian-3p-us-gov-mod.com\n*.atlassian-isolated-3p.com\ncdn.prod.atlassian-dev.net\nmyfritz.link\nmyfritz.net\n*.awdev.ca\n*.advisor.ws\necommerce-shop.pl\nb-data.io\nbalena-devices.com\nbase.ec\nofficial.ec\nbuyshop.jp\nfashionstore.jp\nhandcrafted.jp\nkawaiishop.jp\nsupersale.jp\ntheshop.jp\nshopselect.net\nbase.shop\nbeagleboard.io\nbearblog.dev\n*.beget.app\n*.begetcdn.cloud\npages.gay\nbnr.la\nbitbucket.io\nblackbaudcdn.net\nof.je\nsquare.site\nbluebite.io\nboomla.net\nboutir.com\nboxfuse.io\nsquare7.ch\nbplaced.com\nbplaced.de\nsquare7.de\nbplaced.net\nsquare7.net\nbrave.app\n*.s.brave.app\nbrave.dev\n*.s.brave.dev\nbrave.io\n*.s.brave.io\nshop.brendly.ba\nshop.brendly.hr\nshop.brendly.rs\nbrowsersafetymark.io\nradio.am\nradio.fm\ncdn.bubble.io\nbubbleapps.io\n*.bwcloud-os-instance.de\ncafjs.com\ncanva-apps.cn\ncanva-code.cn\nmy.canvasite.cn\nkhsj.cn\ncanva-apps.com\ncanva-hosted-embed.com\ncanvacode.com\nrice-labs.com\ncanva.link\ncanva.run\nmy.canva.site\ndrr.ac\nuwu.ai\ncarrd.co\ncrd.co\nju.mp\napi.gov.uk\ncdn77-storage.com\nrsc.contentproxy9.cz\nr.cdn77.net\ncdn77-ssl.net\nc.cdn77.org\nrsc.cdn77.org\nssl.origin.cdn77-secure.org\nza.bz\nbr.com\ncn.com\nde.com\neu.com\njpn.com\nmex.com\nru.com\nsa.com\nuk.com\nus.com\nza.com\ncom.de\ngb.net\nhu.net\njp.net\nse.net\nuk.net\nae.org\ncom.se\ncx.ua\ndiscourse.diy\ndiscourse.group\ndiscourse.team\nclerk.app\nclerkstage.app\n*.lcl.dev\n*.lclstage.dev\n*.stg.dev\n*.stgstage.dev\ncleverapps.cc\n*.services.clever-cloud.com\ncleverapps.io\ncleverapps.tech\nclickrising.net\ncloudns.asia\ncloudns.be\ncloud-ip.biz\ncloudns.biz\ncloud-ip.cc\ncloudns.cc\ncloudns.ch\ncloudns.cl\ncloudns.club\nabrdns.com\ndnsabr.com\nip-ddns.com\ncloudns.cx\ncloudns.eu\ncloudns.in\ncloudns.info\nddns-ip.net\ndns-cloud.net\ndns-dynamic.net\ncloudns.nz\ncloudns.org\nip-dynamic.org\ncloudns.ph\ncloudns.pro\ncloudns.pw\ncloudns.us\nc66.me\ncloud66.ws\njdevcloud.com\nwpdevcloud.com\ncloudaccess.host\nfreesite.host\ncloudaccess.net\ncloudbeesusercontent.io\n*.cloudera.site\ncloudflare.app\ncf-ipfs.com\ncloudflare-ipfs.com\ntrycloudflare.com\npages.dev\nr2.dev\nworkers.dev\ncloudflare.net\ncdn.cloudflare.net\ncdn.cloudflareanycast.net\ncdn.cloudflarecn.net\ncdn.cloudflareglobal.net\ncust.cloudscale.ch\nobjects.lpg.cloudscale.ch\nobjects.rma.cloudscale.ch\nlpg.objectstorage.ch\nrma.objectstorage.ch\nwnext.app\ncnpy.gdn\n*.otap.co\nco.ca\nco.com\nsch.ac\ndev.cv\nstore.cv\ncodeberg.page\ncodepen.app\ncodepen.dev\ncsb.app\npreview.csb.app\nco.nl\nco.no\n*.devinapps.com\nwebhosting.be\nprvw.eu\nhosting-cluster.nl\nctfcloud.net\nconvex.app\nconvex.cloud\neu-west-1.convex.cloud\nus-east-1.convex.cloud\nconvex.site\neu-west-1.convex.site\nus-east-1.convex.site\nac.ru\nedu.ru\ngov.ru\nint.ru\nmil.ru\ncorespeed.app\ndyn.cosidns.de\ndnsupdater.de\ndynamisches-dns.de\ninternet-dns.de\nl-o-g-i-n.de\ndynamic-dns.info\nfeste-ip.net\nknx-server.net\nstatic-access.net\ncraft.me\nrealm.cz\ncfolks.pl\ncyon.link\ncyon.site\nbiz.dk\nco.dk\nfirm.dk\nreg.dk\nstore.dk\ndyndns.dappnode.io\nbuiltwithdark.com\ndarklang.io\ndemo.datadetect.com\ninstance.datadetect.com\nedgestack.me\ndattolocal.com\ndattorelay.com\ndattoweb.com\nmydatto.com\ndattolocal.net\nmydatto.net\nddnss.de\ndyn.ddnss.de\ndyndns.ddnss.de\ndyn-ip24.de\ndyndns1.de\nhome-webserver.de\ndyn.home-webserver.de\nmyhome-server.de\nddnss.org\ndebian.net\ndefinima.io\ndefinima.net\ndeno.dev\ndeno-staging.dev\ndeno.net\nsandbox.deno.net\ndeployagent.com\npiebox.site\ndeployagent.space\ndedyn.io\ndeuxfleurs.eu\ndeuxfleurs.page\n*.at.ply.gg\nd6.ply.gg\njoinmc.link\nplayit.plus\n*.at.playit.plus\nwith.playit.plus\nicp0.io\n*.raw.icp0.io\nicp1.io\n*.raw.icp1.io\nopencloud.me\n*.icp.net\ncaffeine.site\ncaffeine.xyz\nmybox.company\nintouch.email\nmybox.me\nmybox.page\ndfirma.pl\ndkonto.pl\nyou2.pl\nondigitalocean.app\n*.digitaloceanspaces.com\nqzz.io\nus.kg\nxx.kg\ndpdns.org\ndiscordsays.com\ndiscordsez.com\njozi.biz\nccwu.cc\ncc.cd\nus.ci\nde5.net\ndnshome.at\nresolve.bar\nddns.berlin\ndnshome.cloud\nddnssec.de\ndnshome.de\ndyndnssec.de\nheimdns.de\nsrvdns.de\ndnshome.eu\ndnshome.it\ndyn.now\nheimdns.online\nddns.wtf\nonline.th\nshop.th\nco.scot\nme.scot\norg.scot\ndrayddns.com\nshoparena.pl\ndreamhosters.com\ndurumis.com\nduckdns.org\ndy.fi\ntunk.org\ndyndns.biz\nfor-better.biz\nfor-more.biz\nfor-some.biz\nfor-the.biz\nselfip.biz\nwebhop.biz\nftpaccess.cc\ngame-server.cc\nmyphotos.cc\nscrapping.cc\nblogdns.com\ncechire.com\ndnsalias.com\ndnsdojo.com\ndoesntexist.com\ndontexist.com\ndoomdns.com\ndyn-o-saur.com\ndynalias.com\ndyndns-at-home.com\ndyndns-at-work.com\ndyndns-blog.com\ndyndns-free.com\ndyndns-home.com\ndyndns-ip.com\ndyndns-mail.com\ndyndns-office.com\ndyndns-pics.com\ndyndns-remote.com\ndyndns-server.com\ndyndns-web.com\ndyndns-wiki.com\ndyndns-work.com\nest-a-la-maison.com\nest-a-la-masion.com\nest-le-patron.com\nest-mon-blogueur.com\nfrom-ak.com\nfrom-al.com\nfrom-ar.com\nfrom-ca.com\nfrom-ct.com\nfrom-dc.com\nfrom-de.com\nfrom-fl.com\nfrom-ga.com\nfrom-hi.com\nfrom-ia.com\nfrom-id.com\nfrom-il.com\nfrom-in.com\nfrom-ks.com\nfrom-ky.com\nfrom-ma.com\nfrom-md.com\nfrom-mi.com\nfrom-mn.com\nfrom-mo.com\nfrom-ms.com\nfrom-mt.com\nfrom-nc.com\nfrom-nd.com\nfrom-ne.com\nfrom-nh.com\nfrom-nj.com\nfrom-nm.com\nfrom-nv.com\nfrom-oh.com\nfrom-ok.com\nfrom-or.com\nfrom-pa.com\nfrom-pr.com\nfrom-ri.com\nfrom-sc.com\nfrom-sd.com\nfrom-tn.com\nfrom-tx.com\nfrom-ut.com\nfrom-va.com\nfrom-vt.com\nfrom-wa.com\nfrom-wi.com\nfrom-wv.com\nfrom-wy.com\ngetmyip.com\ngotdns.com\nhobby-site.com\nhomelinux.com\nhomeunix.com\niamallama.com\nis-a-anarchist.com\nis-a-blogger.com\nis-a-bookkeeper.com\nis-a-bulls-fan.com\nis-a-caterer.com\nis-a-chef.com\nis-a-conservative.com\nis-a-cpa.com\nis-a-cubicle-slave.com\nis-a-democrat.com\nis-a-designer.com\nis-a-doctor.com\nis-a-financialadvisor.com\nis-a-geek.com\nis-a-green.com\nis-a-guru.com\nis-a-hard-worker.com\nis-a-hunter.com\nis-a-landscaper.com\nis-a-lawyer.com\nis-a-liberal.com\nis-a-libertarian.com\nis-a-llama.com\nis-a-musician.com\nis-a-nascarfan.com\nis-a-nurse.com\nis-a-painter.com\nis-a-personaltrainer.com\nis-a-photographer.com\nis-a-player.com\nis-a-republican.com\nis-a-rockstar.com\nis-a-socialist.com\nis-a-student.com\nis-a-teacher.com\nis-a-techie.com\nis-a-therapist.com\nis-an-accountant.com\nis-an-actor.com\nis-an-actress.com\nis-an-anarchist.com\nis-an-artist.com\nis-an-engineer.com\nis-an-entertainer.com\nis-certified.com\nis-gone.com\nis-into-anime.com\nis-into-cars.com\nis-into-cartoons.com\nis-into-games.com\nis-leet.com\nis-not-certified.com\nis-slick.com\nis-uberleet.com\nis-with-theband.com\nisa-geek.com\nisa-hockeynut.com\nissmarterthanyou.com\nlikes-pie.com\nlikescandy.com\nneat-url.com\nsaves-the-whales.com\nselfip.com\nsells-for-less.com\nsells-for-u.com\nservebbs.com\nsimple-url.com\nspace-to-rent.com\nteaches-yoga.com\nwritesthisblog.com\nath.cx\nfuettertdasnetz.de\nisteingeek.de\nistmein.de\nlebtimnetz.de\nleitungsen.de\ntraeumtgerade.de\nbarrel-of-knowledge.info\nbarrell-of-knowledge.info\ndyndns.info\nfor-our.info\ngroks-the.info\ngroks-this.info\nhere-for-more.info\nknowsitall.info\nselfip.info\nwebhop.info\nforgot.her.name\nforgot.his.name\nat-band-camp.net\nblogdns.net\nbroke-it.net\nbuyshouses.net\ndnsalias.net\ndnsdojo.net\ndoes-it.net\ndontexist.net\ndynalias.net\ndynathome.net\nendofinternet.net\nfrom-az.net\nfrom-co.net\nfrom-la.net\nfrom-ny.net\ngets-it.net\nham-radio-op.net\nhomeftp.net\nhomeip.net\nhomelinux.net\nhomeunix.net\nin-the-band.net\nis-a-chef.net\nis-a-geek.net\nisa-geek.net\nkicks-ass.net\noffice-on-the.net\npodzone.net\nscrapper-site.net\nselfip.net\nsells-it.net\nservebbs.net\nserveftp.net\nthruhere.net\nwebhop.net\nmerseine.nu\nmine.nu\nshacknet.nu\nblogdns.org\nblogsite.org\nboldlygoingnowhere.org\ndnsalias.org\ndnsdojo.org\ndoesntexist.org\ndontexist.org\ndoomdns.org\ndvrdns.org\ndynalias.org\ndyndns.org\ngo.dyndns.org\nhome.dyndns.org\nendofinternet.org\nendoftheinternet.org\nfrom-me.org\ngame-host.org\ngotdns.org\nhobby-site.org\nhomedns.org\nhomeftp.org\nhomelinux.org\nhomeunix.org\nis-a-bruinsfan.org\nis-a-candidate.org\nis-a-celticsfan.org\nis-a-chef.org\nis-a-geek.org\nis-a-knight.org\nis-a-linux-user.org\nis-a-patsfan.org\nis-a-soxfan.org\nis-found.org\nis-lost.org\nis-saved.org\nis-very-bad.org\nis-very-evil.org\nis-very-good.org\nis-very-nice.org\nis-very-sweet.org\nisa-geek.org\nkicks-ass.org\nmisconfused.org\npodzone.org\nreadmyblog.org\nselfip.org\nsellsyourhome.org\nservebbs.org\nserveftp.org\nservegame.org\nstuff-4-sale.org\nwebhop.org\nbetter-than.tv\ndyndns.tv\non-the-web.tv\nworse-than.tv\nis-by.us\nland-4-sale.us\nstuff-4-sale.us\ndyndns.ws\nmypets.ws\n1cooldns.com\nbumbleshrimp.com\nddnsfree.com\nddnsgeek.com\nddnsguru.com\ndynuddns.com\ndynuhosting.com\ngiize.com\ngleeze.com\nkozow.com\nloseyourip.com\nooguy.com\npivohosting.com\ntheworkpc.com\nwiredbladehosting.com\ncasacam.net\ndynu.net\ndynuddns.net\nmysynology.net\nopik.net\nspryt.net\naccesscam.org\ncamdvr.org\nfreeddns.org\nmywire.org\nroxa.org\nwebredirect.org\nmyddns.rocks\ndynv6.net\ne4.cz\neasypanel.app\neasypanel.host\n*.ewp.live\ntwmail.cc\ntwmail.net\ntwmail.org\nmymailer.com.tw\nurl.tw\nat.emf.camp\nrt.ht\nelementor.cloud\nelementor.cool\nemergent.cloud\npreview.emergentagent.com\nemergent.host\nmytuleap.com\ntuleap-partners.com\nencr.app\nfrontend.encr.app\nencoreapi.com\nlp.dev\napi.lp.dev\nobjects.lp.dev\neu.encoway.cloud\neu.org\nal.eu.org\nasso.eu.org\nat.eu.org\nau.eu.org\nbe.eu.org\nbg.eu.org\nca.eu.org\ncd.eu.org\nch.eu.org\ncn.eu.org\ncy.eu.org\ncz.eu.org\nde.eu.org\ndk.eu.org\nedu.eu.org\nee.eu.org\nes.eu.org\nfi.eu.org\nfr.eu.org\ngr.eu.org\nhr.eu.org\nhu.eu.org\nie.eu.org\nil.eu.org\nin.eu.org\nint.eu.org\nis.eu.org\nit.eu.org\njp.eu.org\nkr.eu.org\nlt.eu.org\nlu.eu.org\nlv.eu.org\nme.eu.org\nmk.eu.org\nmt.eu.org\nmy.eu.org\nnet.eu.org\nng.eu.org\nnl.eu.org\nno.eu.org\nnz.eu.org\npl.eu.org\npt.eu.org\nro.eu.org\nru.eu.org\nse.eu.org\nsi.eu.org\nsk.eu.org\ntr.eu.org\nuk.eu.org\nus.eu.org\neurodir.ru\neu-1.evennode.com\neu-2.evennode.com\neu-3.evennode.com\neu-4.evennode.com\nus-1.evennode.com\nus-2.evennode.com\nus-3.evennode.com\nus-4.evennode.com\nrelay.evervault.app\nrelay.evervault.dev\nexe.xyz\nexpo.app\non.expo.app\nstaging.expo.app\non.staging.expo.app\nfspages.org\nru.net\nadygeya.ru\nbashkiria.ru\nbir.ru\ncbg.ru\ncom.ru\ndagestan.ru\ngrozny.ru\nkalmykia.ru\nkustanai.ru\nmarine.ru\nmordovia.ru\nmsk.ru\nmytis.ru\nnalchik.ru\nnov.ru\npyatigorsk.ru\nspb.ru\nvladikavkaz.ru\nvladimir.ru\nabkhazia.su\nadygeya.su\naktyubinsk.su\narkhangelsk.su\narmenia.su\nashgabad.su\nazerbaijan.su\nbalashov.su\nbashkiria.su\nbryansk.su\nbukhara.su\nchimkent.su\ndagestan.su\neast-kazakhstan.su\nexnet.su\ngeorgia.su\ngrozny.su\nivanovo.su\njambyl.su\nkalmykia.su\nkaluga.su\nkaracol.su\nkaraganda.su\nkarelia.su\nkhakassia.su\nkrasnodar.su\nkurgan.su\nkustanai.su\nlenug.su\nmangyshlak.su\nmordovia.su\nmsk.su\nmurmansk.su\nnalchik.su\nnavoi.su\nnorth-kazakhstan.su\nnov.su\nobninsk.su\npenza.su\npokrovsk.su\nsochi.su\nspb.su\ntashkent.su\ntermez.su\ntogliatti.su\ntroitsk.su\ntselinograd.su\ntula.su\ntuva.su\nvladikavkaz.su\nvladimir.su\nvologda.su\nchannelsdvr.net\nu.channelsdvr.net\nedgecompute.app\nfastly-edge.com\nfastly-terrarium.com\nfreetls.fastly.net\nmap.fastly.net\na.prod.fastly.net\nglobal.prod.fastly.net\na.ssl.fastly.net\nb.ssl.fastly.net\nglobal.ssl.fastly.net\nfastlylb.net\nmap.fastlylb.net\n*.user.fm\nfastvps-server.com\nfastvps.host\nmyfast.host\nfastvps.site\nmyfast.space\nconn.uk\ncopro.uk\nhosp.uk\nfedorainfracloud.org\nfedorapeople.org\ncloud.fedoraproject.org\napp.os.fedoraproject.org\napp.os.stg.fedoraproject.org\nmydobiss.com\nfh-muenster.io\npayload.dev\nfigma.site\nfigma-gov.site\npreview.site\nfilegear.me\nfirebaseapp.com\nfldrv.com\non-fleek.app\nflutterflow.app\nsprites.app\nfly.dev\ne2b.app\nframer.ai\nframer.app\nframercanvas.com\nframer.media\nframer.photos\nframer.website\nframer.wiki\n*.0e.vc\nfreebox-os.com\nfreeboxos.com\nfbx-os.fr\nfbxos.fr\nfreebox-os.fr\nfreeboxos.fr\nfreedesktop.org\nfreemyip.com\n*.frusky.de\nwien.funkfeuer.at\ndaemon.asia\ndix.asia\nmydns.bz\n0am.jp\n0g0.jp\n0j0.jp\n0t0.jp\nmydns.jp\npgw.jp\nwjg.jp\nkeyword-on.net\nlive-on.net\nserver-on.net\nmydns.tw\nmydns.vc\n*.futurecms.at\n*.ex.futurecms.at\n*.in.futurecms.at\nfuturehosting.at\nfuturemailing.at\n*.ex.ortsinfo.at\n*.kunden.ortsinfo.at\n*.statics.cloud\ngadget.app\ngadget.host\naliases121.com\ncampaign.gov.uk\nservice.gov.uk\nindependent-commission.uk\nindependent-inquest.uk\nindependent-inquiry.uk\nindependent-panel.uk\nindependent-review.uk\npublic-inquiry.uk\nroyal-commission.uk\ngehirn.ne.jp\nusercontent.jp\ngentapps.com\ngentlentapis.com\ncdn-edges.net\ngsj.bz\ngitbook.io\ngithub.app\ngithubusercontent.com\ngithubpreview.dev\ngithub.io\ngitlab.io\ngitapp.si\ngitpage.si\nnog.community\nco.ro\nshop.ro\nlolipop.io\nangry.jp\nbabyblue.jp\nbabymilk.jp\nbackdrop.jp\nbambina.jp\nbitter.jp\nblush.jp\nboo.jp\nboy.jp\nboyfriend.jp\nbut.jp\ncandypop.jp\ncapoo.jp\ncatfood.jp\ncheap.jp\nchicappa.jp\nchillout.jp\nchips.jp\nchowder.jp\nchu.jp\nciao.jp\ncocotte.jp\ncoolblog.jp\ncranky.jp\ncutegirl.jp\ndaa.jp\ndeca.jp\ndeci.jp\ndigick.jp\negoism.jp\nfakefur.jp\nfem.jp\nflier.jp\nfloppy.jp\nfool.jp\nfrenchkiss.jp\ngirlfriend.jp\ngirly.jp\ngloomy.jp\ngonna.jp\ngreater.jp\nhacca.jp\nheavy.jp\nher.jp\nhiho.jp\nhippy.jp\nholy.jp\nhungry.jp\nicurus.jp\nitigo.jp\njellybean.jp\nkikirara.jp\nkill.jp\nkilo.jp\nkuron.jp\nlittlestar.jp\nlolipopmc.jp\nlolitapunk.jp\nlomo.jp\nlovepop.jp\nlovesick.jp\nmain.jp\nmods.jp\nmond.jp\nmongolian.jp\nmoo.jp\nnamaste.jp\nnikita.jp\nnobushi.jp\nnoor.jp\noops.jp\nparallel.jp\nparasite.jp\npecori.jp\npeewee.jp\npenne.jp\npepper.jp\nperma.jp\npigboat.jp\npinoko.jp\npunyu.jp\npupu.jp\npussycat.jp\npya.jp\nraindrop.jp\nreadymade.jp\nsadist.jp\nschoolbus.jp\nsecret.jp\nstaba.jp\nstripper.jp\nsub.jp\nsunnyday.jp\nthick.jp\ntonkotsu.jp\nunder.jp\nupper.jp\nvelvet.jp\nverse.jp\nversus.jp\nvivian.jp\nwatson.jp\nweblike.jp\nwhitesnow.jp\nzombie.jp\nheteml.net\nvibehost.space\ngraphic.design\ngoip.de\n*.hosted.app\n*.run.app\n*.mtls.run.app\nweb.app\n*.0emm.com\nappspot.com\n*.r.appspot.com\nblogspot.com\ncodespot.com\ngoogleapis.com\ngooglecode.com\npagespeedmobilizer.com\nwithgoogle.com\nwithyoutube.com\n*.gateway.dev\ncloud.goog\ntranslate.goog\n*.usercontent.goog\ncloudfunctions.net\ngoupile.fr\npymnt.uk\ngov.nl\ngrafana-dev.net\ngrayjayleagues.com\ngrebedoc.dev\nxn--gnstigbestellen-zvb.de\nxn--gnstigliefern-wob.de\ngv.uy\nhackclub.app\nxn--hkkinen-5wa.fi\nhashbang.sh\nhasura.app\nhasura-app.io\nhatenablog.com\nhatenadiary.com\nhateblo.jp\nhatenablog.jp\nhatenadiary.jp\nhatenadiary.org\npages.it.hs-heilbronn.de\npages-research.it.hs-heilbronn.de\nheiyu.space\nhelioho.st\nheliohost.us\nhepforge.org\nonhercules.app\nhercules-app.com\nhercules-dev.com\nhere.now\nherokuapp.com\nheyflow.page\nheyflow.site\nravendb.cloud\nravendb.community\ndevelopment.run\nravendb.run\nhidns.co\nhidns.vip\nhomesklep.pl\n*.kin.one\n*.id.pub\n*.kin.pub\nseprox.hooc.me\nhoplix.shop\norx.biz\nbiz.ng\nco.biz.ng\ndl.biz.ng\ngo.biz.ng\nlg.biz.ng\non.biz.ng\ncol.ng\nfirm.ng\ngen.ng\nltd.ng\nngo.ng\nplc.ng\nhstgr.cloud\nhostyhosting.io\nhf.space\nstatic.hf.space\nhypernode.io\niobb.net\nco.cz\n*.moonscale.io\nmoonscale.net\ngr.com\niki.fi\nibxos.it\niliadboxos.it\nimagine.diy\nimagine-proxy.work\nsmushcdn.com\nwphostedmail.com\nwpmucdn.com\ntempurl.host\nwpmudev.host\ndyn-berlin.de\nin-berlin.de\nin-brb.de\nin-butter.de\nin-dsl.de\nin-vpn.de\nin-dsl.net\nin-vpn.net\nin-dsl.org\nin-vpn.org\noninferno.net\ninfo.cx\nac.leg.br\nal.leg.br\nam.leg.br\nap.leg.br\nba.leg.br\nce.leg.br\ndf.leg.br\nes.leg.br\ngo.leg.br\nma.leg.br\nmg.leg.br\nms.leg.br\nmt.leg.br\npa.leg.br\npb.leg.br\npe.leg.br\npi.leg.br\npr.leg.br\nrj.leg.br\nrn.leg.br\nro.leg.br\nrr.leg.br\nrs.leg.br\nsc.leg.br\nse.leg.br\nsp.leg.br\nto.leg.br\npixolino.com\nna4u.ru\nbotdash.app\nbotdash.dev\nbotdash.gg\nbotdash.net\nbotda.sh\nbotdash.xyz\nonline-server.cloud\napps-1and1.com\nlive-website.com\nwebspace-host.com\napps-1and1.net\nwebsitebuilder.online\napp-ionos.space\niopsys.se\n*.inbrowser.dev\n*.dweb.link\n*.inbrowser.link\nipifony.net\nhome64.de\nipv64.de\nipv64.net\nir.md\nis-a-good.dev\niservschule.de\nmein-iserv.de\nschuldock.de\nschulplattform.de\nschulserver.de\ntest-iserv.de\niserv.dev\niserv.host\nispmanager.name\nmel.cloudlets.com.au\ncloud.interhostsolutions.be\nalp1.ae.flow.ch\nappengine.flow.ch\nes-1.axarnet.cloud\ndiadem.cloud\nvip.jelastic.cloud\njele.cloud\nit1.eur.aruba.jenv-aruba.cloud\nit1.jenv-aruba.cloud\nkeliweb.cloud\ncs.keliweb.cloud\noxa.cloud\ntn.oxa.cloud\nuk.oxa.cloud\nprimetel.cloud\nuk.primetel.cloud\nca.reclaim.cloud\nuk.reclaim.cloud\nus.reclaim.cloud\nch.trendhosting.cloud\nde.trendhosting.cloud\njele.club\ndopaas.com\npaas.hosted-by-previder.com\nrag-cloud.hosteur.com\nrag-cloud-ch.hosteur.com\njcloud.ik-server.com\njcloud-ver-jpc.ik-server.com\ndemo.jelastic.com\npaas.massivegrid.com\njed.wafaicloud.com\nryd.wafaicloud.com\nj.scaleforce.com.cy\njelastic.dogado.eu\nfi.cloudplatform.fi\njele.host\nmircloud.host\npaas.beebyte.io\nsekd1.beebyteapp.io\njele.io\njc.neen.it\njcloud.kz\ncloudjiffy.net\nfra1-de.cloudjiffy.net\nwest1-us.cloudjiffy.net\njls-sto1.elastx.net\njls-sto2.elastx.net\njls-sto3.elastx.net\nfr-1.paas.massivegrid.net\nlon-1.paas.massivegrid.net\nlon-2.paas.massivegrid.net\nny-1.paas.massivegrid.net\nny-2.paas.massivegrid.net\nsg-1.paas.massivegrid.net\njelastic.saveincloud.net\nnordeste-idc.saveincloud.net\nj.scaleforce.net\nsdscloud.pl\nunicloud.pl\nmircloud.ru\nenscaled.sg\njele.site\njelastic.team\norangecloud.tn\nj.layershift.co.uk\nphx.enscaled.us\nmircloud.us\nmyjino.ru\n*.hosting.myjino.ru\n*.landing.myjino.ru\n*.spectrum.myjino.ru\n*.vps.myjino.ru\njote.cloud\njotelulu.cloud\neu1-plenit.com\nla1-plenit.com\nus1-plenit.com\nwebadorsite.com\njouwweb.site\njs.org\nelastic.k2.cloud\nlb.ru-msk.k2.cloud\ns3.ru-msk.k2.cloud\nwebsite.ru-msk.k2.cloud\nlb.ru-spb.k2.cloud\ns3.ru-spb.k2.cloud\nwebsite.ru-spb.k2.cloud\ns3.k2.cloud\nwebsite.k2.cloud\nkaas.gg\nkhplay.nl\nkapsi.fi\nkdns.fr\nezproxy.kuleuven.be\nkuleuven.cloud\nkeenetic.io\nkeenetic.link\nkeenetic.name\nkeenetic.pro\nae.kg\nkeymachine.de\nkiloapps.ai\nkiloapps.io\nkinghost.net\nuni5.net\nknightpoint.systems\nkoobin.events\nwebthings.io\nkrellian.net\noya.to\nco.de\nshiptoday.app\nshiptoday.build\nlaravel.cloud\non-forge.com\non-vapor.com\n*.eth.limo\n*.eth.link\ngit-repos.de\nlcube-server.de\nsvn-repos.de\nleadpages.co\nlpages.co\nlpusercontent.com\nleapcell.app\nleapcell.dev\nleapcell.online\nliara.run\niran.liara.run\nlibp2p.direct\nruncontainers.dev\nco.business\nco.education\nco.events\nco.financial\nco.network\nco.place\nco.technology\nlinkyard-cloud.ch\nlinkyard.cloud\nmembers.linode.com\n*.nodebalancer.linode.com\n*.linodeobjects.com\nip.linodeusercontent.com\nwe.bs\nfilegear-sg.me\nggff.net\n*.user.localcert.dev\nlocaltonet.com\n*.localto.net\nlodz.pl\npabianice.pl\nplock.pl\nsieradz.pl\nskierniewice.pl\nzgierz.pl\nloginline.app\nloginline.dev\nloginline.io\nloginline.services\nloginline.site\nlohmus.me\nlovable.app\nlovableproject.com\nlovable.run\nlovable.sh\nkrasnik.pl\nleczna.pl\nlubartow.pl\nlublin.pl\nponiatowa.pl\nswidnik.pl\nglug.org.uk\nlug.org.uk\nlugs.org.uk\nbarsy.bg\nbarsy.club\nbarsycenter.com\nbarsyonline.com\nbarsy.de\nbarsy.dev\nbarsy.eu\nbarsy.gr\nbarsy.in\nbarsy.info\nbarsy.io\nbarsy.me\nbarsy.menu\nbarsyonline.menu\nbarsy.mobi\nbarsy.net\nbarsy.online\nbarsy.org\nbarsy.pro\nbarsy.pub\nbarsy.ro\nbarsy.rs\nbarsy.shop\nbarsyonline.shop\nbarsy.site\nbarsy.store\nbarsy.support\nbarsy.uk\nbarsy.co.uk\nbarsyonline.co.uk\n*.lutrausercontent.com\nluyani.app\nluyani.net\n*.magentosite.cloud\nmagicpatterns.app\nmagicpatternsapp.com\nhb.cldmail.ru\nmatlab.cloud\nmodelscape.com\nmwcloudnonprod.com\npolyspace.com\nmayfirst.info\nmcdir.me\nmcdir.ru\nvps.mcdir.ru\nmcpre.ru\nmediatech.by\nmediatech.dev\nhra.health\nmedusajs.app\nminiserver.com\nmemset.net\nmesserli.app\natmeta.com\napps.fbsbx.com\n*.metaaiusercontent.com\n*.cloud.metacentrum.cz\ncustom.metacentrum.cz\nflt.cloud.muni.cz\nusr.cloud.muni.cz\nmeteorapp.com\neu.meteorapp.com\nco.pl\n*.azurecontainer.io\nazure-api.net\nazure-mobile.net\nazureedge.net\nazurefd.net\nazurestaticapps.net\n1.azurestaticapps.net\n2.azurestaticapps.net\n3.azurestaticapps.net\n4.azurestaticapps.net\n5.azurestaticapps.net\n6.azurestaticapps.net\n7.azurestaticapps.net\ncentralus.azurestaticapps.net\neastasia.azurestaticapps.net\neastus2.azurestaticapps.net\nwesteurope.azurestaticapps.net\nwestus2.azurestaticapps.net\nazurewebsites.net\naustraliacentral-01.azurewebsites.net\naustraliacentral2-01.azurewebsites.net\naustraliaeast-01.azurewebsites.net\naustraliasoutheast-01.azurewebsites.net\naustriaeast-01.azurewebsites.net\nbelgiumcentral-01.azurewebsites.net\nbrazilsouth-01.azurewebsites.net\nbrazilsoutheast-01.azurewebsites.net\ncanadacentral-01.azurewebsites.net\ncanadaeast-01.azurewebsites.net\ncentralindia-01.azurewebsites.net\ncentralus-01.azurewebsites.net\ncentraluseuap-01.azurewebsites.net\nchilecentral-01.azurewebsites.net\ndenmarkeast-01.azurewebsites.net\neastasia-01.azurewebsites.net\neastasiastage-01.azurewebsites.net\neastus-01.azurewebsites.net\neastus2-01.azurewebsites.net\neastus2euap-01.azurewebsites.net\neastus3-01.azurewebsites.net\nfrancecentral-01.azurewebsites.net\nfrancesouth-01.azurewebsites.net\ngermanynorth-01.azurewebsites.net\ngermanywestcentral-01.azurewebsites.net\nindiasouthcentral-01.azurewebsites.net\nindonesiacentral-01.azurewebsites.net\nisraelcentral-01.azurewebsites.net\nisraelnorthwest-01.azurewebsites.net\nitalynorth-01.azurewebsites.net\njapaneast-01.azurewebsites.net\njapanwest-01.azurewebsites.net\njioindiacentral-01.azurewebsites.net\njioindiawest-01.azurewebsites.net\nkoreacentral-01.azurewebsites.net\nkoreasouth-01.azurewebsites.net\nmalaysiawest-01.azurewebsites.net\nmexicocentral-01.azurewebsites.net\nnewzealandnorth-01.azurewebsites.net\nnorthcentralus-01.azurewebsites.net\nnorthcentralusstage-01.azurewebsites.net\nnortheastus5-01.azurewebsites.net\nnortheurope-01.azurewebsites.net\nnorwayeast-01.azurewebsites.net\nnorwaywest-01.azurewebsites.net\n*.p.azurewebsites.net\npolandcentral-01.azurewebsites.net\nqatarcentral-01.azurewebsites.net\nsouthafricanorth-01.azurewebsites.net\nsouthafricawest-01.azurewebsites.net\nsouthcentralus-01.azurewebsites.net\nsouthcentralus2-01.azurewebsites.net\nsoutheastasia-01.azurewebsites.net\nsoutheastus5-01.azurewebsites.net\nsouthindia-01.azurewebsites.net\nspaincentral-01.azurewebsites.net\nswedencentral-01.azurewebsites.net\nswedensouth-01.azurewebsites.net\nswitzerlandnorth-01.azurewebsites.net\nswitzerlandwest-01.azurewebsites.net\ntaiwannorth-01.azurewebsites.net\ntaiwannorthwest-01.azurewebsites.net\nuaecentral-01.azurewebsites.net\nuaenorth-01.azurewebsites.net\nuksouth-01.azurewebsites.net\nukwest-01.azurewebsites.net\nwestcentralus-01.azurewebsites.net\nwesteurope-01.azurewebsites.net\nwestindia-01.azurewebsites.net\nwestus-01.azurewebsites.net\nwestus2-01.azurewebsites.net\nwestus3-01.azurewebsites.net\ncloudapp.net\ntrafficmanager.net\nblob.core.usgovcloudapi.net\nfile.core.usgovcloudapi.net\nweb.core.usgovcloudapi.net\nservicebus.usgovcloudapi.net\nusgovcloudapp.net\nusgovtrafficmanager.net\nblob.core.windows.net\nfile.core.windows.net\nweb.core.windows.net\nservicebus.windows.net\nazure-api.us\nazurewebsites.us\nroutingthecloud.com\nsn.mynetname.net\nroutingthecloud.net\nroutingthecloud.org\nsame-app.com\nsame-preview.com\ncsx.cc\nmiren.app\nmiren.systems\nmydbserver.com\nwebspaceconfig.de\nmittwald.info\nmittwaldserver.info\ntypo3server.info\nproject.space\nmkm.fan\nmocha.app\nmochausercontent.com\nmocha-sandbox.dev\nmodx.dev\nbmoattachments.org\nnet.ru\norg.ru\npp.ru\nmy.be\nhostedpi.com\ncaracal.mythic-beasts.com\ncustomer.mythic-beasts.com\nfentiger.mythic-beasts.com\nlynx.mythic-beasts.com\nocelot.mythic-beasts.com\noncilla.mythic-beasts.com\nonza.mythic-beasts.com\nsphinx.mythic-beasts.com\nvs.mythic-beasts.com\nx.mythic-beasts.com\nyali.mythic-beasts.com\ncust.retrosnub.co.uk\nui.nabu.casa\nneedle.run\nco.site\ncloud.nospamproxy.com\no365.cloud.nospamproxy.com\nnetlib.re\nnetlify.app\n4u.com\nnfshost.com\nipfs.nftstorage.link\nngo.us\nngrok.app\nngrok-free.app\nngrok.dev\nngrok-free.dev\nngrok.io\nap.ngrok.io\nau.ngrok.io\neu.ngrok.io\nin.ngrok.io\njp.ngrok.io\nsa.ngrok.io\nus.ngrok.io\nngrok.pizza\nngrok.pro\ntorun.pl\nnh-serv.co.uk\nnimsite.uk\nmmafan.biz\nmyftp.biz\nno-ip.biz\nno-ip.ca\nfantasyleague.cc\ngotdns.ch\n3utilities.com\nblogsyte.com\nciscofreak.com\ndamnserver.com\nddnsking.com\nditchyourip.com\ndnsiskinky.com\ndynns.com\ngeekgalaxy.com\nhealth-carereform.com\nhomesecuritymac.com\nhomesecuritypc.com\nmyactivedirectory.com\nmysecuritycamera.com\nmyvnc.com\nnet-freaks.com\nonthewifi.com\npoint2this.com\nquicksytes.com\nsecuritytactics.com\nservebeer.com\nservecounterstrike.com\nserveexchange.com\nserveftp.com\nservegame.com\nservehalflife.com\nservehttp.com\nservehumour.com\nserveirc.com\nservemp3.com\nservep2p.com\nservepics.com\nservequake.com\nservesarcasm.com\nstufftoread.com\nunusualperson.com\nworkisboring.com\ndvrcam.info\nilovecollege.info\nno-ip.info\nbrasilia.me\nddns.me\ndnsfor.me\nhopto.me\nloginto.me\nnoip.me\nwebhop.me\nbounceme.net\nddns.net\neating-organic.net\nmydissent.net\nmyeffect.net\nmymediapc.net\nmypsx.net\nmysecuritycamera.net\nnhlfan.net\nno-ip.net\npgafan.net\nprivatizehealthinsurance.net\nredirectme.net\nserveblog.net\nserveminecraft.net\nsytes.net\ncable-modem.org\ncollegefan.org\ncouchpotatofries.org\nhopto.org\nmlbfan.org\nmyftp.org\nmysecuritycamera.org\nnflfan.org\nno-ip.org\nread-books.org\nufcfan.org\nzapto.org\nno-ip.co.uk\ngolffan.us\nnoip.us\npointto.us\nstage.nodeart.io\n*.developer.app\nnoop.app\n*.northflank.app\n*.build.run\n*.code.run\n*.database.run\n*.migration.run\naberdeen.wa.us\nbainbridge-isl.wa.us\nbellevue.wa.us\nbremerton.wa.us\ncentralia.wa.us\nchehalis.wa.us\nforks.wa.us\ngig-harbor.wa.us\nhoquiam.wa.us\nkeyport.wa.us\nkingston.wa.us\nolympia.wa.us\nport-angeles.wa.us\nport-ludlow.wa.us\nport-orchard.wa.us\nport-townsend.wa.us\npoulsbo.wa.us\nredmond.wa.us\nrenton.wa.us\nsea.wa.us\nseattle.wa.us\nsequim.wa.us\nshelton.wa.us\nsilverdale.wa.us\nyarrow-point.wa.us\nnoticeable.news\nnotion.site\ndnsking.ch\nmypi.co\nmyiphost.com\nforumz.info\nsoundcast.me\ntcp4.me\ndnsup.net\nhicam.net\nnow-dns.net\nownip.net\nvpndns.net\ndynserv.org\nnow-dns.org\nx443.pw\nntdll.top\nfreeddns.us\nnsupdate.info\nnerdpol.ovh\nprvcy.page\nobservablehq.cloud\nstatic.observableusercontent.com\nomg.lol\ncloudycluster.net\nomniwe.site\n123webseite.at\n123website.be\nsimplesite.com.br\n123website.ch\nsimplesite.com\n123webseite.de\n123hjemmeside.dk\n123miweb.es\n123kotisivu.fi\n123siteweb.fr\nsimplesite.gr\n123homepage.it\n123website.lu\n123website.nl\n123hjemmeside.no\nservice.one\nwebsite.one\nsimplesite.pl\n123paginaweb.pt\n123minsida.se\nonid.ca\nis-a-fullstack.dev\nis-cool.dev\nis-not-a.dev\nlocalplayer.dev\nis-local.org\nopensocial.site\n*.oaiusercontent.com\nchatgpt.site\nopencraft.hosting\n16-b.it\n32-b.it\n64-b.it\norsites.com\noperaunite.com\n*.customer-oci.com\n*.oci.customer-oci.com\n*.ocp.customer-oci.com\n*.ocs.customer-oci.com\n*.oraclecloudapps.com\n*.oraclegovcloudapps.com\n*.oraclegovcloudapps.uk\ntech.orange\ncan.re\nauthgear-staging.com\nauthgearapps.com\noutsystemscloud.com\n*.hosting.ovh.net\n*.webpaas.ovh.net\nownprovider.com\nown.pm\n*.owo.codes\nox.rs\noy.lc\npgfog.com\ngotpantheon.com\npantheonsite.io\n*.paywhirl.com\n*.xmit.co\nxmit.dev\nmadethis.site\nsrv.us\ngh.srv.us\ngl.srv.us\nmypep.link\npplx.app\nperspecta.cloud\nforgeblocks.com\nid.forgerock.io\nsupport.site\non-web.fr\n*.upsun.app\nupsunapp.com\nent.platform.sh\neu.platform.sh\nus.platform.sh\n*.platformsh.site\n*.tst.site\nplaycode.site\npley.games\nonporter.run\nco.bn\npostman-echo.com\npstmn.io\nmock.pstmn.io\nhttpbin.org\nprequalifyme.today\nxen.prgmr.com\npriv.at\nc01.kr\neliv-api.kr\neliv-cdn.kr\neliv-dns.kr\nmmv.kr\nvki.kr\ndev.project-study.com\nplatter-app.dev\ne.id\nchirurgiens-dentistes-en-france.fr\nbyen.site\nnyc.mn\n*.cn.st\npubtls.org\nputer.app\nputer.site\nputer.work\npythonanywhere.com\neu.pythonanywhere.com\nqa2.com\nqcx.io\n*.sys.qcx.io\nmyqnapcloud.cn\nalpha-myqnapcloud.com\ndev-myqnapcloud.com\nmycloudnas.com\nmynascloud.com\nmyqnapcloud.com\nqoto.io\nqualifioapp.com\nladesk.com\n*.qualyhqpartner.com\n*.qualyhqportal.com\nqbuser.com\n*.quipelements.com\nvapor.cloud\nvaporcloud.io\nrackmaze.com\nrackmaze.net\ncloudsite.builders\nmyradweb.net\nservername.us\nweb.in\nin.net\nmyrdbx.io\nsite.rb-hosting.io\nup.railway.app\n*.on-rancher.cloud\n*.on-k3s.io\n*.on-rio.io\nravpage.co.il\nreadthedocs-hosted.com\nreadthedocs.io\nrhcloud.com\ninstances.spawn.cc\n*.clusters.rdpa.co\n*.srvrless.rdpa.co\nonrender.com\napp.render.com\nreplit.app\nid.replit.app\nfirewalledreplit.co\nid.firewalledreplit.co\nrepl.co\nid.repl.co\nreplit.dev\narcher.replit.dev\nbones.replit.dev\ncanary.replit.dev\nglobal.replit.dev\nhacker.replit.dev\nid.replit.dev\njaneway.replit.dev\nkim.replit.dev\nkira.replit.dev\nkirk.replit.dev\nodo.replit.dev\nparis.replit.dev\npicard.replit.dev\npike.replit.dev\nprerelease.replit.dev\nreed.replit.dev\nriker.replit.dev\nsisko.replit.dev\nspock.replit.dev\nstaging.replit.dev\nsulu.replit.dev\ntarpit.replit.dev\nteams.replit.dev\ntucker.replit.dev\nwesley.replit.dev\nworf.replit.dev\nrepl.run\nresindevice.io\ndevices.resinstaging.io\nadimo.co.uk\nitcouldbewor.se\naus.basketball\nnz.basketball\nsubsc-pay.com\nsubsc-pay.net\ngit-pages.rit.edu\nrocketpreview.app\n*.builtwithrocket.new\nrocky.page\nrub.de\nruhr-uni-bochum.de\nio.noc.ruhr-uni-bochum.de\nxn--90amc.xn--p1acf\nxn--j1aef.xn--p1acf\nxn--j1ael8b.xn--p1acf\nxn--h1ahn.xn--p1acf\nxn--j1adp.xn--p1acf\nxn--c1avg.xn--p1acf\nxn--80aaa0cvac.xn--p1acf\nxn--h1aliz.xn--p1acf\nxn--90a1af.xn--p1acf\nxn--41a.xn--p1acf\nras.ru\nnyat.app\n180r.com\ndojin.com\nsakuratan.com\nsakuraweb.com\nx0.com\n2-d.jp\nbona.jp\ncrap.jp\ndaynight.jp\neek.jp\nflop.jp\nhalfmoon.jp\njeez.jp\nmatrix.jp\nmimoza.jp\nivory.ne.jp\nmail-box.ne.jp\nmints.ne.jp\nmokuren.ne.jp\nopal.ne.jp\nsakura.ne.jp\nsumomo.ne.jp\ntopaz.ne.jp\nnetgamers.jp\nnyanta.jp\no0o0.jp\nrdy.jp\nrgr.jp\nrulez.jp\ns3.isk01.sakurastorage.jp\ns3.isk02.sakurastorage.jp\nsaloon.jp\nsblo.jp\nskr.jp\ntank.jp\nuh-oh.jp\nundo.jp\nrs.webaccel.jp\nuser.webaccel.jp\nwebsozai.jp\nxii.jp\nsquares.net\njpn.org\nkirara.st\nx0.to\nfrom.tv\nsakura.tv\n*.builder.code.com\n*.dev-builder.code.com\n*.stg-builder.code.com\n*.001.test.code-builder-stg.platform.salesforce.com\n*.aa.crm.dev\n*.ab.crm.dev\n*.ac.crm.dev\n*.ad.crm.dev\n*.ae.crm.dev\n*.af.crm.dev\n*.ci.crm.dev\n*.d.crm.dev\n*.pa.crm.dev\n*.pb.crm.dev\n*.pc.crm.dev\n*.pd.crm.dev\n*.pe.crm.dev\n*.pf.crm.dev\n*.w.crm.dev\n*.wa.crm.dev\n*.wb.crm.dev\n*.wc.crm.dev\n*.wd.crm.dev\n*.we.crm.dev\n*.wf.crm.dev\nsandcats.io\nsav.case\nlogoip.com\nlogoip.de\nfr-par-1.baremetal.scw.cloud\nfr-par-2.baremetal.scw.cloud\nnl-ams-1.baremetal.scw.cloud\ncockpit.fr-par.scw.cloud\nddl.fr-par.scw.cloud\ndtwh.fr-par.scw.cloud\nfnc.fr-par.scw.cloud\nfunctions.fnc.fr-par.scw.cloud\nifr.fr-par.scw.cloud\nk8s.fr-par.scw.cloud\nnodes.k8s.fr-par.scw.cloud\nkafk.fr-par.scw.cloud\nmgdb.fr-par.scw.cloud\nrdb.fr-par.scw.cloud\ns3.fr-par.scw.cloud\ns3-website.fr-par.scw.cloud\nscbl.fr-par.scw.cloud\nwhm.fr-par.scw.cloud\npriv.instances.scw.cloud\npub.instances.scw.cloud\nk8s.scw.cloud\ncockpit.nl-ams.scw.cloud\nddl.nl-ams.scw.cloud\ndtwh.nl-ams.scw.cloud\nifr.nl-ams.scw.cloud\nk8s.nl-ams.scw.cloud\nnodes.k8s.nl-ams.scw.cloud\nkafk.nl-ams.scw.cloud\nmgdb.nl-ams.scw.cloud\nrdb.nl-ams.scw.cloud\ns3.nl-ams.scw.cloud\ns3-website.nl-ams.scw.cloud\nscbl.nl-ams.scw.cloud\nwhm.nl-ams.scw.cloud\ncockpit.pl-waw.scw.cloud\nddl.pl-waw.scw.cloud\ndtwh.pl-waw.scw.cloud\nifr.pl-waw.scw.cloud\nk8s.pl-waw.scw.cloud\nnodes.k8s.pl-waw.scw.cloud\nkafk.pl-waw.scw.cloud\nmgdb.pl-waw.scw.cloud\nrdb.pl-waw.scw.cloud\ns3.pl-waw.scw.cloud\ns3-website.pl-waw.scw.cloud\nscbl.pl-waw.scw.cloud\nscalebook.scw.cloud\nsmartlabeling.scw.cloud\ndedibox.fr\nscw.site\nams.scw.site\nwaw.scw.site\nschokokeks.net\ngov.scot\nservice.gov.scot\nmygov.scot\nscrysec.com\nclient.scrypted.io\nfirewall-gateway.com\nfirewall-gateway.de\nmy-gateway.de\nmy-router.de\nspdns.de\nspdns.eu\nfirewall-gateway.net\nmy-firewall.org\nmyfirewall.org\nspdns.org\nseidat.net\nsellfy.store\nminisite.ms\nsenseering.net\nservebolt.cloud\nbiz.ua\nco.ua\npp.ua\nas.sh.cn\nvicp.fun\nyicp.fun\nzicp.fun\nsheezy.games\nmyshopblocks.com\nmyshopify.com\nshopitsite.com\nshopware.shop\nshopware.store\nmo-siemens.io\n1kapp.com\nappchizi.com\napplinzi.com\nsinaapp.com\nvipsinaapp.com\nsiteleaf.net\nsmall-web.org\naeroport.fr\navocat.fr\nchambagri.fr\nchirurgiens-dentistes.fr\nexperts-comptables.fr\nmedecin.fr\nnotaires.fr\npharmacien.fr\nport.fr\nveterinaire.fr\nvp4.me\n*.snowflake.app\n*.privatelink.snowflake.app\nstreamlit.app\nstreamlitapp.com\ntry-snowplow.com\nmafelo.net\nsol.site\nplaystation-cloud.com\nsrht.site\napps.lair.io\n*.stolos.io\n4.at\nmy.at\nmy.de\n*.nxa.eu\nnx.gw\nspawnbase.app\ncustomer.speedpartner.de\nmyspreadshop.at\nmyspreadshop.com.au\nmyspreadshop.be\nmyspreadshop.ca\nmyspreadshop.ch\nmyspreadshop.com\nmyspreadshop.de\nmyspreadshop.dk\nmyspreadshop.es\nmyspreadshop.fi\nmyspreadshop.fr\nmyspreadshop.ie\nmyspreadshop.it\nmyspreadshop.net\nmyspreadshop.nl\nmyspreadshop.no\nmyspreadshop.pl\nmyspreadshop.se\nmyspreadshop.co.uk\nw-corp-staticblitz.com\nw-credentialless-staticblitz.com\nw-staticblitz.com\nbolt.host\nstackhero-network.com\nruns.onstackit.cloud\nstackit.gg\nstackit.rocks\nstackit.run\nstackit.zone\nsryze.cc\nindevs.in\nmusician.io\nnovecore.site\nstatichost.page\nfeedback.ac\nforms.ac\nassessments.cx\ncalculators.cx\nfunnels.cx\npaynow.cx\nquizzes.cx\nresearched.cx\ntests.cx\nsurveys.so\nipfs.storacha.link\nipfs.w3s.link\nstorebase.store\nstrapiapp.com\nmedia.strapiapp.com\nvps-host.net\natl.jelastic.vps-host.net\nnjs.jelastic.vps-host.net\nric.jelastic.vps-host.net\nstreak-link.com\nstreaklinks.com\nstreakusercontent.com\nsoc.srcf.net\nuser.srcf.net\nutwente.io\ntemp-dns.com\nsupabase.co\nrealtime.supabase.co\nstorage.supabase.co\nsupabase.in\nsupabase.net\nsyncloud.it\ndscloud.biz\ndirect.quickconnect.cn\ndsmynas.com\nfamilyds.com\ndiskstation.me\ndscloud.me\ni234.me\nmyds.me\nsynology.me\ndscloud.mobi\ndsmynas.net\nfamilyds.net\ndsmynas.org\nfamilyds.org\ndirect.quickconnect.to\nvpnplus.to\nmytabit.com\nmytabit.co.il\ntabitorder.co.il\ntaifun-dns.de\nerp.dev\nweb.erp.dev\nts.net\n*.c.ts.net\ngda.pl\ngdansk.pl\ngdynia.pl\nmed.pl\nsopot.pl\ntaveusercontent.com\np.tawk.email\np.tawkto.email\ntche.br\nsite.tb-hosting.com\ndirectwp.eu\nec.cc\neu.cc\ngu.cc\nuk.cc\nus.cc\nedugit.io\ns3.teckids.org\ntelebit.app\ntelebit.io\n*.telebit.xyz\nteleport.sh\n*.firenet.ch\n*.svc.firenet.ch\nreservd.com\nthingdustdata.com\ncust.dev.thingdust.io\nreservd.dev.thingdust.io\ncust.disrec.thingdust.io\nreservd.disrec.thingdust.io\ncust.prod.thingdust.io\ncust.testing.thingdust.io\nreservd.testing.thingdust.io\ntickets.io\nt3.storage.dev\nt3.storageapi.dev\narvo.network\nazimuth.network\ntlon.network\ntorproject.net\npages.torproject.net\ntownnews-staging.com\n12hp.at\n2ix.at\n4lima.at\nlima-city.at\n12hp.ch\n2ix.ch\n4lima.ch\nlima-city.ch\ntrafficplex.cloud\nde.cool\n12hp.de\n2ix.de\n4lima.de\nlima-city.de\n1337.pictures\nclan.rip\nlima-city.rocks\nwebspace.rocks\nlima.zone\n*.transurl.be\n*.transurl.eu\nsite.transip.me\n*.transurl.nl\n*.triton.zone\ntunnelmole.net\ntuxfamily.org\ntypedream.app\npro.typeform.com\nuber.space\nhk.com\ninc.hk\nltd.hk\nhk.org\nit.com\numso.co\nunison-services.cloud\nvirtual-user.de\nvirtualuser.de\nobj.ag\nname.pm\nsch.tf\nbiz.wf\nsch.wf\norg.yt\nrs.ba\nbielsko.pl\nurown.cloud\ndnsupdate.info\nus.org\nv.ua\nval.run\nweb.val.run\nvercel.app\nv0.build\nvercel.dev\nvusercontent.net\ntmp.now\nvercel.run\nnow.sh\n2038.io\nv-info.info\nvistablog.ir\ndeus-canvas.com\nvivenushop.com\nvivenushop.dev\nvoorloper.cloud\n*.vultrobjects.com\nwafflecell.com\nwal.app\nwasmer.app\nwebflow.io\nwebflowtest.io\n*.webhare.dev\nhotelwithflight.com\nreserve-online.net\nbook.online\ncprapid.com\npleskns.com\nwp2.host\npdns.page\nplesk.page\ncpanel.site\nwpsquared.site\n*.wadl.top\nremotewd.com\nbox.ca\npages.wiardweb.com\ntoolforge.org\nwmcloud.org\nbeta.wmcloud.org\nwmflabs.org\nhrsn.dev\nis-a.dev\nvps.hrsn.net\nlocalcert.net\nwindsurf.app\nwindsurf.build\ndrive-platform.com\ndrive-platform.io\npanel.gg\ndaemon.panel.gg\nbase44.app\nbase44-sandbox.com\nwixsite.com\nwixstudio.com\neditorx.io\nwixstudio.io\nwix.run\nmesswithdns.com\nwoltlab-demo.com\nmyforum.community\ncommunity-pro.de\ndiskussionsbereich.de\ncommunity-pro.net\nmeinforum.net\naffinitylottery.org.uk\nraffleentry.org.uk\nweeklylottery.org.uk\nwpenginepowered.com\njs.wpenginepowered.com\ngrok.me\n*.xenonconnect.de\nhalf.host\ncistron.nl\ndemon.nl\nxs4all.space\nxtooldevice.com\nyandexcloud.net\nstorage.yandexcloud.net\nwebsite.yandexcloud.net\nsourcecraft.site\nofficial.academy\nyolasite.com\nynh.fr\nnohost.me\nnoho.st\nza.net\nza.org\nzap.cloud\nzeabur.app\n*.zerops.app\nprg1-zerops.zone\n*.zerops.zone\nbss.design\nbasicserver.io\nvirtualserver.io\nenterprisecloud.nu\nzone.id\nnett.to\nzabc.net";
12038
12846
  const HTTP_SCHEME = /^https?:/i;
12039
12847
  let activeHost = null;
@@ -12092,9 +12900,30 @@ async function startBrowserHost(options) {
12092
12900
  const cdp = new CdpPool({ log });
12093
12901
  const views = /* @__PURE__ */ new Map();
12094
12902
  let stateWriter = null;
12903
+ const sessionStore = new BrowserSessionStore({
12904
+ dir: path$1.join(options.userDataDir, "browser"),
12905
+ log
12906
+ });
12907
+ const consentNotifier = new ConsentNotifier({
12908
+ show: options.windowShow,
12909
+ // A banner click NAVIGATES A ROUTE AND NOTHING ELSE. It must not raise the
12910
+ // window: "never steal focus" is the rule for every browser this project
12911
+ // starts (design 11.4), and `window-raise.ts` stays the only module that
12912
+ // decides whether a window comes forward.
12913
+ onAttention: (entryId) => options.window.webContents.send("browser-consent-attention", {
12914
+ entryId
12915
+ }),
12916
+ log
12917
+ });
12918
+ const captureSession = () => {
12919
+ sessionStore.record(
12920
+ captureTabs(registry.list(), registry.activeTab?.tabId ?? null)
12921
+ );
12922
+ };
12095
12923
  const notifyChanged = () => {
12096
12924
  stateWriter?.publishNow();
12097
12925
  options.window.webContents.send("browser-state-changed");
12926
+ captureSession();
12098
12927
  };
12099
12928
  const registry = new TabRegistry(
12100
12929
  (_createOptions, tabId) => {
@@ -12140,6 +12969,7 @@ async function startBrowserHost(options) {
12140
12969
  dir: path$1.join(options.userDataDir, "browser"),
12141
12970
  onChanged: () => {
12142
12971
  options.window.webContents.send("browser-consent-changed");
12972
+ consentNotifier.announce(approvals.pendingEntries());
12143
12973
  },
12144
12974
  log
12145
12975
  });
@@ -12159,8 +12989,16 @@ async function startBrowserHost(options) {
12159
12989
  ownership,
12160
12990
  log,
12161
12991
  onChanged: notifyChanged,
12162
- facts: () => facts
12992
+ facts: () => facts,
12993
+ forgetSiteData: (origin) => clearOriginData(browserSession, origin)
12163
12994
  });
12995
+ const recorded = readSession(sessionStore.filePath, log);
12996
+ host.restoreTabs(recorded);
12997
+ if (recorded.length) {
12998
+ log(
12999
+ `[browser] restored ${recorded.length} tab(s) from ${SESSION_FILENAME}; every restored tab is user-owned and holds no handle (design 7.3)`
13000
+ );
13001
+ }
12164
13002
  const sessionKey = mintSessionKey();
12165
13003
  const server = await startRpcServer({
12166
13004
  key: sessionKey,
@@ -12197,6 +13035,17 @@ async function startBrowserHost(options) {
12197
13035
  agentTabs: () => registry.agentTabCount(),
12198
13036
  sessionCookies: () => restoreReport,
12199
13037
  stop: async () => {
13038
+ const atStop = captureTabs(
13039
+ registry.list(),
13040
+ registry.activeTab?.tabId ?? null
13041
+ );
13042
+ const decision = sessionStore.commitStopCapture(atStop);
13043
+ if (!decision.write) {
13044
+ log(
13045
+ `[browser] not overwriting ${SESSION_FILENAME} at stop: ${decision.reason}`
13046
+ );
13047
+ }
13048
+ sessionStore.flush();
12200
13049
  registry.destroyAll();
12201
13050
  await cdp.close();
12202
13051
  await server.close();
@@ -12267,20 +13116,46 @@ async function startBrowserHost(options) {
12267
13116
  };
12268
13117
  contents.on("will-navigate", onWillNavigate);
12269
13118
  contents.on("will-redirect", onWillNavigate);
13119
+ const notifyChrome = () => {
13120
+ options.window.webContents.send("browser-state-changed");
13121
+ };
13122
+ contents.on("did-start-loading", () => {
13123
+ host.clearLoadFailure(tabId);
13124
+ notifyChrome();
13125
+ });
13126
+ contents.on("did-stop-loading", notifyChrome);
13127
+ contents.on("page-title-updated", notifyChrome);
13128
+ contents.on(
13129
+ "did-fail-load",
13130
+ (_event, code, description, url, isMainFrame) => {
13131
+ if (!isMainFrame) return;
13132
+ if (isReportableLoadFailure(code)) {
13133
+ host.recordLoadFailure(tabId, {
13134
+ code,
13135
+ description,
13136
+ url
13137
+ });
13138
+ }
13139
+ notifyChrome();
13140
+ }
13141
+ );
12270
13142
  contents.on("will-attach-webview", (event) => {
12271
13143
  event.preventDefault();
12272
13144
  log("[browser] refused a webview attachment inside a driven page");
12273
13145
  });
12274
13146
  contents.on("did-navigate", (_event, url) => {
12275
13147
  registry.bumpEpoch(tabId);
13148
+ host.clearLoadFailure(tabId);
12276
13149
  stopLogCapture(contents.id);
12277
13150
  startLogCapture(contents.id);
12278
13151
  log(`[browser] tab ${tabId} navigated to ${url}`);
13152
+ notifyChanged();
12279
13153
  });
12280
13154
  contents.on("did-navigate-in-page", (_event, url, isMainFrame) => {
12281
13155
  if (!isMainFrame) return;
12282
13156
  registry.bumpEpoch(tabId, false);
12283
13157
  log(`[browser] tab ${tabId} navigated in page to ${url}`);
13158
+ notifyChanged();
12284
13159
  });
12285
13160
  contents.on("destroyed", () => {
12286
13161
  const record = registry.get(tabId);
@@ -12289,6 +13164,7 @@ async function startBrowserHost(options) {
12289
13164
  if (token) approvals.forgetDocument(token);
12290
13165
  registry.forget(tabId);
12291
13166
  }
13167
+ host.clearLoadFailure(tabId);
12292
13168
  releaseTab(tabId, contents.id);
12293
13169
  });
12294
13170
  }
@@ -13165,6 +14041,116 @@ class DesktopNotifier {
13165
14041
  notification.show();
13166
14042
  }
13167
14043
  }
14044
+ const DEV_DRIVER_ENV = "LOCAL_OPERATOR_UI_DEV_DRIVER";
14045
+ const DEV_DRIVER_OUT_ENV = "LOCAL_OPERATOR_UI_DEV_DRIVER_OUT";
14046
+ const DEV_DRIVER_ARG = "--lo-dev-driver";
14047
+ const DEV_DRIVER_CAPTURE = "dev-driver-capture";
14048
+ const DEV_DRIVER_FACTS = "dev-driver-facts";
14049
+ const TRUTHY = /* @__PURE__ */ new Set(["1", "true"]);
14050
+ function readOptIn(env) {
14051
+ const raw = env[DEV_DRIVER_ENV];
14052
+ if (raw === void 0 || raw.trim() === "")
14053
+ return { asked: false, value: null };
14054
+ return { asked: true, value: raw.trim() };
14055
+ }
14056
+ function resolveDevDriverArming(input) {
14057
+ const off = (problems = []) => ({
14058
+ armed: false,
14059
+ outDir: null,
14060
+ problems
14061
+ });
14062
+ const optIn = readOptIn(input.env);
14063
+ if (!optIn.asked) return off();
14064
+ if (!TRUTHY.has(optIn.value.toLowerCase())) {
14065
+ return off([
14066
+ `${DEV_DRIVER_ENV}=${optIn.value} is not an opt-in (accepted: 1, true); the renderer dev driver stayed off`
14067
+ ]);
14068
+ }
14069
+ if (input.windowMode !== "headless" && input.windowMode !== "inactive") {
14070
+ return off([
14071
+ `the renderer dev driver refused to arm in a "${input.windowMode}" window; it never raises one, so use --window-mode=headless (or inactive)`
14072
+ ]);
14073
+ }
14074
+ const outDir = input.env[DEV_DRIVER_OUT_ENV]?.trim() ?? "";
14075
+ if (outDir === "" || !outDir.startsWith("/")) {
14076
+ return off([
14077
+ `${DEV_DRIVER_ENV} was set but ${DEV_DRIVER_OUT_ENV} is ${outDir === "" ? "missing" : `"${outDir}"`}; an absolute frames directory is required, so the driver did not arm`
14078
+ ]);
14079
+ }
14080
+ return { armed: true, outDir, problems: [] };
14081
+ }
14082
+ function devDriverArgument(outDir) {
14083
+ return `${DEV_DRIVER_ARG}=${outDir}`;
14084
+ }
14085
+ function describeDevDriverArming(arming) {
14086
+ if (arming.armed) {
14087
+ return `[dev-driver] ARMED; frames are written to ${arming.outDir}`;
14088
+ }
14089
+ if (arming.problems.length === 0) return null;
14090
+ return `[dev-driver] not armed: ${arming.problems.join("; ")}`;
14091
+ }
14092
+ const FRAME_LABEL = /^[a-z0-9][a-z0-9_-]{0,63}$/;
14093
+ function registerDevDriverIPC(options) {
14094
+ const { window, expectedUrl, outDir, identity } = options;
14095
+ fs.mkdirSync(outDir, { recursive: true });
14096
+ const frames = [];
14097
+ function authorize(event) {
14098
+ const owner = window();
14099
+ if (!owner || owner.isDestroyed() || event.sender !== owner.webContents || event.senderFrame !== owner.webContents.mainFrame || !trustedDesktopFrame(event.senderFrame.url, expectedUrl)) {
14100
+ throw new Error("This window cannot use the dev driver.");
14101
+ }
14102
+ return owner;
14103
+ }
14104
+ electron.ipcMain.handle(DEV_DRIVER_FACTS, (event) => {
14105
+ const owner = authorize(event);
14106
+ const bounds = owner.getContentBounds();
14107
+ return {
14108
+ ...identity,
14109
+ title: owner.getTitle(),
14110
+ windowSize: {
14111
+ width: owner.getBounds().width,
14112
+ height: owner.getBounds().height
14113
+ },
14114
+ contentBounds: {
14115
+ width: bounds.width,
14116
+ height: bounds.height
14117
+ },
14118
+ visible: owner.isVisible(),
14119
+ focused: owner.isFocused(),
14120
+ minimized: owner.isMinimized(),
14121
+ frames: [...frames],
14122
+ outDir
14123
+ };
14124
+ });
14125
+ electron.ipcMain.handle(DEV_DRIVER_CAPTURE, async (event, label) => {
14126
+ const owner = authorize(event);
14127
+ if (typeof label !== "string" || !FRAME_LABEL.test(label)) {
14128
+ throw new Error(
14129
+ "Invalid frame label: lowercase letters, digits, dash and underscore only."
14130
+ );
14131
+ }
14132
+ const image2 = await owner.webContents.capturePage();
14133
+ const png = image2.toPNG();
14134
+ const file = path$1.join(outDir, `${label}.png`);
14135
+ fs.writeFileSync(file, png);
14136
+ frames.push(label);
14137
+ const size = image2.getSize();
14138
+ return {
14139
+ label,
14140
+ path: file,
14141
+ bytes: png.byteLength,
14142
+ pixels: { width: size.width, height: size.height },
14143
+ // The CSS viewport at capture time, read from the page rather than
14144
+ // derived from the window: a `BrowserWindow` size includes the
14145
+ // platform's window chrome, so 1380x900 is a 1380x872 viewport on
14146
+ // macOS and a frame labelled from the window would overstate it.
14147
+ viewport: await owner.webContents.executeJavaScript(
14148
+ "({ width: window.innerWidth, height: window.innerHeight, devicePixelRatio: window.devicePixelRatio })",
14149
+ true
14150
+ )
14151
+ };
14152
+ });
14153
+ }
13168
14154
  const lastPickedDirectory = /* @__PURE__ */ new Map();
13169
14155
  function withRememberedDirectory(kind, options, fallbackDirectory) {
13170
14156
  if (options.defaultPath) return options;
@@ -16366,8 +17352,19 @@ function createWindow(initialSession = null, openCatalogue = false) {
16366
17352
  * no single conversation to name, and "no flag at all" already means
16367
17353
  * "restore what you had open" — so it needs a flag of its own rather than
16368
17354
  * sharing that absence.
17355
+ *
17356
+ * AND the renderer dev driver's arming entry, which is the other thing this
17357
+ * app puts in a renderer's argv — usually absent, because it is present only
17358
+ * in a launch that opted in. See `devDriverWebPreferences` above and
17359
+ * `src/main/dev-driver.ts` for what arms a run and what the entry is read by.
17360
+ *
17361
+ * WHY ONE SPREAD AND NOT TWO: both sources write `additionalArguments`, so a
17362
+ * second spread REPLACES the first's array rather than adding to it — and
17363
+ * either one alone still produces a well-formed window, so the loss would be
17364
+ * silent. `rendererArgumentFlags` below concatenates them, and is `{}` when
17365
+ * neither applies, so "adds no option at all" stays literally true.
16369
17366
  */
16370
- ...launchArgumentFlags(initialSession, openCatalogue)
17367
+ ...rendererArgumentFlags(initialSession, openCatalogue)
16371
17368
  }
16372
17369
  });
16373
17370
  if (initialSession) holdPresentUntilConversation(mainWindow2, initialSession);
@@ -16471,7 +17468,7 @@ const reportBackendFailure = (message, fileType) => {
16471
17468
  electron.dialog.showErrorBox("Backend Error", message);
16472
17469
  };
16473
17470
  const windowLaunch = resolveWindowLaunchPlan({
16474
- env: process.env,
17471
+ env: launchEnv,
16475
17472
  argv: process.argv
16476
17473
  });
16477
17474
  for (const problem of windowLaunch.problems) {
@@ -16481,6 +17478,13 @@ for (const problem of windowLaunch.problems) {
16481
17478
  if (windowLaunch.mode !== "normal") {
16482
17479
  console.log(`[window-mode] ${describeWindowLaunch(windowLaunch)}`);
16483
17480
  }
17481
+ const devDriverArming = resolveDevDriverArming({
17482
+ env: launchEnv,
17483
+ windowMode: windowLaunch.mode
17484
+ });
17485
+ const devDriverLine = describeDevDriverArming(devDriverArming);
17486
+ if (devDriverLine) console.log(devDriverLine);
17487
+ const devDriverWebPreferences = devDriverArming.armed && devDriverArming.outDir ? { additionalArguments: [devDriverArgument(devDriverArming.outDir)] } : {};
16484
17488
  let mainWindow = null;
16485
17489
  let activeUpdateService = null;
16486
17490
  const launchTarget = readLaunchTarget(process.argv);
@@ -16493,6 +17497,13 @@ function launchArgumentFlags(initialSession, openCatalogue) {
16493
17497
  if (openCatalogue) return { additionalArguments: [OPEN_CATALOGUE_FLAG] };
16494
17498
  return {};
16495
17499
  }
17500
+ function rendererArgumentFlags(initialSession, openCatalogue) {
17501
+ const flags = [
17502
+ ...launchArgumentFlags(initialSession, openCatalogue).additionalArguments ?? [],
17503
+ ...devDriverWebPreferences.additionalArguments ?? []
17504
+ ];
17505
+ return flags.length > 0 ? { additionalArguments: flags } : {};
17506
+ }
16496
17507
  let queuedSession = null;
16497
17508
  let viewerRecord = null;
16498
17509
  let viewerEndpoint = null;
@@ -16704,6 +17715,18 @@ electron.app.whenReady().then(async () => {
16704
17715
  desktopNotifier,
16705
17716
  (sessionId2) => viewerRecord?.releaseSession(sessionId2)
16706
17717
  );
17718
+ if (devDriverArming.armed && devDriverArming.outDir) {
17719
+ registerDevDriverIPC({
17720
+ window: () => mainWindow,
17721
+ expectedUrl: rendererUrl,
17722
+ outDir: devDriverArming.outDir,
17723
+ identity: {
17724
+ windowMode: windowLaunch.mode,
17725
+ appVersion: electron.app.getVersion(),
17726
+ platform: process.platform
17727
+ }
17728
+ });
17729
+ }
16707
17730
  electron.ipcMain.handle("open-file", async (_, filePath) => {
16708
17731
  try {
16709
17732
  await electron.shell.openPath(filePath);
@@ -17110,6 +18133,11 @@ electron.app.whenReady().then(async () => {
17110
18133
  expectedUrl: rendererUrl,
17111
18134
  appVersion: electron.app.getVersion(),
17112
18135
  userDataDir: electron.app.getPath("userData"),
18136
+ // The launch plan's own answer, forwarded rather than re-derived: the
18137
+ // browser host uses it to suppress consent banners in a run with nobody at
18138
+ // the screen, and re-deciding it there would be a second policy beside
18139
+ // `window-mode.ts`.
18140
+ windowShow: windowLaunch.show,
17113
18141
  log: (message) => logger.info(message, LogFileType.BACKEND)
17114
18142
  });
17115
18143
  } catch (error) {