PageSourceSearch

http://ads.world-fusigi.net/worldfusigi/pc_article_analysis_insert.js

js world-fusigi.net collected 2026-09-28 11:08:23 UTC 23,368 bytes, 573 lines download raw bytes

1jQuery(document).ready(function() {
2  var Lib = {};
3
4// Device
5Lib.Device = {
6  isMobile: function() {
7    return /(?:iPhone|iPad|iPod|Android|Mobile)/.test(navigator.userAgent) === true;
8  }
9};
10
11// Time
12Lib.Time = {
13  now: (new Date()).getTime(),
14  // beginStr, endStr: YYYYMMDD[HH[mm[ss]]]
15  // ex. if (Lib.Time.isInsidePeriod('20190809131200', '20190810000000')) {}
16  isInsidePeriod: function(beginStr, endStr) {
17    var beginNum = beginStr.replace(/[^\d]/g, '');
18    if (beginNum.length < 8) return false;
19    var beginYear = parseInt(beginNum.substr(0, 4), 10);
20    var beginMonth = parseInt(beginNum.substr(4, 2), 10) - 1;
21    var beginDay = parseInt(beginNum.substr(6, 2), 10);
22    var beginHour = parseInt(beginNum.substr(8, 2), 10) || 0;
23    var beginMin = parseInt(beginNum.substr(10, 2), 10) || 0;
24    var beginSec = parseInt(beginNum.substr(12, 2), 10) || 0;
25    var beginDate = (new Date(
26      beginYear,
27      beginMonth,
28      beginDay,
29      beginHour,
30      beginMin,
31      beginSec
32    )).getTime();
33    var endNum = endStr.replace(/[^\d]/g, '');
34    if (endNum.length < 8) return false;
35    var endYear = parseInt(endNum.substr(0, 4), 10);
36    var endMonth = parseInt(endNum.substr(4, 2), 10) - 1;
37    var endDay = parseInt(endNum.substr(6, 2), 10);
38    var endHour = parseInt(endNum.substr(8, 2), 10) || 0;
39    var endMin = parseInt(endNum.substr(10, 2), 10) || 0;
40    var endSec = parseInt(endNum.substr(12, 2), 10) || 0;
41    var endDate = (new Date(
42      endYear,
43      endMonth,
44      endDay,
45      endHour,
46      endMin,
47      endSec
48    )).getTime();
49
50    if (Lib.Time.now < beginDate || endDate < Lib.Time.now) return false;
51    return true;
52  }
53};
54
55Lib.Fif = {
56  uuid: function() {
57    // https://github.com/GoogleChrome/chrome-platform-analytics/blob/master/src/internal/identifier.js
58    let chars = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.split('');
59    for (let i = 0, len = chars.length; i < len; i++) {
60      switch (chars[i]) {
61        case 'x':
62          chars[i] = Math.floor(Math.random() * 16).toString(16);
63          break;
64        case 'y':
65          chars[i] = (Math.floor(Math.random() * 4) + 8).toString(16);
66          break;
67      }
68    }
69    return chars.join('');
70  },
71  write: function(targetClass, content, width, height) {
72    var proc = function() {
73      var elements = document.getElementsByClassName(targetClass);
74      if (elements.length < 1) return;
75      var target = elements[0];
76      var iframe = document.createElement('iframe');
77      iframe.width = width;
78      iframe.height = height;
79      iframe.frameBorder = "0";
80      iframe.scrolling = "no";
81      iframe.marginWidth = 0;
82      iframe.marginHeight = 0;
83      iframe.src = "about:self";
84      target.appendChild(iframe);
85      var doc = iframe.contentWindow.document;
86      doc.open();
87      var d = "";
88      d += '<html><head></head>';
89      d += '<body>';
90      d += content;
91      d += '<script>inDapIF = true;</script>';
92      d += '</body></html>';
93      doc.write(d);
94      doc.close();
95    }
96
97    Lib.attachEventListener(proc);
98  }
99};
100
101Lib.Track = {
102  page: '',
103  generateDomTreeIndex: function(element, text) {
104    var label = text.replace(/"/g, '');
105    var selector = 'a[data-track-label="' + label + '"]';
106    var num = document.querySelectorAll(selector).length;
107    element.setAttribute('data-track-label', label);
108    element.setAttribute('data-track-index', num);
109    return num;
110  },
111  isExternalUrl: function(url) {
112    var match = url.match(/^(?:https?:)\/\/([^\/]+)/);
113    if (match === null || match[1] === document.domain) return false;
114    return true;
115  },
116  begin: function() {
117    var Lib = Lib || {};
118    Lib.Track = Lib.Track || this;
119
120    if (Lib.Track.page === '') return;
121
122    var aElements = document.getElementsByTagName('a');
123    Array.prototype.forEach.call(aElements, function(aElement) {
124      var eventHref = aElement.getAttribute('href') || '';
125      var eventText = (aElement.innerText || aElement.innerHTML || '')
126        .replace(/\r|\n/g, ' ')
127        .replace(/\s+/g, ' ')
128        .trim() + ' (' + eventHref + ')';
129      var eventIndex = Lib.Track.generateDomTreeIndex(aElement, eventText);
130      var eventLabrl = eventText + ' [' + eventIndex + '] ';
131      var eventAction = Lib.Track.page
132                      + (
133                        Lib.Track.isExternalUrl(eventHref)
134                        ? 'External'
135                        : 'Internal'
136                      )
137                      + 'LinkClick';
138      var proc = function(e) {
139        ga('send', 'event', {
140          eventCategory: 'LinkClick',
141          eventAction: eventAction,
142          eventLabel: eventLabrl,
143          transport: 'beacon'
144        });
145      }
146
147      if (aElement.addEventListener) {
148        aElement.addEventListener('click', proc, false);
149      } else if (window.attachEvent) {
150        aElement.attachEvent('onclick', proc);
151      }
152    });
153  },
154  beginAfterLoaded: function(page) {
155    Lib.Track.page = page;
156    var proc = Lib.Track.begin.bind(Lib.Track);
157
158    if (window.addEventListener) {
159      window.addEventListener('load', proc, false);
160    } else if (window.attachEvent) {
161      window.attachEvent('onload', proc);
162    }
163  }
164};
165
166// Policy
167//Lib.Policy = function() {
168//  var instance = null;
169//
170//  Lib.Policy = function() {
171//    if ((this instanceof Lib.Policy) == false) {
172//      throw new Error('Please create instance of Lib.Policy.');
173//    }
174//
175//    return instance;
176//  };
177//
178//  Lib.Policy.prototype = this;
179//  instance = new Lib.Policy();
180//  instance.constructor = Lib.Policy;
181//  instance._isSafe = instance.isSafe();
182//  return instance;
183//};
184//
185//Lib.Policy.prototype.isSafe = function() {
186//  return true;
187//}
188
189// Ads
190Lib.Ads = function(isSafe) {
191  var isSafe = typeof isSafe === 'undefined' ? true : isSafe;
192  if ((this instanceof Lib.Ads) == false) {
193    throw new Error('Please create instance of Lib.Ads.');
194  }
195
196  //var policy = new Lib.Policy();
197  //this._isSafe = (policy._isSafe == true);
198  this._isSafe = true;
199  this._totalRates = 0;
200  this._items = [];
201};
202
203Lib.Ads.prototype.isSafe = function() {
204  return this._isSafe;
205};
206
207Lib.Ads.prototype.add = function(proc, rate, allowSafeOnly) {
208  var allowSafeOnly = typeof allowSafeOnly === 'undefined' ? false : allowSafeOnly;
209  if (this._isSafe == false && allowSafeOnly == true) return;
210  this._totalRates += rate;
211  this._items.push({
212    proc: proc,
213    rate: rate
214  });
215};
216
217Lib.Ads.prototype.run = function() {
218  var proc = null;
219  var limit = 0;
220  var sample = Math.floor(Math.random() * this._totalRates);
221  for (var index in this._items) {
222    var item = this._items[index];
223    limit += item.rate;
224    if (limit <= sample) continue;
225    proc = item.proc;
226    break;
227  }
228  if (proc == null) return;
229  return proc();
230}
231
232// attachEventListener
233Lib.attachEventListener = function(proc) {
234  if (window.addEventListener) {
235    //window.addEventListener('load', proc, false);
236    document.addEventListener('DOMContentLoaded', proc, false);
237  } else if (window.attachEvent) {
238    window.attachEvent('onload', proc);
239  } else {
240    //window.onload = proc;
241  }
242};
243
244
245//Lib.Policy.prototype.isSafe = isSafePage;
246
247Lib.moveIndexPageNum = function() {
248  var proc = function() {
249    var pageNumElements = document.getElementsByClassName('fractional-page');
250    if (pageNumElements.length < 1) return;
251    var pageNavElements = document.getElementsByClassName('normal-pager');
252    if (pageNavElements.length < 1) return;
253    pageNavElements[0].parentElement.appendChild(pageNumElements[0]);
254    pageNumElements[0].setAttribute('style', 'margin-top: 10px;');
255  }
256
257  Lib.attachEventListener(proc);
258};
259
260Lib.moveSinglePageNum = function() {
261  var proc = function() {
262    var pagerElements = document.getElementsByClassName('article-inner-pager');
263    if (pagerElements.length < 2) return;
264    var pageNumElements = pagerElements[1].getElementsByClassName('page-current');
265    if (pageNumElements.length < 1) return;
266    var pageNavElements = pagerElements[1].getElementsByClassName('next');
267    if (pageNavElements.length < 1) return;
268    pageNavElements[0].parentElement.appendChild(pageNumElements[0]);
269    pageNumElements[0].setAttribute('style', 'margin-top: 10px;');
270  }
271
272  Lib.attachEventListener(proc);
273};
274
275Lib.moveHomeBeforePager = function(srcId, ads) {
276  var ads = typeof ads === 'undefined' ? null : ads;
277  var proc = function() {
278    var src = document.getElementById(srcId);
279    if (src == null) return;
280    var elements = document.getElementsByClassName('normal-pager');
281    if (elements.length < 1) return;
282    var dst = elements[0].parentNode;
283    dst.parentNode.insertBefore(src, dst);
284    if (ads == null) return;
285    ads(src);
286  }
287
288  Lib.attachEventListener(proc);
289};
290
291Lib.moveSingleAfterContent = function(srcId, ads, callback) {
292  var ads = typeof ads === 'undefined' ? null : ads;
293  var callback = typeof callback === 'undefined' ? null : callback;
294  var proc = function() {
295    var execCallback = function(src, callback) {
296      if (callback == null) return;
297      callback(src);
298    }
299
300    var src = document.getElementById(srcId);
301    if (src == null) return;
302
303    var moveSingleBeforeStoryLink = function(src, ads) {
304      var getStoryLink = function() {
305        var storyElement = document.getElementById('story_link');
306        if (storyElement !== null) return storyElement;
307        var relatedElement = document.getElementById('kako_link');
308        if (relatedElement !== null) return relatedElement;
309        var externalElement = document.getElementById('out_link');
310        if (externalElement !== null) return externalElement;
311        var shareElements = document.getElementsByClassName('article_share');
312        if (shareElements.length > 0) return shareElements[0];
313        return null;
314      }
315
316      var dst = getStoryLink();
317      if (dst == null) return false;
318      dst.parentNode.insertBefore(src, dst);
319      if (ads == null) return true;
320      ads(src);
321      return true;
322    }
323
324    var moveSingleInnerPagerNext = function(src, ads) {
325      var pager = document.getElementsByClassName('article-inner-pager');
326      if (pager.length < 2) return false;
327      var next = pager[1].getElementsByClassName('next');
328      if (next.length < 1) return false;
329      var dst = next[0].parentNode;
330      dst.parentNode.insertBefore(src, dst);
331      if (ads == null) return true;
332      ads(src);
333      return true;
334    }
335
336    // SP記事最終ページには表示しない
337    //if (moveSingleBeforeStoryLink(src, ads) == true) return execCallback(src, callback);
338    if (moveSingleInnerPagerNext(src, ads) == true) return execCallback(src, callback);
339  }
340
341  Lib.attachEventListener(proc);
342};
343
344
345  // rss_1
346  let ins_rss_style = document.createElement('style');
347  ins_rss_style.innerText = '\
348    div.article-body-outer div.article-body ul li {\
349      list-style-type: none;\
350      list-style-position: outside;\
351      margin-left: 0px;\
352      font-weight: 100;\
353    }\
354    #modernRSS-253 .blogroll-list { \
355      padding: 8px 0px 8px 0px; \
356      border-top: 0px solid #eee; \
357      font-size: 16px;\
358      line-height: 1.3; \
359      font-size: 17px;\
360      border-left: 5px solid #ffdd00;\
361      padding: 0 0 0 10px;\
362      margin-bottom: 15px;\
363      font-weight: normal;\
364      margin-left:0px;\
365    }\
366    .out_link a { color:#0163f9; text-decoration: none;}';
367  // 引用元の下に挿入
368  document.querySelector('.main_content .more_body').insertAdjacentElement('afterbegin',ins_rss_style);
369
370  let ins_rss_div = document.createElement('div');
371  ins_rss_div.id = 'out_link_01';
372  ins_rss_div.class = 'out_link';
373  ins_rss_div.style = 'margin:40px 0 0; line-height:1.7;';
374  ins_rss_div.innerHTML = '<p  style="font-weight:bold; font-size:16px; margin-bottom:16px; color:#000000;">ネットで話題の記事はこちら!</p>\
375  \
376  <div id="modernRSS-253" class="blogroll-channel"></div><br><br><br><br>\
377  ';
378  document.querySelector('.main_content .more_body').insertAdjacentElement('afterbegin',ins_rss_div);
379  let ins_rss_script = document.createElement('script');
380  ins_rss_script.src = '//rss.solty.biz/253.js';
381  document.querySelector('#out_link_01').insertAdjacentElement('afterbegin',ins_rss_script);
382
383  // twitterを記事中に埋め込み
384  // let twitter_html = '<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">🎊不思議net夏のプレゼント企画・第②段🎊<br><br>✨Amazonギフト券¥10,000✨<br>Eメールタイプ1⃣名様に <a href="https://twitter.com/hashtag/%E3%83%97%E3%83%AC%E3%82%BC%E3%83%B3%E3%83%88?src=hash&amp;ref_src=twsrc%5Etfw">#プレゼント</a><br><br>【応募方法】<br>1⃣このアカウントを(<a href="https://twitter.com/fusigi_net?ref_src=twsrc%5Etfw">@fusigi_net</a>)フォロー<br>2⃣本投稿をRT<br><br>【締切】<br>8月20日(日)<br>当選はDM✉️ <a href="https://t.co/YD99gg2XN8">pic.twitter.com/YD99gg2XN8</a></p>&mdash; 不思議.net - 5ちゃん(2ちゃん)まとめ (@fusigi_net) <a href="https://twitter.com/fusigi_net/status/1686199222457303040?ref_src=twsrc%5Etfw">August 1, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>';
385  // let twitter_br = '<br><br><br><br>';
386  // let ins_twitter_script = document.createElement('script');
387  // ins_twitter_script.src = 'https://platform.twitter.com/widgets.js';
388  // ins_twitter_script.charset = 'utf-8';
389  // document.querySelector('#out_link_01').insertAdjacentHTML('afterend',twitter_html + twitter_br);
390  // document.querySelector('#out_link_01').insertAdjacentElement('afterend',ins_twitter_script);
391
392  // 記事内
393  var article_ad_interval = 0;
394  var article_ad_count = 0;
395  Array.prototype.some.call(
396    document.querySelectorAll('.more_body div.t_b + br, .more_body .twitter-tweet'),
397    function(article_ad_element) {
398      article_ad_interval += article_ad_element.classList.contains('twitter-tweet') ? 2 : 1;
399      if (article_ad_interval < 10) return;
400      article_ad_interval = 0;
401      article_ad_count += 1;
402      createArticleAdsense(article_ad_element, article_ad_count);
403      if (article_ad_count >= 20) return true;
404    }
405  );
406
407  function createArticleIMobile(el,ad_cnt){
408    const imobile_ads = [
409      {'adid':'1716128','divid':'im-77bf576eeb1849f3a8c0a182e5bf6c41'},
410      {'adid':'1716129','divid':'im-a6eb73ba2d0f4190a55e38e12f12d778'},
411      {'adid':'1716130','divid':'im-60dd536fd8bb44bea1b3e47bc71838de'},
412      {'adid':'1716131','divid':'im-99cc59d54333486582dbd6646301710a'},
413      {'adid':'1716132','divid':'im-8842473fe09748848a7c001bd543dcaf'},
414      {'adid':'1716133','divid':'im-89f5d2849b664b19a1454e9dcb92d22f'},
415      {'adid':'1716134','divid':'im-f376783ef2fb408ba4b29f3525e72965'},
416      {'adid':'1716135','divid':'im-f5a4a8185dec4549b5b80254fea4bc48'},
417      {'adid':'1716136','divid':'im-6bdde4e23c3d4a59a86ecdb60dc3e135'},
418      {'adid':'1716137','divid':'im-5aaade1a67854c70b873ac53e93c4486'},
419      {'adid':'1716138','divid':'im-3145a116d97343e489d7e015dac2f5df'},
420      {'adid':'1716139','divid':'im-6d82f979e49247008ce1281191737cfb'},
421      {'adid':'1716140','divid':'im-33e4ec2ad2eb4ccb9a79fdbcc9e79b29'},
422      {'adid':'1716141','divid':'im-75dd245147904ecea55ac4f166079a23'},
423      {'adid':'1716142','divid':'im-8d3586f10fb244b8a87bf4e7a6c2388f'},
424      {'adid':'1716143','divid':'im-f5ea29fa4c004e4085c9f8bb9696e156'},
425      {'adid':'1718806','divid':'im-27baff617af346d0aa57191df1732a71'},
426      {'adid':'1718807','divid':'im-81f861682d4f40f586c52ddfda31f589'},
427      {'adid':'1718808','divid':'im-89faa521d99a43f1a2efe32c75262588'},
428      {'adid':'1718809','divid':'im-3f7996963d194c9882b4888993efc0a0'},
429      {'adid':'1718810','divid':'im-8e9a4ba8db8940e9b9c5c0f09c03fb7b'},
430      {'adid':'1718811','divid':'im-dcfc29931ae74ce99870b6b3807ad7b7'},
431      {'adid':'1718812','divid':'im-b655ada0b4c2456bb69f7a5c337677f8'},
432      {'adid':'1718813','divid':'im-8bc20349f0644ba3837276a5b0ffac0f'},
433      {'adid':'1718814','divid':'im-e36cd5c63a1d4a8d9d2f5f5b360c27a4'},
434      {'adid':'1718815','divid':'im-cf9ed81bb6a14890a2b4c0258be70101'},
435      {'adid':'1718816','divid':'im-6838ce4ef8714a9486fd8994f02ee308'},
436      {'adid':'1718817','divid':'im-4e7196d3ac0c46c381fcaa93f7ebcbf6'},
437      {'adid':'1718818','divid':'im-5ba528eb8900418588d095776a474f80'},
438      {'adid':'1718819','divid':'im-f5e242c85b5f4558b48e7cbeb6cf18ee'},
439      {'adid':'1718820','divid':'im-0c5bbeb1ada34c4595eb05660a4b8768'},
440      {'adid':'1718821','divid':'im-a37e2885d7ac4059baa67da9c346f651'},
441      {'adid':'1718822','divid':'im-40c12d8331e340acad5898356fab77e0'},
442      {'adid':'1718823','divid':'im-cc20a1d5bca4430db69ab76a14ab2b8c'},
443      {'adid':'1718824','divid':'im-0e7cd6a0e2b0407ea5141ec5871a64c0'},
444      {'adid':'1718825','divid':'im-84a1f3b56486440aa27a430b89e04f42'},
445      {'adid':'1718826','divid':'im-d3a503b5266c42fab6b4fce19d84224c'},
446      {'adid':'1718827','divid':'im-52fd5ab10fb744ea8ab42ac9f136a65f'},
447      {'adid':'1718828','divid':'im-1b918a9cd31c41148dba42c1f7647ebc'},
448      {'adid':'1718829','divid':'im-3fdf738b7c7a41f491115bf0c35f5205'},
449    ];
450
451    // base div
452    let base_div = document.createElement('div');
453    base_div.id = 'js-pc-article-' + ( '00' + ad_cnt ).slice( -2 );
454    el.insertAdjacentElement('afterend', base_div);
455
456    // left
457    let imobile_left_div_id = imobile_ads[(ad_cnt * 2) -2]['divid'];
458    let imobile_left_ad_id = imobile_ads[(ad_cnt * 2) -2]['adid'];
459
460    let imobile_left_div = document.createElement('div');
461    imobile_left_div.id = imobile_left_div_id;
462    base_div.insertAdjacentElement('beforeend', imobile_left_div);
463
464    let imobile_left_script_1 = document.createElement('script');
465    imobile_left_script_1.src = '//imp-adedge.i-mobile.co.jp/script/v1/spot.js?20181121';
466    imobile_left_div.insertAdjacentElement('afterbegin', imobile_left_script_1);
467    let imobile_left_script_2 = document.createElement('script');
468    imobile_left_script_2.innerText = '(window.adsbyimobile=window.adsbyimobile||[]).push({pid:44464,mid:213883,asid:'+ imobile_left_ad_id +',type:"banner",display:"inline",elementid:"'+ imobile_left_div_id +'"})';
469    imobile_left_div.insertAdjacentElement('afterbegin', imobile_left_script_2);
470
471    // right
472    let imobile_right_div_id = imobile_ads[(ad_cnt * 2) -1]['divid'];
473    let imobile_right_ad_id = imobile_ads[(ad_cnt * 2) -1]['adid'];
474
475    let imobile_right_div = document.createElement('div');
476    imobile_right_div.id = imobile_right_div_id;
477    base_div.insertAdjacentElement('beforeend', imobile_right_div);
478
479    let imobile_right_script_1 = document.createElement('script');
480    imobile_right_script_1.src = '//imp-adedge.i-mobile.co.jp/script/v1/spot.js?20181121';
481    imobile_right_div.insertAdjacentElement('afterbegin', imobile_right_script_1);
482    let imobile_right_script_2 = document.createElement('script');
483    imobile_right_script_2.innerText = '(window.adsbyimobile=window.adsbyimobile||[]).push({pid:44464,mid:213883,asid:'+ imobile_right_ad_id +',type:"banner",display:"inline",elementid:"'+ imobile_right_div_id +'"})';
484    imobile_right_div.insertAdjacentElement('afterbegin', imobile_right_script_2);
485  }
486  
487  function createArticleAdsense(el,ad_cnt){
488    const adsense_ads = [
489      ['div-gpt-ad-1654088670857-0', 'div-gpt-ad-1654088703691-0'], // 01_left, 01_right
490      ['div-gpt-ad-1654090673203-0', 'div-gpt-ad-1654090700310-0'], // 02_left, 02_right
491      ['div-gpt-ad-1654090733781-0', 'div-gpt-ad-1654090754978-0'], // 03_left, 03_right
492      ['div-gpt-ad-1654090775183-0', 'div-gpt-ad-1654090795105-0'], // 04_left, 04_right
493      ['div-gpt-ad-1654090813282-0', 'div-gpt-ad-1654090834051-0'], // 05_left, 05_right
494      ['div-gpt-ad-1654090855014-0', 'div-gpt-ad-1654090873814-0'], // 06_left, 06_right
495      ['div-gpt-ad-1654090894887-0', 'div-gpt-ad-1654090914018-0'], // 07_left, 07_right
496      ['div-gpt-ad-1654090935463-0', 'div-gpt-ad-1654090957697-0'], // 08_left, 08_right
497      ['div-gpt-ad-1654090979055-0', 'div-gpt-ad-1654091000953-0'], // 09_left, 09_right
498      ['div-gpt-ad-1654091059021-0', 'div-gpt-ad-1654091078066-0'], // 10_left, 10_right
499      ['div-gpt-ad-1654091095111-0', 'div-gpt-ad-1654091111913-0'], // 11_left, 11_right
500      ['div-gpt-ad-1654091128684-0', 'div-gpt-ad-1654091148230-0'], // 12_left, 12_right
501      ['div-gpt-ad-1654091167731-0', 'div-gpt-ad-1654091183705-0'], // 13_left, 13_right
502      ['div-gpt-ad-1654091201632-0', 'div-gpt-ad-1654091220049-0'], // 14_left, 14_right
503      ['div-gpt-ad-1654091235933-0', 'div-gpt-ad-1654091251608-0'], // 15_left, 15_right
504      ['div-gpt-ad-1654091270405-0', 'div-gpt-ad-1654091288328-0'], // 16_left, 16_right
505      ['div-gpt-ad-1654091304608-0', 'div-gpt-ad-1654091326899-0'], // 17_left, 17_right
506      ['div-gpt-ad-1654091346219-0', 'div-gpt-ad-1654091362576-0'], // 18_left, 
50618_right
507      ['div-gpt-ad-1654091382076-0', 'div-gpt-ad-1654091400983-0'], // 19_left, 19_right
508      ['div-gpt-ad-1654091471518-0', 'div-gpt-ad-1654091491038-0'], // 20_left, 20_right
509    ];
510
511    // base div
512    const ad_idx = ad_cnt - 1;
513    const ad_num = ( '00' + ad_cnt ).slice( -2 );
514    let my_id = 'js-pc-article-' + ad_num;
515    let ins_ad_div = document.createElement('div');
516    ins_ad_div.id = my_id;
517    el.insertAdjacentElement('afterend', ins_ad_div);
518
519    // left
520    const left_slot_id = adsense_ads[ad_idx][0];
521    let ins_left_ad_div = document.createElement('div');
522    ins_left_ad_div.id = my_id + '-left';
523    const ins_left_ad_slot = document.createElement('div');
524    ins_left_ad_slot.id = left_slot_id;
525    ins_left_ad_div.insertAdjacentElement('beforeend', ins_left_ad_slot);
526    let ins_left_ad_script = document.createElement('script');
527    ins_left_ad_script.type = 'text/javascript';
528    ins_left_ad_script.innerText = '\
529    googletag.cmd.push(function () {\
530      googletag.pubads().disableInitialLoad();\
531      googletag.enableServices();\
532      var lines = [\
533          {\
534          code: "/21692532096/worldfusigi_pc_article_' + ad_num + '_left",\
535          sizes: [[300, 250],[336, 280]],\
536          divId: "' + left_slot_id + '",\
537          isAps: true\
538          }\
539      ];\
540      window.fluxtag.enableLazyLoad(lines);\
541    });';
542
543    ins_ad_div.insertAdjacentElement('beforeend', ins_left_ad_div);
544    ins_ad_div.insertAdjacentElement('beforeend', ins_left_ad_script);
545
546    // right
547    const right_slot_id = adsense_ads[ad_idx][1];
548    let ins_right_ad_div = document.createElement('div');
549    ins_right_ad_div.id = my_id + '-right';
550    const ins_right_ad_slot = document.createElement('div');
551    ins_right_ad_slot.id = right_slot_id;
552    ins_right_ad_div.insertAdjacentElement('beforeend', ins_right_ad_slot);
553    let ins_right_ad_script = document.createElement('script');
554    ins_right_ad_script.type = 'text/javascript';
555    ins_right_ad_script.innerText = '\
556    googletag.cmd.push(function () {\
557      googletag.pubads().disableInitialLoad();\
558      googletag.enableServices();\
559      var lines = [\
560          {\
561          code: "/21692532096/worldfusigi_pc_article_' + ad_num + '_right",\
562          sizes: [[300, 250],[336, 280]],\
563          divId: "' + right_slot_id + '",\
564          isAps: true\
565          }\
566      ];\
567      window.fluxtag.enableLazyLoad(lines);\
568    });';
569
570    ins_ad_div.insertAdjacentElement('beforeend', ins_right_ad_div);
571    ins_ad_div.insertAdjacentElement('beforeend', ins_right_ad_script);
572  }
573});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.