ent.target.parentElement.innerText >= 1 || event.target.parentElement.innerText <= 3) {
      (this.activePage as number) = +event.target.parentElement.innerText;
      this.clearActive();
      this.renderer.addClass(event.target.parentElement, 'active');
    }
    this.first = +this.activePage * 4 - 4 + 1;
    this.last = +this.activePage * 4;
  }

  constructor(private renderer: Renderer2) {
    for (let i = 0; i <= 15; i++) {
      this.allPosts.push({id: i, title: 'Post ' + i});
    }
   }

  ngAfterViewInit() {
    this.clearActive();
    this.renderer.addClass(this.pages.first.nativeElement, 'active');
    this.activePage = 1;
    this.first = +this.activePage * 4 - 4 + 1;
    this.last = +this.activePage * 4;
  }

  clearActive() {
    this.pages.forEach(element => {
      this.renderer.removeClass(element.nativeElement, 'active');
    });
  }

  firstPage() {
    this.clearActive();
    const firstPage = this.pages.first.nativeElement;
    (this.activePage as number) = +firstPage.innerText;
    this.clearActive();
    this.renderer.addClass(firstPage, 'active');

    this.first = +this.activePage * 4 - 4 + 1;
    this.last = +this.activePage * 4;
    console.log(this.activePage);
  }

  lastPage() {
    this.clearActive();
    const lastPage = this.pages.last.nativeElement;
    (this.activePage as number) = +lastPage.innerText;
    this.clearActive();
    this.renderer.addClass(lastPage, 'active');

    this.first = +this.activePage * 4 - 4 + 1;
    this.last = +this.activePage * 4;
    console.log(this.activePage);

  }

}
import { Instruction } from './instruction';

describe('Instruction', () => {
  it('should create an instance', () => {
    let i = new Instruction("Get Bacon");
    expect(i).toBeTruthy();
    expect(i.instruction).toEqual("Get Bacon");
  });
  it('should take suggestions', () => {
    let i = new Instruction("Get Bacon");
    i.addSuggestion("Get thick cut bacon instead");
    i.addSuggestion("Skip the bacon");
    expect(i.suggestions).toEqual(["Get thick cut bacon instead", "Skip the bacon"]);
  });
});
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
//@ts-ignore
class TreeNode {
  val: number
  left: TreeNode | null
  right: TreeNode | null
  constructor(val?: number, left?: TreeNode | null, right?: TreeNode | null) {
    this.val = val === undefined ? 0 : val
    this.left = left === undefined ? null : left
    this.right = right === undefined ? null : right
  }
}

function pathSum(root: TreeNode | null, targetSum: number): number[][] {
  const res: number[][] = []
  if (!root) {
    return res
  }

  const recursive = (
    child: TreeNode = root,
    currentSum = 0,
    values: number[] = []
  ) => {
    if (!child) {
      return
    }

    currentSum += child.val
    values.push(child.val)

    if (child.left === null && child.right === null) {
      if (currentSum === targetSum) {
        res.push([...values])
      }
      return
    }

    if (child.left) {
      recursive(child.left, currentSum,


 {
            self.remove_l3d(window);
        }
    }

    fn init_config(&mut self, window: &mut Window, config: LorenzConfig) {
        self.clear(window);
        match config {
            LorenzConfig::One => {
                self.l3ds.push(Lorenz3d::new(window)
                    .with_pos(0.1, 0.1, 0.1)
                    .with_color(1.0, 1.0, 1.0));
            },
            LorenzConfig::Two => {
                self.l3ds.push(Lorenz3d::new(window)
                    .with_pos(0.1, 0.1, 0.1)
                    .with_color(1.0, 0.0, 0.0));
                self.l3ds.push(Lorenz3d::new(window)
                    .with_pos(0.1000001, 0.1, 0.1)
                    .with_color(1.0, 0.0, 1.0));
            }
        }
    }

    fn add_random_l3d(&mut self, window: &mut Window) {
        let rng = &mut self.rng;
        let scale = 20.0;
        let ofs = -10.0;
        let l3d = Lorenz3d::new(window)
            .with_pos(
                ofs + rng.gen::<f64>() * scale,
                ofs + rng.gen::<f64>() * scale,
                ofs + rng.gen::<f64>() * scale
            )
            .with_color(rng.gen(), rng.gen(), rng.gen());
        self.l3ds.push(l3d);
    }

    fn remove_l3d(&mut self, window: &mut Window) {
        if let Some(mut l3d) = self.l3ds.pop() {
            l3d.remove(window);
        }
    }

    fn draw_help(&self, window: &mut Window) {
        let mut y = 8.0;
        for line in HELP_LINES.iter() {
            window.draw_text(
                line,
                &Point2::new(8.0, y),
                36.0,
                &self.font,
                &Point3::new(1.0, 1.0, 1.0)
            );
            y += 40.0;
        }
    }

    fn execute_action(&mut self, action: AppAction, window: &mut Window) {
        match action {
            AppAction::InitConfig(cfg) => self.init_config(window, cfg),
            AppAction::ToggleHelp => self.show_help = !self.show_help,
            AppAction::AddObj => self.add_random_l3d(window),
            AppAction::RemoveObj => self.remove_l3d(window)
        }
    }
}

impl State for AppState {
    fn step(&mut self, window: &mut Window) {
        #[cfg(target_arch = "wasm32")]
        {
            if let Some(action) = check_action_from_js() {
                self.execute_action(action, window);
            }
        }

        for mut event in window.events().iter() {
            match event.value {
                WindowEvent::Key(button, Action::Press, _) => {
                    if let Some(action) = AppAction::from_key(button) {
                        event.inhibited = true;
                        self.execute_action(action, window);
                    }
                },
                _ => {}
            }
        }
        for l3d in self.l3ds.iter_mut() {
            l3d.step(window);
        }
        if self.show_help {
            self.draw_help(window);
        }
    }
}

#[cfg(target_arch = "wasm32")]
static mut ACTION_FROM_JS: Option<AppAction> = None;

#[cfg(target_arch = "wasm32")]
fn check_action_from_js() -> Option<AppAction> {
    let result;
    unsafe {
        result = ACTION_FROM_JS;


  1.3793e-04, -1.4932e-04, -3.9645e-04,  3.6473e-05, -1.7224e-04, -4.5370e-05, -4.8950e-04, -4.3059e-04,  1.0451e-04, -1.0485e-03, -6.0410e-04,  1.6990e-04, -2.1997e-04, -3.8769e-04, -7.6898e-04, -3.2372e-04, -1.9783e-04,  5.2896e-05, -1.0586e-03, -7.8516e-04,  7.6867e-04, -8.5331e-05, -4.8158e-04, -4.5362e-05, -1.0770e-04,  6.6823e-04,  3.0765e-04,  3.3669e-04,  9.5677e-04, 1.0458e-03,  5.8129e-04,  3.3737e-04,  1.0816e-03,  7.0346e-04, 4.2378e-04,  4.3131e-04,  2.8095e-04,  1.2201e-03,  5.6121e-04, -1.1086e-04,  4.9908e-04,  1.5586e-04,  4.2046e-04, -2.8088e-04, -2.2462e-04, -1.5539e-04, -7.0126e-04, -2.8577e-04, -3.3693e-04, -1.2471e-04, -6.9104e-04, -1.2867e-03, -6.2651e-04, -2.5586e-04, -1.3201e-04, -9.4537e-04, -4.8438e-04,  4.1458e-04,  6.4109e-04, 1.0891e-04, -6.3764e-04,  4.5573e-04,  8.2974e-04,  3.2973e-06, -3.8274e-04, -2.0400e-04,  4.9922e-04,  2.1508e-04, -1.1009e-04, -3.9763e-05,  3.0576e-04,  3.1485e-05, -2.7574e-05,  3.3856e-04],
            ],
            device=torch_device,
        )
        # fmt: on

        torch.testing.assert_close(waveform[0, :100], expected_waveform, rtol=1e-4, atol=1e-4)
        self.assertEqual(waveform.shape, (1, 52480))


tbody>tr.selected:hover>.sorting_2,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_2{background-color:#026cc8}table.dataTable.display tbody>tr.selected:hover>.sorting_3,table.dataTable.order-column.hover tbody>tr.selected:hover>.sorting_3{background-color:#026eca}table.dataTable.display tbody>tr:hover>.selected,table.dataTable.display tbody>tr>.selected:hover,table.dataTable.order-column.hover tbody>tr:hover>.selected,table.dataTable.order-column.hover tbody>tr>.selected:hover{background-color:#026bc6}table.dataTable tbody td.select-checkbox,table.dataTable tbody th.select-checkbox{position:relative}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody td.select-checkbox:after,table.dataTable tbody th.select-checkbox:before,table.dataTable tbody th.select-checkbox:after{display:block;position:absolute;top:1.2em;left:50%;width:12px;height:12px;box-sizing:border-box}table.dataTable tbody td.select-checkbox:before,table.dataTable tbody th.select-checkbox:before{content:' ';margin-top:-6px;margin-left:-6px;border:1px solid black;border-radius:3px}table.dataTable tr.selected td.select-checkbox:after,table.dataTable tr.selected th.select-checkbox:after{content:'\2714';margin-top:-11px;margin-left:-4px;text-align:center;text-shadow:1px 1px #B0BED9, -1px -1px #B0BED9, 1px -1px #B0BED9, -1px 1px #B0BED9}div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0.5em}@media screen and (max-width: 640px){div.dataTables_wrapper span.select-info,div.dataTables_wrapper span.select-item{margin-left:0;display:block}}table.dataTable tbody tr.selected,table.dataTable tbody th.selected,table.dataTable tbody td.selected{color:white}table.dataTable tbody tr.selected a,table.dataTable tbody th.selected a,table.dataTable tbody td.selected a{color:#a2d4ed}

@import url(http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700);a{font-size:.95em;text-decoration:none;color:#5f90b0}a:hover{color:#406882}*{margin:0;padding:0;font-family:"Source Sans Pro",sans-serif}.container{width:1000px;margin:0 auto}.pull-left{float:left}.pull-right{float:right}.row{min-height:2em;line-height:2em;width:100%}.span{float:left;display:inline;min-height:1em;margin:0 2% 20px 2%}.span:first-child{margin-left:0}.span:last-child{margin-right:0}.one{width:8%}.two{width:16%}.three{width:24%}.four{width:32%}.five{width:40%}.six{width:48%}.seven{width:56%}.eight{width:64%}.nine{width:72%}.ten{width:80%}.eleven{width:88%}.twelve{width:100%}.container:after{content:"\0020";display:block;height:0;clear:both;visibility:hidden}.row:before,.row:after{content:'\0020';display:block;overflow:hidden;visibility:hidden;width:0;height:0}.row:after{clear:both}.row{zoom:1}h1,h2,h3,h4,h5,h6{font-weight:500}h1{font-size:3.5em}h2{font-size:2.


 nil
}

func (w *readinessWorker) DoProbe(ctx *proberctx.ProbeContext) error {
	res, err := w.runProbe(ctx)
	if err != nil {
		ctx.Logger.Error(err, "readiness probe fails", "result", res)
	}
	return w.ProcessProbeResult(ctx, res, err)
}

// getProbe returns a specific type of probe method.
func (w *readinessWorker) getProbe(probeSpec *vmopv1.VirtualMachineReadinessProbeSpec) probe.Probe {
	if probeSpec == nil {
		return nil
	}

	if probeSpec.TCPSocket != nil {
		return w.prober.TCPProbe
	}
	if probeSpec.GuestHeartbeat != nil {
		return w.prober.GuestHeartbeat
	}
	if len(probeSpec.GuestInfo) != 0 {
		return w.prober.GuestInfo
	}

	return nil
}

// runProbe runs a specific type of probe based on the VM probe spec.
func (w *readinessWorker) runProbe(ctx *proberctx.ProbeContext) (probe.Result, error) {
	if p := w.getProbe(ctx.VM.Spec.ReadinessProbe); p != nil {
		return p.Probe(ctx)
	}

	return probe.Unknown, fmt.Errorf("unknown action specified for VM %s readiness probe", ctx.VM.NamespacedName())
}

// getCondition returns condition based on VM probe results.
func (w *readinessWorker) getCondition(res probe.Result, err error) *metav1.Condition {
	msg := ""
	if err != nil {
		msg = err.Error()
	}

	switch res {
	case probe.Success:
		return conditions.TrueCondition(vmopv1.ReadyConditionType)
	case probe.Failure:
		return conditions.FalseCondition(vmopv1.ReadyConditionType, notReadyReason, "%s", msg)
	default: // probe.Unknown
		return conditions.UnknownCondition(vmopv1.ReadyConditionType, unknownReason, "%s", msg)
	}
}
// © Broadcom. All Rights Reserved.
// The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
// SPDX-License-Identifier: Apache-2.0

package crypto

import (
	"context"

	"github.com/vmware/govmomi/fault"
	"github.com/vmware/govmomi/vim25/mo"
	vimtypes "github.com/vmware/govmomi/vim25/types"

	vmopv1 "github.com/vmware-tanzu/vm-operator/api/v1alpha5"
	"github.com/vmware-tanzu/vm-operator/pkg/vmconfig/crypto/internal"
)

//nolint:gocyclo
func (r reconciler) OnResult(
	ctx context.Context,
	vm *vmopv1.VirtualMachine,
	_ mo.VirtualMachine,
	resultErr error) error {

	if resultErr == nil {
		return nil
	}

	if ctx == nil {
		panic("context is nil")
	}
	if vm == nil {
		panic("vm is nil")
	}

	state := internal.FromContext(ctx)

	// Determine the message to put on the condition.
	var msgs []string

	//
	// At this point we know that a reconfigure error occurred *and* there was
	// a crypto update in the ConfigSpec. It is time to parse the reconfigErr
	// to determine if it was related to the crypto update.
	//

	fault.In(
		resultErr,
		func(
			fault vimtypes.BaseMethodFault,
			localizedMessage string,
			localizableMessages []vimtypes.LocalizableMessage) bool {

			switch tErr := fault.(type) {
			case *vimtypes.GenericVmConfigFault:
				for i := range localizableMessages {
					switch localizableMessages[i].Key {
					case "msg.vigor.enc.keyNotFound":
						msgs = append(msgs, "specify a valid key")
					case "msg.keysafe.locator":
						ms


share, bufferSize, options, expectedSecurity))
            {
                Assert.True(fileInfo.Exists);
                tempRootDir.CreatedSubfiles.Add(fileInfo);

                var actualFileInfo = new FileInfo(path);
                FileSecurity actualSecurity = actualFileInfo.GetAccessControl();

                if (expectedSecurity != null)
                {
                    VerifyAccessSecurity(expectedSecurity, actualSecurity);
                }
                else
                {
                    int count = actualSecurity.GetAccessRules(includeExplicit: true, includeInherited: false, typeof(SecurityIdentifier)).Count;
                    Assert.Equal(0, count);
                }
            }
        }

        private void Verify_DirectorySecurity_CreateDirectory(DirectorySecurity expectedSecurity)
        {
            using var tempRootDir = new TempAclDirectory();
            string path = tempRootDir.GenerateSubItemPath();
            DirectoryInfo dirInfo = expectedSecurity.CreateDirectory(path);
            Assert.True(dirInfo.Exists);
            tempRootDir.CreatedSubdirectories.Add(dirInfo);

            var actualDirInfo = new DirectoryInfo(path);
            DirectorySecurity actualSecurity = actualDirInfo.GetAccessControl(AccessControlSections.Access);

            VerifyAccessSecurity(expectedSecurity, actualSecurity);
        }

        private DirectorySecurity GetDirectorySecurity(FileSystemRights rights)
        {
            var security = new DirectorySecurity();
            var identity = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
            var accessRule = new FileSystemAccessRule(identity, rights, AccessControlType.Allow);
            security.AddAccessRule(accessRule);
            return security;
        }

        private FileSecurity GetFileSecurity(FileSystemRights rights)
        {
            var security = new FileSecurity();
            var ident


using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Caching.Memory;

namespace MrCMS.Website.Caching
{
    public abstract class CacheManagerBase<TMemoryCache> where TMemoryCache : IMemoryCache
    {
        protected readonly TMemoryCache Cache;

        public CacheManagerBase(TMemoryCache cache)
        {
            Cache = cache;
        }

        public T Get<T>(string key)
        {
            return Cache.Get<T>(key);
        }

        public T GetOrCreate<T>(string key, Func<T> func, TimeSpan time, CacheExpiryType cacheExpiryType,
            CacheItemPriority priority = CacheItemPriority.Normal)
        {
            if (time <= TimeSpan.Zero || string.IsNullOrWhiteSpace(key))
            {
                return func();
            }

            return Cache.GetOrCreate(key, entry =>
            {
                var value = func();
                switch (cacheExpiryType)
                {
                    case CacheExpiryType.Sliding:
                        entry.SlidingExpiration = time;
                        break;
                    case CacheExpiryType.Absolute:
                        entry.AbsoluteExpirationRelativeToNow = time;
                        break;
                }

                entry.Value = value;
                entry.SetPriority(priority);
                return (T) entry.Value;
            });
        }

        public async Task<T> GetOrCreateAsync<T>(string key, Func<Task<T>> func, TimeSpan time,
            CacheExpiryType cacheExpiryType,


>());
    testJournaledStringIteratorSum(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

SEQAN_DEFINE_TEST(test_sequence_journaled_sorted_array_iterator_relations)
{
    testJournaledStringIteratorRelations(Alloc<void>(), SortedArray(), Alloc<void>());
    testJournaledStringIteratorRelations(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

SEQAN_DEFINE_TEST(test_sequence_journaled_sorted_array_iterator_decrement)
{
    testJournaledStringIteratorDecrement(Alloc<void>(), SortedArray(), Alloc<void>());
    testJournaledStringIteratorDecrement(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

SEQAN_DEFINE_TEST(test_sequence_journaled_sorted_array_iterator_set_position)
{
    testJournaledStringIteratorSetPosition(Alloc<void>(), SortedArray(), Alloc<void>());
    testJournaledStringIteratorSetPosition(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

SEQAN_DEFINE_TEST(test_sequence_journaled_sorted_array_iterator_position)
{
    testJournaledStringIteratorPosition(Alloc<void>(), SortedArray(), Alloc<void>());
    testJournaledStringIteratorPosition(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

SEQAN_DEFINE_TEST(test_sequence_journaled_sorted_array_iterator_rooted_at_begin)
{
    testJournaledStringIteratorAtBegin(Alloc<void>(), SortedArray(), Alloc<void>());
    testJournaledStringIteratorAtBegin(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

SEQAN_DEFINE_TEST(test_sequence_journaled_sorted_array_iterator_rooted_at_end)
{
    testJournaledStringIteratorAtEnd(Alloc<void>(), SortedArray(), Alloc<void>());
    testJournaledStringIteratorAtEnd(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

SEQAN_DEFINE_TEST(test_sequence_journaled_sorted_array_iterator_rooted_go_begin)
{
    testJournaledStringIteratorGoBegin(Alloc<void>(), SortedArray(), Alloc<void>());
    testJournaledStringIteratorGoBegin(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

SEQAN_DEFINE_TEST(test_sequence_journaled_sorted_array_iterator_rooted_go_end)
{
    testJournaledStringIteratorGoEnd(Alloc<void>(), SortedArray(), Alloc<void>());
    testJournaledStringIteratorGoEnd(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

SEQAN_DEFINE_TEST(test_sequence_journaled_sorted_array_iterator_rooted_container)
{
    testJournaledStringIteratorContainer(Alloc<void>(), SortedArray(), Alloc<void>());
    testJournaledStringIteratorContainer(Alloc<Nothing>(), SortedArray(), Alloc<void>());
}

#endif  // TEST_SEQUENCE_JOURNALED_TEST_SEQUENCE_JOURNALED_ITERATOR_H_


X512F
	vpcmpuq	k5, zmm30, [rcx]{1to8}, 123	 # AVX512F
	vpcmpuq	k5, zmm30, ZMMWORD PTR [rdx+8128], 123	 # AVX512F Disp8
	vpcmpuq	k5, zmm30, ZMMWORD PTR [rdx+8192], 123	 # AVX512F
	vpcmpuq	k5, zmm30, ZMMWORD PTR [rdx-8192], 123	 # AVX512F Disp8
	vpcmpuq	k5, zmm30, ZMMWORD PTR [rdx-8256], 123	 # AVX512F
	vpcmpuq	k5, zmm30, [rdx+1016]{1to8}, 123	 # AVX512F Disp8
	vpcmpuq	k5, zmm30, [rdx+1024]{1to8}, 123	 # AVX512F
	vpcmpuq	k5, zmm30, [rdx-1024]{1to8}, 123	 # AVX512F Disp8
	vpcmpuq	k5, zmm30, [rdx-1032]{1to8}, 123	 # AVX512F

	vpcmpequq	k5, zmm30, zmm29	 # AVX512F
	vpcmpequq	k5{k7}, zmm30, zmm29	 # AVX512F
	vpcmpequq	k5, zmm30, ZMMWORD PTR [rcx]	 # AVX512F
	vpcmpequq	k5, zmm30, ZMMWORD PTR [rax+r14*8+0x1234]	 # AVX512F
	vpcmpequq	k5, zmm30, [rcx]{1to8}	 # AVX512F
	vpcmpequq	k5, zmm30, ZMMWORD PTR [rdx+8128]	 # AVX512F Disp8
	vpcmpequq	k5, zmm30, ZMMWORD PTR [rdx+8192]	 # AVX512F
	vpcmpequq	k5, zmm30, ZMMWORD PTR [rdx-8192]	 # AVX512F Disp8
	vpcmpequq	k5, zmm30, ZMMWORD PTR [rdx-8256]	 # AVX512F
	vpcmpequq	k5, zmm30, [rdx+1016]{1to8}	 # AVX512F Disp8
	vpcmpequq	k5, zmm30, [rdx+1024]{1to8}	 # AVX512F
	vpcmpequq	k5, zmm30, [rdx-1024]{1to8}	 # AVX512F Disp8
	vpcmpequq	k5, zmm30, [rdx-1032]{1to8}	 # AVX512F

	vpcmpltuq	k5, zmm30, zmm29	 # AVX512F
	vpcmpltuq	k5{k7}, zmm30, zmm29	 # AVX512F
	vpcmpltuq	k5, zmm30, ZMMWORD PTR [rcx]	 # AVX512F
	vpcmpltuq	k5, zmm30, ZMMWORD PTR [rax+r14*8+0x1234]	 # AVX512F
	vpcmpltuq	k5, zmm30, [rcx]{1to8}	 # AVX512F
	vpcmpltuq	k5, zmm30, ZMMWORD PTR [rdx+8128]	 # AVX512F Disp8
	vpcmpltuq	k5, zmm30, ZMMWORD PTR [rdx+8192]	 # AVX512F
	vpcmpltuq	k5, zmm30, ZMMWORD PTR [rdx-8192]	 # AVX512F Disp8
	vpcmpltuq	k5, zm


 standalone;
00101
00102   FAXPP_Text system_id;
00103   FAXPP_Text public_id;
00104
00105   unsigned int line;
00106   unsigned int column;
00107 } FAXPP_Event;
00108
00116 const char *FAXPP_event_to_string(FAXPP_EventType type);
00117
00118 #endif

<address style="text-align: right;">Generated on Thu Dec 4 14:21:51 2008 for Faxpp by

 1.5.5 </address>

<!DOCTYPE html>

    <meta charset="utf-8">
    <title>Cloud9: A Hadoop toolkit for working with big data</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="">
    <meta name="author" content="">

    <link href="../assets/css/bootstrap.css" rel="stylesheet">
    <link href="../assets/css/bootstrap-responsive.css" rel="stylesheet">
    <link href="../assets/css/docs.css" rel="stylesheet">
    <link href="../assets/js/google-code-prettify/prettify.css" rel="stylesheet">

        <div class="


481.049-.031.04-.062.043-.197.018-.144-.03-.153-.037-.107-.073.049-.037.05-.046.01-.074a.219.219 0 00-.096-.031c-.04 0-1.956-.19-2.753-.273-.157-.018-.294-.036-.303-.049-.01-.009.006-.015.033-.015.03 0 .052-.012.052-.028 0-.046-.156-.058-.37-.024-.15.021-.23.021-.28-.003-.058-.025-.04-.028.093-.015.29.03.168-.04-.139-.077-.165-.022-.337-.043-.38-.05a.486.486 0 01-.138-.045c-.03-.019-.368-.077-.748-.129a9.127 9.127 0 01-.95-.172c-.497-.14-.954-.37-1.217-.607l-.138-.122.049-.117a.858.858 0 01.46-.493c.315-.154.46-.178 1.076-.197.56-.012.693-.036.628-.11-.03-.043-.472-.11-.692-.11-.138 0-.482-.068-.798-.16a1.226 1.226 0 00-.4-.049zm8.85 2.95a.305.305 0 00-.068.006c-.18.03-.285.073-.377.15l-.092.073.147.003a.45.45 0 00.353-.131c.071-.065.084-.097.037-.1zm5.776.951a.53.53 0 01.162.032.58.58 0 00.224.031c.03-.009.067-.003.08.019.015.027-.03.03-.184.015-.135-.015-.203-.013-.203.009 0 .018.037.04.086.05.224.048.26.073.068.054a5.683 5.683 0 00-.368-.024c-.16 0-.169.003-.178.08-.01.07-.03.085-.18.116-.206.04-.178.043-.332-.028-.138-.067-.442-.14-.819-.199-.14-.021-.21-.04-.162-.043.052 0 .334.031.629.074.545.077.699.092.665.058a5.494 5.494 0 00-.534-.12l-.515-.1.3-.004c.264-.003.31.007.39.065.068.049.101.058.126.034.021-.022.113-.028.257-.02.193.016.245.01.353-.048a.35.35 0 01.135-.05zm-4.347.513c.015 0 .029.002.036.01.013.01 0 .03-.024.046-.058.037-.083.037-.107.003-.014-.025.05-.057.095-.059zm4.987.09c.006-.002.016.01.034.037a.148.148 0 00.098.052c.05 0 .053.006.013.03a.188.188 0 01-.061.028c-.062-.006-.092-.043-.092-.098.001-.03.002-.047.008-.049zm-3.951.18c-.062 0-.104.053-.104.126 0 .016.07.028.156.028.147 0 .153-.003.116-.052-.06-.08-.098-.101-.168-.101zm6.19 1.831c.021-.009.074.012.116.043.068.052.068.058.013.055-.086 0-.184-.076-.13-.098Z"/></svg>';
  static const String shopee =
      '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24" height="24" preserveAspectRatio="xMidYMid meet" viewBox="0


c = "OPTIONS_NAMEPLATE_HIDE_FRIENDLY_HEALTH_DESC",
			nocombat = true,
		},

		{
			type = "toggle",
			boxfirst = true,
			get = function() return GetCVar ("nameplateShowSelf") == CVAR_ENABLED end,
			set = function (self, fixedparam, value)
				if (not InCombatLockdown()) then
					SetCVar ("nameplateShowSelf", math.abs (tonumber (GetCVar ("nameplateShowSelf") or 1)-1))
				else
					Plater:Msg (L["OPTIONS_ERROR_CVARMODIFY"])
					self:SetValue (GetCVar ("nameplateShowSelf") == CVAR_ENABLED)
				end
			end,
			name = "OPTIONS_CVAR_ENABLE_PERSONAL_BAR",
			desc = "OPTIONS_CVAR_ENABLE_PERSONAL_BAR_DESC",
			nocombat = true,
			hidden = IS_WOW_PROJECT_NOT_MAINLINE,
		},
		{
			type = "toggle",
			boxfirst = true,
			get = function() return PlaterDBChr.resources_on_target end,
			set = function (self, fixedparam, value)
				PlaterDBChr.resources_on_target = value
				if value then
					Plater.db.profile.resources_settings.global_settings.show = false
				end
				if (not InCombatLockdown()) then
					SetCVar (CVAR_RESOURCEONTARGET, CVAR_DISABLED) -- reset this to false always, as it conflicts
				end
			end,
			name = "OPTIONS_RESOURCES_TARGET",
			desc = "OPTIONS_RESOURCES_TARGET_DESC",
			nocombat = true,
			hidden = IS_WOW_PROJECT_NOT_MAINLINE,
		},
		{
			type = "toggle",
			boxfirst = true,
			get = function() return GetCVar (CVAR_SHOWALL) == CVAR_ENABLED end,
			set = function (self, fixedparam, value)
				if (not InCombatLockdown()) then
					SetCVar (CVAR_SHOWALL, math.abs (tonumber (GetCVar (CVAR_SHOWALL))-1))
				else
					Plater:Msg (L["OPTIONS_ERROR_CVARMODIFY"])
					self:SetValue (GetCVar (CVAR_SHOWALL) == CVAR_ENABLED)
				end
			end,
			name = "OPTIONS_CVAR_NAMEPLATES_ALWAYSSHOW",
			desc = "OPTIONS_CVAR_NAMEPLATES_ALWAYSSHOW_DESC",
			nocombat = true,
		},

		{
			type = "toggle",
			boxfirst = true,
			get = function() return Plater.db.profile.honor_blizzard_plate_alpha end,
			set = function (self, fixedparam, value)
				Plater.db.profile.honor_blizzard_plate_alpha = value
				Plater.UpdateAllPlates()
			end,
			name = "Use Blizzard's Nameplate Alpha",
			desc = "Use the 'occluded' and other blizzard nameplate alpha values from blizzard settings.\n\nThis setting only works with 'Use custom strata channels' enabled.",
			id = "transparency_blizzard_alpha",
		},
		{
			type = "range",
			get = function() return tonumber (GetCVar ("nameplateOccludedAlphaMult")) end,
			set = function (self, fixedparam, value)
				if (not InCombatLockdown()) then
					SetCVar ("nameplateOccludedAlphaMult", value)
				else
					Plater:Msg (L["OPTIONS_ERROR_CVARMODIFY"])
				end
			end,
			min = 0,
			max = 1,
			step = 0.1,
			thumbscale = 1.7,
			usedecimals = true,
			name = "Occluded Alpha Multiplier" .. CVarIcon,
			desc =


�，就算不喝任何人也能下來的！

趙無延：嘿嘿！你這是讓誰給騙了呀？任何人都能來，那這裡應該到處都是人了？你看一看摸一摸，這裡除了你我，哪一個不是鬼？是任何人都能下來，可沒有喝我那藥，下來就變成鬼回不去了，懂嗎？

景天：那、那你之前怎麼沒跟我說清楚？

趙無延：我怎麼沒說清楚？我不是說了嘛！有什麼不明白的儘管找我問，可我乾等了一下午也沒見你來，我還以為你都知道吶，我囉囉嗦嗦豈不是討人厭？哪知道你什麼都不懂，早說啊！

景天：不對！紫萱姐沒喝藥，還不是一點事也沒有？

趙無延：我哪認識你的什麼姐姐妹妹的，這天下之大，什麼人沒有啊。說不定你那個什麼姐姐就是個道行很高的人，跟鬼界有什麼淵源也說不定，這裡的怪事多著呢！這不前些日子就有“生死簿”上沒有的鬼在這裡晃，你這個啊，不新鮮——

景天：剛才是什麼聲音？樓上好像有什麼東西！

趙無延：沒有……呵呵～～我也是正當壯年，又沒有妻室，床上有個把女人有什麼稀奇的？你也老大不小了，用不著這麼大驚小怪吧？

景天：女人？你不是說這裡沒有別“人”嗎？我看一定有“鬼”，我要看看！

趙無延家貳樓

景天：還說沒有人，這聲音真是鬧鬼不成……我一定要看看。

趙無延：喂喂喂——你給我停下！

景天：哼哼，你這分明是做賊心虛。

趙無延：你！……

過場動畫27：景天、雪見鬼界再相逢

景天：雪見！

雪見：嗯……嗯……

景天：別急！我來幫你！

雪見：我……我不是在做夢吧？你


 for, "text.txt" containing the text to be searched in.
// func main() {
// 	if commandLineInput == true { // case of command line input
// 		args := os.Args
// 		if len(args) <= 2 {
// 			log.Fatal("Not enough arguments. Two string arguments separated by spaces are required!")
// 		}
// 		pattern := args[1]
// 		s := args[2]
// 		for i := 3; i < len(args); i++ {
// 			s = s + " " + args[i]
// 		}
// 		if len(args[1]) > len(s) {
// 			log.Fatal("Pattern  is longer than text!")
// 		}
// 		if debugMode == true {
// 			fmt.Printf("\nRunning: Backward Oracle Matching algorithm.\n\n")
// 			fmt.Printf("Search word (%d chars long): %q.\n", len(args[1]), pattern)
// 			fmt.Printf("Text        (%d chars long): %q.\n\n", len(s), s)
// 		} else {
// 			fmt.Printf("\nRunning: Backward Oracle Matching algorithm.\n\n")
// 		}
// 		bom(s, pattern)
// 	} else if commandLineInput == false { // case of file line input
// 		patFile, err := ioutil.ReadFile("pattern.txt")
// 		if err != nil {
// 			log.Fatal(err)
// 		}
// 		textFile, err := ioutil.ReadFile("text.txt")
// 		if err != nil {
// 			log.Fatal(err)
// 		}
// 		if len(patFile) > len(textFile) {
// 			log.Fatal("Pattern  is longer than text!")
// 		}
// 		if debugMode == true {
// 			fmt.Printf("\nRunning: Backward Oracle Matching algorithm.\n\n")
// 			fmt.Printf("Search word (%d chars long): %q.\n", len(patFile), patFile)
// 			fmt.Printf("Text        (%d chars long): %q.\n\n", len(textFile), textFile)
// 		} else {
// 			fmt.Printf("\nRunning: Backward Oracle Matching algorithm.\n\n")
// 		}
// 		bom(string(textFile), string(patFile))
// 	}
// }

// // Function bom performing the Backward Oracle Matching algorithm.
// // Prints whether the word/pattern was found + positions of possible multiple occurrences
// // or that the word was not found.
// func bom(t, p string) {
// 	startTime := time.Now()
// 	n, m := len(t), len(p)
// 	var current, j, pos int
// 	oracle := oracleOnLine(reverse(p))
// 	occurrences := make([]int, len(t))
// 	currentOcc := 0
// 	pos = 0
// 	if debugMode == true {
// 		fmt.Printf("\n\nWe are reading backwards in %q, searching for %q\n\nat position %d:\n", t, p, pos+m-1)
// 	}
// 	for pos <= n-m {
// 		current = 0 //initial state of the oracle
// 		j = m
// 		for j > 0 && stateExists(current, oracle) {
// 			if debugMode == true {
// 				prettyPrint(current, j, n, pos, t, oracle)
// 			}
// 			current = getTransition(current, t[pos+j-1], oracle)
// 			j--
// 		}
// 		if stateExists(current, oracle) {
// 			if debugMode == true {
// 				fmt.Printf(" We got an occurrence!")
// 			}
// 			occurrences[currentOcc] = pos
// 			currentOcc++
// 		}
// 		pos = pos + j + 1
// 		if pos+m-1 < len(t) {
// 			if debugMode == true {
//


-bar-my-sites>.ab-item,.no-font-face #wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:0}.no-font-face #wpadminbar #wp-admin-bar-wp-logo>.ab-item,.no-font-face #wpadminbar .ab-icon,.no-font-face #wpadminbar .ab-icon:before,.no-font-face #wpadminbar a.ab-item:before{display:none!important}.no-font-face #wpadminbar ul.ab-top-menu>li>a>span.ab-label{display:inline}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon{display:inline!important}.no-font-face #wpadminbar #wp-admin-bar-menu-toggle span.ab-icon:before{content:"Menu";font:14px/45px sans-serif!important;display:inline-block!important;color:#fff}.no-font-face #wpadminbar #wp-admin-bar-site-name a.ab-item{color:#fff}@media screen and (max-width:782px){html #wpadminbar{left:0!important;z-index:500!important;height:46px;min-width:300px}#wpadminbar *{font:400 14px/32px "Open Sans",sans-serif}#wpadminbar .quicklinks .ab-empty-item,#wpadminbar .quicklinks>ul>li>a{padding:0;height:46px;line-height:46px;width:auto}#wpadminbar .ab-icon{font:40px/1 dashicons!important;margin:0;width:52px;height:46px;text-align:center}#wpadminbar .ab-icon:before{text-align:center}#wpadminbar .ab-submenu{padding:0}#wpadminbar #wp-admin-bar-my-account a.ab-item,#wpadminbar #wp-admin-bar-my-sites a.ab-item,#wpadminbar #wp-admin-bar-site-name a.ab-item{text-overflow:clip}#wpadminbar .ab-label{display:none}#wpadminbar .menupop li.hover>.ab-sub-wrapper,#wpadminbar .menupop li:hover>.ab-sub-wrapper{margin-top:-46px}#wpadminbar .ab-top-menu .menupop .ab-sub-wrapper .menupop>.ab-item{padding-right:30px}#wpadminbar .menupop .menupop>.ab-item:before{top:10px;right:6px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper .ab-item{font-size:16px;padding:6px 15px 12px}#wpadminbar .ab-top-menu>.menupop>.ab-sub-wrapper a:empty{display:none}#wpadminbar #wp-admin-bar-wp-logo>.ab-item{padding:0}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon{padding:0;width:52px;height:46px;text-align:center;vertical-align:top}#wpadminbar #wp-admin-bar-wp-logo>.ab-item .ab-icon:before{font:28px/1 dashicons!important;top:-3px}#wpadminbar #wp-admin-bar-edit>.ab-item,#wpadminbar #wp-admin-bar-my-account>.ab-item,#wpadminbar #wp-admin-bar-my-sites>.ab-item,#wpadminbar #wp-admin-bar-site-name>.ab-item{text-indent:100%;white-space:nowrap;overflow:hidden;width:52px;padding:0;color:#999;position:relative}#wpadminbar .ab-icon,#wpadminbar .ab-item:before,#wpadminbar>#wp-toolbar>#wp-admin-bar-root-default .ab-icon{padding:0;margin


 timeNext = 0;
    protected final TrackReaderConfiguration config;

    public AbstractTrackReader(LogReader reader, TrackReaderConfiguration config) throws IOException, FormatErrorException {
        this.reader = reader;
        this.config = config;
        this.reader.seek(this.config.getTimeStart());
    }

    protected long readUpdate(Map<String, Object> data) throws IOException, FormatErrorException {
        long t;
        while (true) {
            t = reader.readUpdate(data);
            if (t > config.getTimeEnd()) {
                throw new EOFException("Reached configured export limit.");
            }
            if (t >= timeNext) {
                if (timeNext == 0) {
                    timeNext = t;
                }
                timeNext += config.getTimeInterval();
                return t;
            }
        }
    }
}
package me.drton.flightplot.export;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Locale;

/**
 * Created by ada on 23.12.13.
 */
public class KMLTrackExporter extends AbstractTrackExporter {
    private static final String LINE_STYLE_RED = "red";
    private static final String LINE_STYLE_GREEN = "green";
    private static final String LINE_STYLE_BLUE = "blue";
    private static final String LINE_STYLE_CYAN = "cyan";
    private static final String LINE_STYLE_MAGENTA = "magenta";
    private static final String LINE_STYLE_YELLOW = "yellow";
    private final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

    protected String getStyleForFlightMode(String flightMode) {
        if (flightMode == null) {
            return LINE_STYLE_YELLOW;
        }
        if ("MANUAL".equals(flightMode)) {
            return LINE_STYLE_RED;
        } else if ("ALTCTL".equals(flightMode)) {
            return LINE_STYLE_YELLOW;
        } else if ("POSCTL".equals(flightMode)) {
            return LINE_STYLE_GREEN;
        } else if ("AUTO_MISSION".equals(flightMode)) {
            return LINE_STYLE_BLUE;
        } else if ("AUTO_LOITER".equals(flightMode)) {
            return LINE_STYLE_CYAN;
        } else if ("AUTO_RTL".equals(flightMode)) {
            return LINE_STYLE_MAGENTA;
        } else if ("AUTO_ACRO".equals(flightMode)) {
            return LINE_STYLE_RED;
        } else if ("AUTO_OFFBOARD".equals(flightMode)) {
            return LINE_STYLE_BLUE;
        } else {
            return LINE_STYLE_YELLOW;
        }
    }

    protected void writeStart() throws IOException {
        // TODO: maybe make some settings configurable
        writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
        writer.write("<kml xmlns=\"http://www.opengis.net/kml/2.2\" xmlns:gx=\"http://www.google.com/kml/ext/2.2\">\n");
        writer.write("<Document>\n");
        writer.write("<name>" + this.title + "</name>\n");
        writer.write("<description></description>\n");
        writer.write("<Style id=\"" + LINE_STYLE_YELLOW + "\">\n");
        writer.write("<LineStyle>\n");
        writer.write("<color>7f00ffff</color>\n");
        writer.write("<width>4</width>\n");
        writer.write("</LineStyle>\n");
        writer.write("</Style>\n");
        writer.write("<Style id=\"" + LINE_STYLE_BLUE + "\">\n");
        writer.write("<LineStyle>\n");
        writer.write("<color>7fff0000</color>\n");
        writer.write("<width>4</width>\n");
        writer.write("</LineStyle>\n");
        writer.write("</Style>\n");


spia|',
  [17798] = '?|Kriegsherr Kalithresh|',
  [17800] = '?|Myrmidone des Echsenkessels|',
  [17801] = '?|Sirene des Echsenkessels|',
  [17802] = '?|Krieger des Echsenkessels|',
  [17803] = '?|Orakel des Echsenkessels|',
  [17805] = '?|Sklavenmeister des Echsenkessels|',
  [17807] = '?|Meister Kelerun Blutpein|',
  [17825] = '?|Vernehmungsbeauftragte Elysia|',
  [17830] = '?|Zelemar der Hasserfüllte|',
  [17831] = "B|Behüterin Leesa'oh|Right in front of a blue tall tent.",
  [17834] = 'B|Lethyn Mondfeuer|Just inside the inn, to the left.',
  [17839] = '?|Fürst der Zeitenrisse|',
  [17841] = 'B|Ysiel Windsänger|Inside the inn, all way in the back, on the balcony.',
  [17843] = '?|Verteidiger Kuros|',
  [17844] = '?|Verteidiger Aesom|',
  [17849] = '?|Getötete Kundschafterin|',
  [17856] = "B|Gzhun'tt|To the right of the entrance of the first hut on the right as you enter Sporeggar from the road.",
  [17857] = "?|T'shu|",
  [17858] = 'B|Aufseher Hamuht|At the very top of the big tower, looking out ver the city.',
  [17866] = "?|Khn'nix|",
  [17870] = '?|Erbostes Nethergespenst|',
  [17871] = '?|Tiefensumpfschlurfer|',
  [17876] = 'H|Thrall|',
  [17877] = '?|Fhwoor|',
  [17878] = '?|Belagerungsingenieur der Geißel|',
  [17881] = '?|Aeonus|',
  [17882] = '?|Die Schattenmutter|',
  [17884] = '?|Behüterin Jhang|',
  [17885] = '?|Erdbinder Rayge|',
  [17887] = '?|Geschöpf der Leere|',
  [17890] = '?|Jäter Gründaum|',
  [17893] = '?|Naturalist Biss|',
  [17894] = '?|Windrufer Klaue|',
  [17900] = "B|Ashyen|To the left, right before the bridge back to Hellfire Peninsula. He's the huge tree guard.",
  [17901] = 'B|Keleth|A huge tree guard. This guy wanders around the town, so some searching may be necessary.',
  [17909] = "B|Lauranna Thar'well|In front of a tall hut and a wagon.",
  [17923] = 'B|Fahssn|He walks around close to this area.',
  [17924] = "A|Msshi'fn|Inside the first hut on your left as you enter Sporeggar from the road.",
  [17925] = 'B|Gshaff|Inside the second hut on the right as you enter Sporeggar from the road.',
  [17926] = '?|Späherin Loryi|',
  [17927] = '?|Späherin Jorli|',
  [17942] = '?|Quagmirran|',
  [17956] = 'B|Ikeyen|In front of a tall hut and a wagon.',
  [17957] = '?|Champion des Echsenkessels|',
  [17960] = '?|Sterndeuter des Echsenkessels|',
  [17961] = '?|Verzauberin des Echsenkessels|'


state flgas
    ;    CS           --> Code segment
    ;    EIP          --> Entry point
    ;

    ;==== User data segmenet with bottom 2 bits set for ring3 ?=================
    push 0x23               ; push SS on Kernel's stack
    ;---------------------------------------------------------------------------

    ;==== (ESP) Stack address ==================================================
    mov eax, ARG1           ; get uintptr_t stack
    push eax                ; push process's stack address on Kernel's stack
    ;---------------------------------------------------------------------------

    ;==== (EFLAGS) =============================================================
    pushf                   ; push EFLAGS into Kernel's stack
    pop eax                 ; pop EFLAGS into eax
    or eax, 0x200           ; enable interrupt
    push eax                ; push new EFLAGS on Kernel's stack
    ;---------------------------------------------------------------------------

    ;==== (CS) Code Segment ====================================================
    push 0x1b               ;
    ;---------------------------------------------------------------------------

    ;==== (EIP) Entry point ====================================================
    mov eax, ARG0           ; get uintptr_t location
    push eax                ; push uintptr_t location on Kernel's stack
    ;---------------------------------------------------------------------------

    iret                   ; interrupt return
    pop ebp
    ret

    ; WE SHOULD NOT STILL BE HERE! :(

; -----------------------------------------------------------------------------
; SECTION (note) - Inform the linker that the stack does not need to be executable
; -----------------------------------------------------------------------------
section .note.GNU-stack


 {"Добудьте трофей из Балиа'ма и Зиата'джай в руинах Дробителей Черепов в Северной Тернистой долине."}},
[26302] = {"Судьба Йеннику", nil, {"Поговорите с Кин'вилаем в Бамбале."}},
[26303] = {"Око разума", nil, {"Отнимите Око разума у Май'Зота."}},
[26304] = {"Ночь в джунглях", nil, {"Потушите 8 жаровен в Зул'Мамве, что в Северной Тернистой долине."}},
[26305] = {"Спасение Йеннику", nil, {"Отнесите Нимбойе наполненный самоцвет Души."}},
[26306] = {"Начало расправы", nil, {"Убейте 5 знахарей и 5 охотников за головами из племени Порочной Ветви в Джинта'Алоре."}},
[26307] = {"Смерть Порочной Ветви!", nil, {"Убейте 5 берсерков и 5 темных чародеев из племени Порочной Ветви в Джинта'Алоре."}},
[26308] = {"Победа наша!", nil, {"Убейте 5 кровопийц и 5 пожирателей душ из племени Порочной Ветви в Джинта'Алоре."}},
[26309] = {"Темные сосуды", nil, {"Соберите 5 Сосудов с порченой кровью в Джинта'Алоре."}},
[26310] = {"Быстролапые паучата", nil, {"Соберите 8 быстролапых паучков в Джинта'Алоре."}},
[26311] = {"Неизведанные воды", nil, {"Найдите Эрезегора Огнеклыка в таверне \"Хвост виверны\", которая расположена на Аллее Чести в Оргриммаре. Возьмите у него карту побережья Сумеречного нагорья."}},
[26312] = {"Неравный бой", nil, {"Помогите Тону Зимнему Утесу, буревестнице Милре и Харготу Бледному Пламени победить их противников, чтобы они смогли перевести дух."}},
[26313] = {"Суть наших проблем", nil, {"Соберите 6 сердец яростных грохотунов."}},
[26314] = {"На ровной земле", nil, {"Воспользуйтесь элементиевыми \"кошками\", чтобы сбить с ног 3 слуг Теразан."}},
[26315] = {"Впечатляющая встреча", nil, {"Прочитайте воззвание Служителей Земли Бодену Впечатляющему."}},
[26316] = {"Как дела у Джессупа?", nil, {"Найдите Джессупа Маккри в его лагере возле форта Мерзлогривов."}},
[26317] = {"Детеныш кнутохвоста", nil, {"Принесите детеныша кнутохвост


r.
  ///  It's possible that after conflict resolution chooses minimum alternatives,
  ///  SLL could get the same answer as LL. Regardless of whether or not the result indicates
  ///  an ambiguity, it is not treated as a context sensitivity because LL prediction
  ///  was not required in order to produce a correct prediction for this decision and input sequence.
  ///  It may in fact still be a context sensitivity but we don't know by looking at the
  ///  minimum alternatives for the current input.
  int? conflictingAltResolvedBySLL;

  ProfilingATNSimulator(Parser parser)
      : super(
          parser,
          parser.interpreter!.atn,
          parser.interpreter!.decisionToDFA,
          parser.interpreter!.sharedContextCache,
        ) {
    numDecisions = atn.decisionToState.length;
    decisions = List<DecisionInfo>.generate(
      numDecisions,
      (index) => DecisionInfo(index),
    );
  }

  @override
  int adaptivePredict(
    TokenStream input,
    int decision,
    ParserRuleContext? outerContext,
  ) {
    try {
      _sllStopIndex = -1;
      _llStopIndex = -1;
      currentDecision = decision;

      final start =
          DateTime.now(); // TODO get nano seconds expensive but useful info
      final alt = super.adaptivePredict(input, decision, outerContext);
      final stop = DateTime.now();
      decisions[decision].timeInPrediction +=
          (stop.difference(start)).inMicroseconds;
      decisions[decision].invocations++;

      final SLL_k = _sllStopIndex - startIndex + 1;
      decisions[decision].SLL_TotalLook += SLL_k;
      decisions[decision].SLL_MinLook = decisions[decision].SLL_MinLook == 0
          ? SLL_k
          : min(decisions[decision].SLL_MinLook, SLL_k);
      if (SLL_k > decisions[decision].SLL_MaxLook) {
        decisions[decision].SLL_MaxLook = SLL_k;
        decisions[decision].SLL_MaxLookEvent = LookaheadEventInfo(
          decision,
          null,
          alt,
          input,
          startIndex,
          _sllStopIndex,
          false,
        );
      }

      if (_llStopIndex >= 0) {
        final LL_k = _llStopIndex - startIndex + 1;
        decisions[decision].LL_TotalLook += LL_k;
        decisions[decision].LL_MinLook = decisions[decision].LL_MinLook == 0
            ? LL_k
            : min(decisions[decision].LL_MinLook, LL_k);
        if (LL_k > decisions[decision].LL_MaxLook) {
          decisions[decision].LL_MaxLook = LL_k;
          decisions[decision].LL_MaxLookEvent = LookaheadEventInfo(
              decision, null, alt, input, startIndex, _llStopIndex, true);
        }
      }

      return alt;
    } finally {
      currentDecision = -1;
    }
  }

  @override
  DFAState? getExistingTargetState(DFAState previousD, int t) {
    // this method is called after each time the input position advances
    // during SLL prediction
    _sllStopIndex = input.index;

    final existingTargetState = super.getEx


playName="UnderlineAnchorTab"},47531:e=>{e.exports='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="m4.67 7.38.66-.76L9 9.84l3.67-3.22.66.76L9 11.16 4.67 7.38Z"/></svg>'},63509:e=>{e.exports='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18"><path fill="currentColor" d="M3.57 7.85 9 12.62l5.43-4.77-1.32-1.5L9 9.95l-4.11-3.6-1.32 1.5Z"/></svg>'},48040:e=>{
e.exports='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M16.73 6.56a2.5 2.5 0 0 1 3.54 0l1.17 1.17a2.5 2.5 0 0 1 0 3.54l-.59.58-9 9-1 1-.14.15H6v-4.7l.15-.15 1-1 9-9 .58-.59Zm2.83.7a1.5 1.5 0 0 0-2.12 0l-.23.24 3.29 3.3.23-.24a1.5 1.5 0 0 0 0-2.12l-1.17-1.17Zm.23 4.24L16.5 8.2l-8.3 8.3 3.3 3.3 8.3-8.3Zm-9 9L7.5 17.2l-.5.5V21h3.3l.5-.5Z"/></svg>'},68874:e=>{e.exports='<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="m14 18.41-6.7-6.7 1.4-1.42 5.3 5.3 5.3-5.3 1.4 1.41-6.7 6.71Z"/></svg>'}}]);(self.webpackChunktradingview=self.webpackChunktradingview||[]).push([[2646,4109,9093],{4543:e=>{e.exports={en:["Cancel"],fr:["Annuler"]}},47742:e=>{e.exports={en:["Close menu"],fr:["Fermer le menu"]}},69207:e=>{e.exports={en:["Add to favorites"],fr:["Ajouter aux favoris"]}},30448:e=>{e.exports={en:["Do you really want to delete Chart Layout '{name}' ?"],fr:["Voulez-vous vraiment supprimer la configuration du graphique '{name}' ?"]}},79573:e=>{e.exports={en:["Do you really want to delete Chart Layout '{name}' that contains {n_drawings_on_n_symbols}?"],fr:['Voulez-vous vraiment supprimer le modèle de graphique " {name} " qui contient {n_drawings_on_n_symbols}?']}},55108:e=>{e.exports={en:["Date modified (oldest first)"],fr:["Date de modification (la plus ancienne d'abord)"]}},75272:e=>{e.exports={en:["Date modified (newest first)"],fr:["Date de modification (la plus récente d'abord)"]}},79825:e=>{e.exports={en:["Load layout"],fr:["Charger la mise en page"]}},11478:e=>{e.exports={en:["Layout name"],fr:["Nom de la mise en page"]}},21329:e=>{e.exports={en:["Layout name (A to Z)"],fr:["Nom de la mise en page (A à Z)"]}},11324:e=>{e.exports={en:["Layout name (Z to A)"],fr:["Nom de la mise en page (Z à A)"]}},5


(`You are running a prerelease version of quadplay✜:\n  installed      = ${installedVersion.text}\n  latest release = ${latestVersion.text}`);
        }
    });
}

//////////////////////////////////////////////////////////////////////////////////////

// Load state
autoPauseEnabled = (localStorage.getItem('autoPauseEnabled') !== 'false');

if (getQueryString('kiosk') === '1') {
    // Hide the console menu and mode buttons
    document.getElementById('body').classList.add('kiosk');
    document.getElementById('body').classList.remove('noKiosk');
} else {
    document.getElementById('body').classList.remove('kiosk');
    document.getElementById('body').classList.add('noKiosk');
}

// Perform initial page and game load in maximal mode rather than showing the ununitialized
// layout. If not in IDE mode this will be overriden with a new mode when the game
// loads and we know if we need emulator controls.
if (! useIDE) {
    setUIMode('Maximal');
} else {
    localStorage.getItem('uiMode') || 'IDE';
}

initializeBrowserEmulator();
setErrorStatus('');
setCodeEditorFontSize(parseFloat(localStorage.getItem('codeEditorFontSize') || '14'));

// When not in the IDE, force the dots color scheme
setColorScheme(useIDE ? (localStorage.getItem('colorScheme') || 'dots') : 'dots');
{
    let tmp = gamepadOrderMap = (localStorage.getItem('gamepadOrderMap') || '0123').split('');
    for (let i = 0; i < tmp.length; ++i) {
        tmp[i] = parseInt(tmp[i]);
    }
    setGamepadOrderMap(tmp);
}

// Get the configuration if running on a quadplay server
if (isQuadserver) {
    LoadManager.fetchOne({}, location.origin + getQuadPath() + 'console/_config.json', 'json', null, function (json) {
        serverConfig = json;
    });
}

// As early as possible, make the browser aware that we want gamepads
navigator.getGamepads();

// Set to true when intentionally loading a new game to keep nativeapp
// from closing the server when it loads a new game
let inPageReload = false;
if (nativeapp && isQuadserver) {
    // Tell the server to quit when the browser does
    window.addEventListener('beforeunload', function () {
        if (! inPageReload) {
            postToServer({command: 'quit'});
        }
    })
}

if ((getQueryString('update') && getQueryString('update') !== '0') && isQuadserver && getQueryString('kiosk') !== 1) {
    // Check for updates a few seconds after start, and then every
    // two hours when not sleeping.
    const INITIAL_DELAY  = 5000;
    const REGULAR_PERIOD = 2 * 60 * 60 * 1000;
    setTimeout(function () {
        checkForUpdate();
        setInterval(function () {
            if (document.getElementById('sleepOverlay').style.visibility !== 'visible') {
                checkForUpdate();
            }
        }, REGULAR_PERIOD);
    }, INITIAL_DELAY);
}

// Set the initial size
setFramebufferSize(SCREEN_WIDTH, SCREEN_HEIGHT, false);

// Load the runtime FIRST, so that we know QRuntime is defined
// (some game loading functions depend on it), and then trigger
// the game load second.
reloadRuntime(function () {
    let url = getQueryString('game');

    if (! url) {
        if (useIDE) {
            // Default game in IDE
            url = 'quad://examples/animation';
        } else {
            // Load the launcher if no game is specified outside of the IDE
            url = launcherURL;
        }
    }

    // If the url doesn't have a prefix and doesn't begin with a slash or
    // drive letter, assume that it is relative to the quadplay script in the parent dir.
    if (! (/^(.{3,}:\/\/|[\\/]|[a-zA-Z]:[\/\\])/).test(url)) {
        url = '../' + url;
    }

    console.log('Loading because of initial page load.');
    loadGameAndConfigureUI(url, function () {

        // Set screen mode


et origin: Vec3 = Vec3::new(0.0, 0.0, 0.0);
    let nx: u64 = 20;
    let ny: u64 = 10;

    let lambert: Lambertian = Lambertian::new(Vec3::new(0.0, 0.0, 0.0));
    let sphere1_center: Vec3 = Vec3::new(0.0, 0.0, -1.0);
    let sphere_1: Sphere = Sphere::new(sphere1_center, 0.5, Material::Lambertian(lambert));

    let mut world: HittableList = HittableList::new();
    world.add_sphere(sphere_1);

    let mut scene: Vec<Vec<Vec3>> = Vec::new();

    for y in (0..ny).rev() {
        let mut row: Vec<Vec3> = Vec::new();
        for x in 0..nx {
            let u: f64 = x as f64/nx as f64;
            let v: f64 = y as f64/ny as f64;
            let r: Ray = Ray::new(origin,
                                  lower_left_corner + u*horizontal + v*vertical);
            let mut color_vector: Vec3 = Vec3::new(0.0, 0.0, 0.0);
            let mut rec: HitRecord = HitRecord::new();
            if world.intersect(&r, 0.0, f64::MAX, &mut rec) {
                color_vector = 255.99 * 0.5 * Vec3::new(rec.normal().x() + 1.0,
                                                        rec.normal().y() + 1.0,
                                                        rec.normal().z() + 1.0);
                color_vector.colorize();
            }
            row.push(color_vector);
        }
        scene.push(row);
    }

    assert!(true);
}//! automation_tasks_rs for project_name

use cargo_auto_lib::*;

fn main() {
    exit_if_not_run_in_rust_project_root_directory();

    // get CLI arguments
    let mut args = std::env::args();
    // the zero argument is the name of the program
    let _arg_0 = args.next();
    match_arguments_and_call_tasks(args);
}

// region: match, help and completion

/// match arguments and call tasks functions
fn match_arguments_and_call_tasks(mut args: std::env::Args) {
    // the first argument is the user defined task: (no argument for help), build, release,...
    let arg_1 = args.next();
    match arg_1 {
        None => print_help(),
        Some(task) => {
            if &task == "completion" {
                completion();
            } else {
                println!("Running automation task: {}", &task);
               if &task == "doc" {
                    task_doc();
                } else if &task == "commit_and_push" {
                    let arg_2 = args.next();
                    task_commit_and_push(arg_2);
                } else {
                    println!("Task {} is unknown.", &task);
                    print_help();
                }
            }
        }
    }
}

/// write a comprehensible help for user defined tasks
fn print_help() {
    println!(
        r#"
User defined tasks in automation_tasks_rs:
cargo auto doc - builds the docs, copy to docs directory
cargo auto commit_and_push "message" - commits with message and push with mandatory message
      (If you use SSH, it is easy to start the ssh-agent in the background and ssh-add your credentials for git.)
"#
    );
}

/// sub-command for bash auto-completion of `cargo


cn4],[class*=-cn4]+[class*=cn4],[class*=" cn4"]+[class*=cn3],[class^=cn4]+[class*=cn3],[class*=-cn4]+[class*=cn3],[class*=" cn4"]+[class*=cn2],[class^=cn4]+[class*=cn2],[class*=-cn4]+[class*=cn2],[class*=" cn5"]+[class*=cn5],[class^=cn5]+[class*=cn5],[class*=-cn5]+[class*=cn5],[class*=" cn5"]+[class*=cn4],[class^=cn5]+[class*=cn4],[class*=-cn5]+[class*=cn4],[class*=" cn5"]+[class*=cn3],[class^=cn5]+[class*=cn3],[class*=-cn5]+[class*=cn3],[class*=" cn5"]+[class*=cn2],[class^=cn5]+[class*=cn2],[class*=-cn5]+[class*=cn2],.cn-clear.cn-clear{clear:left;}
.cn-overlap.cn-overlap{clear:none;}

/* 5-col-hecton hiding ----- */

.cn-hide.cn-hide,.gridoverlay .cn-hide.cn-hide{display:none;}.cn-show.cn-show,.gridoverlay .cn-show.cn-show{display:block;}

.cn-showgrid .cn-show, .cn-showgrid.cn-show, .gridsetnoareas .cn-show{display:block !important;}

}

@media only screen and (min-width:1024px) {

/* 5-col-hermidiagon grid: 5 column / gutter: 2% ---------------------------------------- */

[class*=" ce1"][class*=" ce1"],[class^=ce1][class^=ce1],[class*=" ce2"][class*=" ce2"],[class^=ce2][class^=ce2],[class*=" ce3"][class*=" ce3"],[class^=ce3][class^=ce3],[class*=" ce4"][class*=" ce4"],[class^=ce4][class^=ce4],[class*=" ce5"][class*=" ce5"],[class^=ce5][class^=ce5],.ce-all{display:block;float:left;clear:none;margin-right:-100%;}

.ce-all+[class*=" ce2"],.ce-all+[class^=ce2]{clear:left;}

.ce-all+[class*=" ce3"],.ce-all+[class^=ce3]{clear:left;}

.ce-all+[class*=" ce4"],.ce-all+[class^=ce4]{clear:left;}

.ce-all+[class*=" ce5"],.ce-all+[class^=ce5]{clear:left;}

/* 5-col-hermidiagon clearing ----- */

.ce-all,[class*=" ce1-"][class*=" ce1-"],[class^=ce1-][class^=ce1-],.ce1.ce1,[class*=" ce2"] [class*=ce2],[class^=ce2] [class*=ce2],[class*=" ce3"] [class*=ce3],[class^=ce3] [class*=ce3],[class*=" ce4"] [class*=ce4],[class^=ce4] [class*=ce4],[class*=" ce5"] [class*=ce5],[class^=ce5] [class*=ce5]{margin-left:0;clear:left;}

[class*=" ce2"]+[class*=ce2],[class^=ce2]+[class*=ce2],[class*=-ce2]+[class*=ce2],[class*=" ce3"]+[class*=ce3],[class^=ce3]+[class*=ce3],[class*=-ce3]+[class*=ce3],[class*=" ce3"]+[class*=ce2],[class^=ce3]+[class*=ce2],[class*=-ce3]+[class*=ce2],[class*=" ce4"]+[class*=ce4],[class^=ce4]+[class*=ce4],[class*=-ce4]+[cl


true) {
            destinationCupValue--;
            if (destinationCupValue < lowestCup) {
                destinationCupValue = highestCup;
            }
            if (cups.includes(destinationCupValue)) {
                break;
            }
        }
        // console.log('destination:', destinationCupValue);
        const destinationCupIndex = cups.indexOf(destinationCupValue);
        cups.splice(destinationCupIndex + 1, 0, ...pickedUpCups);
        currentCup = cups[wrap(cups.indexOf(currentCup) + 1, cups.length)];
        // console.log('');
    }
    const indexOfOne = cups.indexOf(1);
    const valuesAroundOne = [...cups.slice(indexOfOne + 1), ...cups.slice(0, indexOfOne)];
    console.log(valuesAroundOne.join(''));
};

const part2 = async () => {
    const cupNodes = new Map<number, INode<number>>();
    const cups = new UnsafeLinkedList(getCups());

    for (const node of cups.nodes()) {
        cupNodes.set(node.value, node);
    }

    let highestCup = Math.max(...cups) + 1;
    while (highestCup <= 1_000_000) {
        const [node] = cups.insertEnd(highestCup++);
        cupNodes.set(node.value, node);
    }

    const removeNextCup = (node: ILinkedNode<number>): number => {
        if (!node.next) {
            return cups.popStart();
        }

        return cups.removeAfterNode(node)?.value;
    }

    let currentCupNode = cups.head;
    for (let move = 1; move <= 10_000_000; move++) {
        if (move % 250_000 === 0) {
            console.log(`-- move ${move} --`);
        }
        // console.log(`-- move ${move} --`);
        // console.log('cups:', [...cups].map(cup => cup === currentCupNode.value ? `(${cup})` : cup).join(' '));
        const pickedUpCups: number[] = [];
        for (let i = 0; i < 3; i++) {
            const nextCupValue = removeNextCup(currentCupNode);
            if (!nextCupValue) {
                // console.log([...cups], currentCupNode.value);
                throw new Error('Somehow there was no cup to remove');
            }
            cupNodes.delete(nextCupValue);
            pickedUpCups.push(nextCupValue);
        }
        // console.log('pick up:', pickedUpCups.join(', '));
        let destinationCupValue = currentCupNode.value;
        while (true) {
            destinationCupValue--;
            if (destinationCupValue < 1) {
                destinationCupValue = 1_000_000;
            }
            if (!pickedUpCups.includes(destinationCupValue)) {
                break;
            }
        }
        // console.log('destination:', destinationCupValue);
        let destinationCup = cupNodes.get(destinationCupValue);
        for (const cup of pickedUpCups) {
            destinationCup = cups.insertAfterNode(destinationCup, cup);
            cupNodes.set(cup, destinationCup);
        }
        currentCupNode = currentCupNode.next ?? cups.head;
        // console.log('');
    }
    const oneCup = cupNodes.get(1);
    const cupA = removeNextCup(oneCup)
    const cupB = removeNextCup(oneCup);
    console.log(cupA * cupB);
};

const run = async () => {
    await part1();
    await part2();
};

run().catch(console.error);

import { ActionReducerMap, MetaReducer, Action} from '@ngrx/store';
import { SearchTermActionTypes, SearchTermAction } from '~app/shared/components/search


e("    {");
		dsdt_line("      Store (0x00, CIR%c)", 'A' + pin);
		dsdt_line("    }");
		dsdt_line("    Return (CB%02X)", pin + 1);
		dsdt_line("  }");
		dsdt_line("  Method (_DIS, 0, NotSerialized)");
		dsdt_line("  {");
		dsdt_line("    Store (0x80, PIR%c)", 'A' + pin);
		dsdt_line("  }");
		dsdt_line("  Method (_SRS, 1, NotSerialized)");
		dsdt_line("  {");
		dsdt_line("    CreateWordField (Arg0, 0x01, SIR%c)", 'A' + pin);
		dsdt_line("    FindSetRightBit (SIR%c, Local0)", 'A' + pin);
		dsdt_line("    Store (Decrement (Local0), PIR%c)", 'A' + pin);
		dsdt_line("  }");
		dsdt_line("}");
	}
	free(irq_prs);
}
LPC_DSDT(pirq_dsdt);


/*!
 * \file
 *
 * Visualise a bunch of agents (as spheres), each of which has a history of locations
 * that it has visited previously, shown as lines. A coloured cap is used to indicate
 * EphA expression level.
 *
 * \author Seb James
 * \date 2021
 */
#pragma once

#include <morph/VisualModel.h>
#include <morph/vec.h>
#include <morph/scale.h>
#include <vector>
#include <array>

#include "branch.h"

template <typename Flt>
class BranchVisual : public morph::VisualModel<>
{
public:
    BranchVisual(const morph::vec<float, 3> _offset, std::vector<branch<Flt>>* _branches)
    {
        this->branches = _branches;
        this->mv_offset = _offset;
        this->viewmatrix.translate (this->mv_offset);
    }

    morph::scale<Flt, Flt> EphA_scale;

    void initializeVertices()
    {
        // For each branch, draw lines for the path history and a sphere for teh current
        // location, with a second colour for the EphA expression.
        for (auto b : *this->branches) {
            // Colour comes from target location.
            std::array<float, 3> clr = { b.tz[0], b.tz[1], 0 };
            std::array<float, 3> clr2 = { 0, 0, this->EphA_scale.transform_one(b.EphA) };
            morph::vec<float, 3> last = { 0, 0, 0 };
            morph::vec<float, 3> cur = { 0, 0, 0 };
            // First draw the path
            for (unsigned int i = 1; i < b.path.size(); ++i) {
                last[0] = b.path[i-1][0];
                last[1] = b.path[i-1][1];
                cur[0] = b.path[i][0];
                cur[1] = b.path[i][1];
                this->computeFlatLineRnd (last, cur, this->uz, clr, this->linewidth, 0.0f, true, false);
            }
            // Finally, a sphere at the last location. Tune number of rings (second last
            // arg) in sphere to change size of clr2 disc at top
            this->computeSphere (cur, clr, clr2, this->radiusFixed, 14, 12);
        }
    }

    //! Set this->radiusFixed, then re-compute vertices.
    void setRadius (float fr)
    {
        this->radiusFixed = fr;
        this->reinit();
    }

    //! Pointer to a vector of branches to visualise
    std::vector<branch<Flt>>* branches = nullptr;
    //! Container for axon centroids. Compute here or only vis here?
    //! Change this to get larger or smaller spheres.
    Flt radiusFixed = Flt{0.01};
    Flt linewidth = Flt{0.008};
    //! A normal vector, fixed as pointing up
    morph::vec<float, 3> uz = {0.0f, 0.0f, 1.0f};
};


vl+'"] div');
		}
		this._map = g;

		//this._level
	}

	public gotoLevel(dir: string) {
		var g = $('#map article[level="'+ this._level +'"]');
		var params = {top:'', left: '', opacity: 0.1};
		if(dir === 'up') {
			this._level++;
			params.top = "+=40";
			params.left = "-=40";
		} else if(dir === 'down') {
			this._level--;
			params.top = "-=40";
			params.left = "+=40";
		}
		//$(g).css('opacity','0.1');
		//$(g).animate(params, 500, function(){});

		this.createLevel();
		$('.wrapper').each(function() {
			//console.log('found');
			var lvl = parseInt($(this).attr('level'),10);
			//console.log('n: ', lvl);
			//var op = 0.1;
			if(lvl === this._level) params.opacity = 1;
			$(this).animate(params,500, function(){});
		});
	}
	public gotoLevel2(d: string) {
		var lvl = this._level;
		var params = {top:'', left: '', opacity: 0.1};
		if(d === 'up') {
			this._level++;
			this.goUp();
		}
		if(d === 'down') {
			this.goDown();
		}

		this.createLevel();

	}
	public newLevel(dir) {
		var g = $('#map article[level="'+ this._level +'"]');
		var params = {top:'', left: '', opacity: 0.1};
		if(dir === 'up') {
			this._level++;
			params.top = "+=40";
			params.left = "-=40";
		} else if(dir === 'down') {
			this._level--;
			params.top = "-=40";
			params.left = "+=40";
		}
		//$(g).css('opacity','0.1');
		$(g).animate(params, 500, function(){});
		this.createLevel();
	}

	public shiftView(direction: string, id: string) {
		var xPos = parseInt($('#' + id).css('left'), 10);
		var yPos = parseInt($('#' + id).css('top'), 10);
        switch(direction) {
            case 'north':
                yPos -= 40;
                break;
            case 'east':
                xPos += 120;
                break;
            case 'south':
                yPos += 40;
                break;
            case 'west':
                xPos -= 120;
                break;
          default:
          		break;
        }
        this.centerMap(yPos, xPos);
	}

	public addRoom(rm: any, direction: any, target) {
		console.log('mapping ', rm.id);
		var t, xPos, yPos;
		var txt;
		if(target === null) { // This is the starting room
			xPos = 1080;
			yPos = 1500;
		} else {
			t = $('#' + target);
			xPos = parseInt($(t).css('left'), 10);
			yPos = parseInt($(t).css('top'), 10);
		}
        switch(direction) {
            case 'north':
                yPos -= 40;
                break;
            case 'east':
                xPos += 120;
                break;
            case 'south':
                yPos += 40;
                break;
            case 'west':
                xPos -= 120;
                break;
          default:
          		break;
        }
        var name = (rm.name.length > 8) ? this.shorten(rm.name) : rm.name;
        var sp = $('<span />').


bilidad>
        <codDocModificado>01</codDocModificado>
        <numDocModificado>001-001-000000001</numDocModificado>
        <fechaEmisionDocSustento>25/01/2022</fechaEmisionDocSustento>
        <totalSinImpuestos>400.000000</totalSinImpuestos>
        <valorModificacion>448.00</valorModificacion>
        <moneda>DOLAR</moneda>
        <totalConImpuestos>
            <totalImpuesto>
                <codigo>2</codigo>
                <codigoPorcentaje>2</codigoPorcentaje>
                <baseImponible>400.000000</baseImponible>
                <valor>48.00</valor>
            </totalImpuesto>
        </totalConImpuestos>
        <motivo>NotCr 001-001-000000001</motivo>
    </infoNotaCredito>
    <detalles>
        <detalle>
            <codigoInterno>N/A</codigoInterno>
            <descripcion>product_a</descripcion>
            <cantidad>5.000000</cantidad>
            <precioUnitario>100.000000</precioUnitario>
            <descuento>100.00</descuento>
            <precioTotalSinImpuesto>400.00</precioTotalSinImpuesto>
            <impuestos>
                <impuesto>
                    <codigo>2</codigo>
                    <codigoPorcentaje>2</codigoPorcentaje>
                    <tarifa>12.000000</tarifa>
                    <baseImponible>400.000000</baseImponible>
                    <valor>48.00</valor>
                </impuesto>
            </impuestos>
        </detalle>
    </detalles>
    <infoAdicional>
        <campoAdicional nombre="Referencia">NotCr 001-001-000000001</campoAdicional>
        <campoAdicional nombre="Vendedor">Because I am accountman!</campoAdicional>
        <campoAdicional nombre="E-mail">accountman@test.com</campoAdicional>
    </infoAdicional>
</notaCredito>""".encode()

L10N_EC_EDI_XML_PURCHASE_LIQ = """
<liquidacionCompra version="1.1.0" id="comprobante">
    <infoTributaria>
        <ambiente>1</ambiente>
        <tipoEmision>1</tipoEmision>
        <razonSocial>PRUEBAS SERVICIO DE RENTAS INTERNAS</razonSocial>
        <nombreComercial>PRUEBAS SERVICIO DE RENTAS INTERNAS</nombreComercial>
        <ruc>1792366836001</ruc>
        <claveAcceso>2501202203179236683600110010010000000013121521413</claveAcceso>
        <codDoc>03</codDoc>
        <estab>001</estab>
        <ptoEmi>001</ptoEmi>
        <secuencial>000000001</secuencial>
        <dirMatriz>Avenida Machala 42</dirMatriz>
    </infoTributaria>
    <infoLiquidacionCompra>
        <fechaEmision>25/01/2022</fechaEmision>
        <dirEstablecimiento>Avenida Machala 42</dirEstablecimiento>
        <obligadoContabilidad>SI</obligadoContabilidad>
        <tipoIdentificacionProveedor>05</tipoIdentificacionProveedor>
        <razonSocialProveedor>EC Test Partner AàÁ³$£€èêÈÊöÔÇç¡⅛&@™</razonSocialProveedor>
        <identificacionProveedor>0453661050</identificacionProveedor>
        <direccionProveedor>Av. Libertador Simón Bolívar 1155</direccionProveedor>
        <totalSinImpuestos>400.000000</totalSinImpuestos>
        <totalDescuento>100.00</totalDescuento>
        <totalConImpuestos>
            <totalImpuesto>
                <codigo>2</codigo>
                <codigoPorcentaje>2</codigoPorcentaje>
                <baseImponible>400.000000</baseImponible>
                <valor>48.00</valor>
            </totalImpuesto>
        </totalConImpuestos>
        <importeTotal>448.00</importeTotal>
        <moneda>DOLAR</moneda>
        <pagos>
            <pago>
                <formaPago>16</formaPago>
                <total>134.40</total>
                <plazo>0</plazo>
                <unidadTiempo>dias</unidadTiempo>
            </pago>
            <pago>
                <formaPago>16</formaPago>
                <total>313.60</total>
                <plazo>34</plazo>
                <unidadTiempo>dias</unidadTiempo>
            </pago>
        </pagos>
    </infoLiquidacionCompra>
    <detalles>
        <detalle>
            <codigoPrincipal>N/A</codigoPrincipal>
            <descripcion>product_a</descripcion>
            <cantidad>5.000000</cantidad>
            <precioUnitario>100.000000</precioUnitario>
            <descuento>100.00</descuento>
            <precioTotalSinImpuesto>400.00</precioTotalSinImpuesto>
            <impuestos>
                <impuesto>
                    <codigo>2</codigo>
                    <codigoPorcentaje>2</codigoPorcentaje>
                    <tarifa>12.000000</tarifa>
                    <baseImponible>400.000000</baseImponible>
                    <valor>48.00</valor>


ame time to gain unfair advantages by abusing game mechanics such as item find stacking, pre-buffing, healbotting or other PVE / PVP activities.'
      // ru: 'Играя несколькими персонажами одновременно, получая несправедливые преимущества, злоупотребляя игровой механикой, такой как укладка предметов, предварительные бафы,
      // исцеление или другие действия PVE / PVP.'
      // fr: 'Jouer plusieurs personnages en même temps pour obtenir des avantages injustes en abusant des mécanismes du jeu tels que l'accumulation de Trouvaille,
      // le pré-buffing, le healbotting ou d'autres activités PVE / PVP.'
      // tr: 'Adil olmayan avantaj için aynı zamanda birden fazla karakterle oynama, eşya bulma oranını arttırmak, Ön güçlendirme, iyileştirme botu veya diğer PVE / PVP eylemleri gibi.'
      // cs: 'Hraní více postav současně, abyste získali nespravedlivé výhody zneužíváním herních mechanismů, jako je skládání položek, předbuffování, healbotování nebo jiné PVE / PVP aktivity.'
    },
    {
      en: 'Tricking players into dropping items or falsely advertising ingame services with the sole intention of stealing someones wealth or items.'
      // ru: 'Обманом заставляя игроков бросать предметы или ложно рекламировать игровые сервисы с единственным намерением украсть чье-то богатство или предметы.'
      // fr: 'Tromper les joueurs pour qu'ils abandonnent des objets ou faire de la publicité mensongère pour des services en jeu dans le seul but de voler la richesse ou les objets de quelqu'un.'
      // tr: 'Oyuncuları eşyalarını düşürmek için kandrımak veya oyun içi servislerde yalan şekilde kullanarak para veya eşya çalmak.'
      // cs: 'Podvádění hráčů, aby vyhodili předměty nebo falešná reklama na herní služby s úmyslem ukrást něčí bohatství nebo předměty.'
    },
    {
      en: 'Bypassing regular gameplay by using cheating tools for unfair advantages or abusing severe game bugs that give unintended advantages.'
      // ru: 'Обход обычного игрового процесса путем использования мошеннических инструментов для получения несправедливых преимуществ или злоупотребления серьезными ошибками в игре,
      // которые дают непреднамеренные преимущества.'
      // fr: 'Contourner les règles du jeu en utilisant des outils de triche pour obtenir des avantages déloyaux ou en abusant de graves bugs de jeu qui donnent des avantages involontaires.'
      // tr: 'Hile araçları ile normal oynayışı atlayıp adil olmayan avantaj kazanmak veya oyunun hatalarını ağır şekilde kötüye


   *
   * @param  {string} type Format in which response is required.
   * @param  {object} response A response from a network request
   *
   * @return {object} The parsed data in required format from the request
   */
  static _parseResponse(type:string ,response:any) :any{
    if (response.status === 204 || response.status === 205) {
      return null;
    }
    return (type === 'json') ? response.json() : response.text();
  }

  /**
   * Checks if a network request came back fine, and throws an error if not
   *
   * @param  {object} response   A response from a network request
   *
   * @return {object|undefined} Returns either the response, or throws an error
   */
  static _checkStatus(response:any) {
    if (response.status >= 200 && response.status < 300) {
      return response;
    }

    const error :any= new Error(response.statusText);
    error.response = response;
    throw error;
  }

  /**
   * Converts parameters from GET request to append in URL.
   *
   * @param  {object} queryParams Query parameters.
   *
   * @return {string} string to append in URL.
   */

  _getQuery(queryParams:object):string {
    const arr = Object.keys(queryParams).map(k => `${k}=${encodeURIComponent(queryParams[k])}`);
    return `?${arr.join('&')}`;
  }

  /**
   * Converts post/patch/put json data to application/x-www-form-urlencoded data format.
   *
   * @param data Data in JSON format
   *
   * @return {string} form-url-encoded string
   */

  _getFormEncodedData(data:any):string {
    const formBody = [];
    for (const property in data) {
      const encodedKey = encodeURIComponent(property);
      const encodedValue = encodeURIComponent(data[property]);
      formBody.push(`${encodedKey}=${encodedValue}`);
    }
    return formBody.join('&');
  }

  /**
   * Adds default headers for request if not passed by saga.
   *
   * @param  {object} target Object in which we are adding default headers.
   * @param  {object} headers Default headers to add.
   */

  static _addDefaults(target:object, headers:object) {
    for (const prop in headers) {
      target[prop] = target[prop] || headers[prop];
    }
  }

  /**
   * Requests a URL, returning a promise
   *
   * @param  {string} method HTTP Method of request.
   * @param  {string} url URL of request.
   * @param  {object} opts optional headers.
   * @param  {object} data Data to submit. Required by POST, PATCH, DELETE, PUT requests.
   * @param  {object} queryParams Query Parameters for GET requests.
   *
   * @return {object} The response data.
   */

  _fetch(method:string, url:string, opts:any, data :any= null, queryParams :any= null):object {
    opts.method = method;
    opts.headers = opts.headers || {};
    opts.responseAs = (opts.responseAs && ['json', 'text'].includes(opts.responseAs)) ? opts.responseAs : 'json';

    Request._addDefaults(opts.headers, {
      Accept: 'application/json',
    });

    if (queryParams) {
      url += this._getQuery(queryParams);
    }


ote: String?,
        @Query(value = "locked") locked: Boolean?,
    ): Account

    /**
     * Pixelfed uses PHP, multipart uploads don't work through PATCH so we use POST as suggested
     * here: https://github.com/pixelfed/pixelfed/issues/4250
     * However, changing to POST breaks the upload on Mastodon.
     *
     * To have this work on Pixelfed and Mastodon without special logic to distinguish the two,
     * we'll have to wait for PHP 8.4 and https://wiki.php.net/rfc/rfc1867-non-post
     * which should come out end of 2024
     */
    @Multipart
    @POST("/api/v1/accounts/update_credentials")
    fun updateProfilePicture(
        @Part avatar: MultipartBody.Part?
    ): Observable<Account>

    @Multipart
    @PATCH("/api/v1/accounts/update_credentials")
    fun updateProfilePictureMastodon(
        @Part avatar: MultipartBody.Part?
    ): Observable<Account>

    @GET("/api/v1/accounts/{id}/statuses")
    suspend fun accountPosts(
            @Path("id") account_id: String,
            @Query("min_id") min_id: String? = null,
            @Query("max_id") max_id: String?,
            @Query("limit") limit: Int
    ) : List<Status>

    @GET("/api/v1/accounts/relationships")
    suspend fun checkRelationships(
        @Query("id[]") account_ids : List<String>
    ) : List<Relationship>

    @GET("/api/v1/accounts/{id}/followers")
    suspend fun followers(
        @Path("id") account_id: String,
        @Query("max_id") max_id: String? = null,
        @Query("since_id") since_id: String? = null,
        @Query("limit") limit: Number? = null,
        @Query("page") page: String? = null
    ) : Response<List<Account>>

    @GET("/api/v1/accounts/{id}/following")
    suspend fun following(
        @Path("id") account_id: String,
        @Query("max_id") max_id: String? = null,
        @Query("since_id") since_id: String? = null,
        @Query("limit") limit: Number? = 40,
        @Query("page") page: String? = null
    ) : Response<List<Account>>

    @GET("/api/v1/accounts/{id}")
    suspend fun getAccount(
        @Path("id") accountId : String
    ): Account

    @GET("/api/v1/statuses/{id}")
    suspend fun getStatus(
        @Path("id") accountId : String
    ): Status

    @Multipart
    @POST("/api/v1/media")
    fun mediaUpload(
        @Part description: MultipartBody.Part? = null,
        @Part file: MultipartBody.Part
    ): Observable<Attachment>

    // get discover
    @GET("/api/v1/discover/posts")
    suspend fun discover() : DiscoverPosts

    @GET("/api/v1.1/discover/accounts/popular")
    suspend fun popularAccounts() : List<Account>

    @GET("/api/v1.1/discover/posts/trending")
    suspend fun trendingPosts(
        @Query("range") range: TrendingActivity.Companion.Range
    ) : List<Status>

    @GET("/api/v1.1/discover/posts/hashtags")
    suspend fun trendingHashtags() : List<Tag>

    @GET("/api/v1/conversations")
    suspend fun directMessagesList(
//        @Query("max_id") max_id: String? = null,
//        @Query("since_id") since_id: String? = null,
    //        @Query("min_id") min_id: String? = null,
        @Query("page") page: Int? =


articipação de um no outro; ele é um instrumento. Vê-se que a reflexão não merece a acusação de esterilidade: se ela nos destaca do mundo, é para nos colocar em presença da atividade criadora da qual tudo procede e da qual ela nos faz participar.

Aqui o texto termina com uma sentença de Jules Lachelier, que Louis Lavelle citava com freqüência (ele considerava Jules Lachelier um dos seus gurus):

> O próprio da filosofia é buscar a origem dos nossos conhecimentos em um ou vários atos concretos pelos quais o pensamento se constitui a si mesmo ao apreender imediatamente a realidade.

Examinar -- por rememoração e reflexão -- estes atos reais de conhecimento pelos quais o sujeito humano, no confronto com a realidade, se constitui a si mesmo como sujeito pensante e como sujeito de uma liberdade criadora que se constitui a si mesma. Esta frase de Jules Lachelier, de certo modo, já continha em germe toda a filosofia de Louis Lavelle. Aliás, a filosofia francesa do século XIX (que normalmente no Brasil, hoje em dia, é completamente ignorada, embora não o fosse até os anos 50-60) é coisa de uma riqueza absolutamente impressionante. E a babaquice desse germanismo louco, que defende que filósofo é Hegel, é Wittgenstein, é coisa completamente sem fundamento, pois eles são uns micos perto desses franceses de que falo. Tomemos, por exemplo, Lachelier, Hamelin, Renouvier: isto é uma fortuna, isto não acaba mais. Ou seja, a capital da filosofia não é a Alemanha, é a boa e velha França, sobretudo a do século XIX.

\*\*\*\*\*\*\*

*Aluno: Sobre esse potencial em curso de realização, conhecido como vocação: como sei se quem eu escolhi ser é realmente quem eu deveria ser? Ou será essa formulação do problema um erro?*

Olavo: Em primeiro lugar, o potencial em curso de realização é a totalidade dos valores que a pessoa incorpora, e não somente vocação. Vocação é uma imagem parcial que traduz isso, esquematicamente e vagamente, em termos de uma carreira profissional ou uma atividade no mundo, mas é só um pedaço. A vocação não responde inteiramente \[à pergunta\] *quem* você quer ser, mas, em parte, o *que* você quer ser.

Em segundo lugar, a pergunta: "Como sei se quem escolhi ser é realmente quem eu deveria ser?" Bem, você não sabe, você só sabe quem você escolheu ser. E o ajuste maior ou menor disso com as suas verdadeiras disposições é uma coisa que você só perceberá no curso do tempo. Foi por isso que sugeri que se fizesse o exercício do necrológio várias vezes.

*Aluno: Seria viável analisar as duas fases do pensamento do Leonardo Boff, a fase da Teologia da Libertação, como em* Igreja: Carisma e Poder*, dentre outros, em contraste com a fase Nova Era, como em* Ecologia, Mundialização, Espiritualidade*, dentre outros, utilizando* A Nova Era e a Revolução Cultural *e* O Jardim das Aflições *como texto de fundo para desenvolver a tese de que as duas formas de pensamento* -- *revolução cultural e Nova Era* -- *são como dois lados do mesmo fenômeno?*

Olavo: Sem a menor sombra de dúvida. O arcabouço conceitual para analisar isso, se não está inteiramente dado ali, está pelo menos esboçado. Mas eu escrevi muito mais coisa a esse respeito. Se você procur


     */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */   public int compareTo(BigDecimal rhs)
/*      */   {
/* 1227 */     return compareTo(rhs, plainMC);
/*      */   }
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */   public int compareTo(BigDecimal rhs, MathContext set)
/*      */   {
/* 1259 */     int thislength = 0;
/* 1260 */     int i = 0;
/*      */
/*      */
/* 1263 */     if (set.lostDigits) {
/* 1264 */       checkdigits(rhs, set.digits);
/*      */     }
/* 1266 */     if (((this.ind == rhs.ind ? 1 : 0) & (this.exp == rhs.exp ? 1 : 0)) != 0)
/*      */     {
/* 1268 */       thislength = this.mant.length;
/* 1269 */       if (thislength < rhs.mant.length)
/* 1270 */         return (byte)-this.ind;
/* 1271 */       if (thislength > rhs.mant.length) {
/* 1272 */         return this.ind;
/*      */       }
/*      */
/*      */
/*      */
/* 1277 */       if (((thislength <= set.digits ? 1 : 0) | (set.digits == 0 ? 1 : 0)) != 0)
/*      */       {
/* 1279 */         int $6 = thislength;
/* 1280 */         for (i = 0;
/* 1281 */             $6 > 0; i++) {
/* 1282 */           if (this.mant[i] < rhs.mant[i])
/* 1283 */             return (byte)-this.ind;
/* 1284 */           if (this.mant[i] > rhs.mant[i]) {
/* 1285 */             return this.ind;
/*      */           }
/* 1281 */           $6--;
/*      */         }
/*      */
/*      */
/*      */
/*      */
/*      */
/* 1288 */         return 0;
/*      */       }
/*      */     }
/*      */     else
/*      */     {
/* 1293 */       if (this.ind < rhs.ind)
/* 1294 */         return -1;
/* 1295 */       if (this.ind > rhs.ind) {
/* 1296 */         return 1;
/*      */       }
/*      */     }
/* 1299 */     BigDecimal newrhs = clone(rhs);
/* 1300 */     newrhs.ind = ((byte)-newrhs.ind);
/* 1301 */     return add(newrhs, set).ind;
/*      */   }
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */   public BigDecimal divide(BigDecimal rhs)
/*      */   {
/* 1320 */     return dodivide('D', rhs, plainMC, -1);
/*      */   }
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*      */
/*


ull)
        {
            var dialog = new OpenFileDialog()
            {
                Filter = filter,
                Multiselect = true
            };

            if (!initialDir.IsNullOrWhiteSpace() && Directory.Exists(initialDir))
                dialog.InitialDirectory = initialDir;

            var dialogResult = owner == null ? dialog.ShowDialog() : dialog.ShowDialog(owner);
            if (dialogResult == true)
            {
                return dialog.FileNames.ToList();
            }
            else
            {
                return null;
            }
        }

        public static List<string> SelectFiles(string filter)
        {
            return SelectFiles(null, filter);
        }

        public static string SelectFile(Window owner, string filter, string initialDir = null)
        {
            var dialog = new OpenFileDialog()
            {
                Filter = filter
            };

            if (!initialDir.IsNullOrWhiteSpace() && Directory.Exists(initialDir))
                dialog.InitialDirectory = initialDir;

            var dialogResult = owner == null ? dialog.ShowDialog() : dialog.ShowDialog(owner);
            if (dialogResult == true)
            {
                return dialog.FileName;
            }
            else
            {
                return string.Empty;
            }
        }

        public static string SelectFile(string filter, string initialDir = null)
        {
            return SelectFile(null, filter, initialDir);
        }

        public static string SelectIconFile(Window owner, string initialDir = null)
        {
            return SelectFile(owner, "Icon Files|*.bmp;*.jpg*;*.jpeg*;*.png;*.gif;*.ico;*.tga;*.exe;*.tif;*.webp;*.avif", initialDir);
        }

        public static string SelectIconFile(string initialDir = null)
        {
            return SelectIconFile(null, initialDir);
        }

        public static string SelectImageFile(Window owner, string initialDir = null)
        {
            return SelectFile(owner, "Image Files|*.bmp;*.jpg*;*.jpeg*;*.png;*.gif;*.tga;*.tif;*.webp;*.avif", initialDir);
        }

        public static string SelectImageFile(string initialDir = null)
        {
            return SelectIconFile(null, initialDir);
        }
    }
}


import json

class ConfigProvider:

    @staticmethod
    def load_config_json():
        try:
            with open('../config.json', 'r') as f:
                return json.load(f)
        except FileNotFoundError:
            print(f"File not found. Starting with an empty library.")


BE6;CBE6;110D 1173 11B9;CBE6;110D 1173 11B9; # (쯦; 쯦; 쯦; 쯦; 쯦; ) HANGUL SYLLABLE JJEUBS
CBE7;CBE7;110D 1173 11BA;CBE7;110D 1173 11BA; # (쯧; 쯧; 쯧; 쯧; 쯧; ) HANGUL SYLLABLE JJEUS
CBE8;CBE8;110D 1173 11BB;CBE8;110D 1173 11BB; # (쯨; 쯨; 쯨; 쯨; 쯨; ) HANGUL SYLLABLE JJEUSS
CBE9;CBE9;110D 1173 11BC;CBE9;110D 1173 11BC; # (쯩; 쯩; 쯩; 쯩; 쯩; ) HANGUL SYLLABLE JJEUNG
CBEA;CBEA;110D 1173 11BD;CBEA;110D 1173 11BD; # (쯪; 쯪; 쯪; 쯪; 쯪; ) HANGUL SYLLABLE JJEUJ
CBEB;CBEB;110D 1173 11BE;CBEB;110D 1173 11BE; # (쯫; 쯫; 쯫; 쯫; 쯫; ) HANGUL SYLLABLE JJEUC
CBEC;CBEC;110D 1173 11BF;CBEC;110D 1173 11BF; # (쯬; 쯬; 쯬; 쯬; 쯬; ) HANGUL SYLLABLE JJEUK
CBED;CBED;110D 1173 11C0;CBED;110D 1173 11C0; # (쯭; 쯭; 쯭; 쯭; 쯭; ) HANGUL SYLLABLE JJEUT
CBEE;CBEE;110D 1173 11C1;CBEE;110D 1173 11C1; # (쯮; 쯮; 쯮; 쯮; 쯮; ) HANGUL SYLLABLE JJEUP
CBEF;CBEF;110D 1173 11C2;CBEF;110D 1173 11C2; # (쯯; 쯯; 쯯; 쯯; 쯯; ) HANGUL SYLLABLE JJEUH
CBF0;CBF0;110D 1174;CBF0;110D 1174; # (쯰; 쯰; 쯰; 쯰; 쯰; ) HANGUL SYLLABLE JJYI
CBF1;CBF1;110D 1174 11A8;CBF1;110D 1174 11A8; # (쯱; 쯱; 쯱; 쯱; 쯱; ) HANGUL SYLLABLE JJYIG
CBF2;CBF2;110D 1174 11A9;CBF2;110D 1174 11A9; # (쯲; 쯲; 쯲; 쯲; 쯲; ) HANGUL SYLLABLE JJYIGG
CBF3;CBF3;110D 1174 11AA;CBF3;110D 1174 11AA; # (쯳; 쯳; 쯳; 쯳; 쯳; ) HANGUL SYLLABLE JJYIGS
CBF4;CBF4;110D 1174 11AB;CBF4;110D 1174 11AB; # (쯴; 쯴; 쯴; 쯴; 쯴; ) HANGUL SYLLABLE JJYIN
CBF5;CBF5;110D 1174 11AC;CBF5;110D 1174 11AC; # (쯵; 쯵; 쯵; 쯵; 쯵; ) HANGUL SYLLABLE JJYINJ
CBF6;CBF6;110D 1174 11AD;CBF6;110D 1174 11AD; # (쯶; 쯶; 쯶; 쯶; 쯶; ) HANGUL SYLLABLE JJYINH
CBF7;CBF7;11


--------------------------------------------------------------------------------------------------------
--
--		Hero: Pugna
--		Perk: Drain spells will have 50% mana refunded and have 25% reduced cooldowns when cast by Pugna.
--
--------------------------------------------------------------------------------------------------------
LinkLuaModifier( "modifier_npc_dota_hero_pugna_perk", "abilities/hero_perks/npc_dota_hero_pugna_perk.lua" ,LUA_MODIFIER_MOTION_NONE )
--------------------------------------------------------------------------------------------------------
if npc_dota_hero_pugna_perk ~= "" then npc_dota_hero_pugna_perk = class({}) end
--------------------------------------------------------------------------------------------------------
--		Modifier: modifier_npc_dota_hero_pugna_perk
--------------------------------------------------------------------------------------------------------
if modifier_npc_dota_hero_pugna_perk ~= "" then modifier_npc_dota_hero_pugna_perk = class({}) end
--------------------------------------------------------------------------------------------------------
function modifier_npc_dota_hero_pugna_perk:IsPassive()
	return true
end
--------------------------------------------------------------------------------------------------------
function modifier_npc_dota_hero_pugna_perk:IsPurgable()
	return false
end
----------------------------------------------------------------------------------------


      ),
    );

extension ThemeAccentRepresentativeColor on ThemeAccent {
  CupertinoDynamicColor _color(Color light, Color dark) =>
      CupertinoDynamicColor.withBrightness(color: light, darkColor: dark);
  CupertinoDynamicColor get representativeColor => switch (this) {
    ThemeAccent.blue => _color(Colors.blue, Colors.blue.tint(.1)),
    ThemeAccent.gray => _color(Colors.grey, Colors.grey.tint(.1)),
    ThemeAccent.green => _color(Colors.green, Colors.green.tint(.1)),
    ThemeAccent.neutral => _color(Colors.white, Colors.black),
    ThemeAccent.orange => _color(Colors.orange, Colors.orange.tint(.1)),
    ThemeAccent.red => _color(Colors.red, Colors.red.tint(.1)),
    ThemeAccent.rose => _color(Colors.pink, Colors.pink.tint(.1)),
    ThemeAccent.slate => _color(Colors.blueGrey, Colors.blueGrey.tint(.1)),
    ThemeAccent.stone => _color(
      const Color(0xfff5f5f4),
      const Color(0xff292524),
    ),
    ThemeAccent.violet => _color(Colors.purple, Colors.purple.tint(.1)),
    ThemeAccent.yellow => _color(Colors.yellow, Colors.yellow.tint(.1)),
    ThemeAccent.zinc => _color(
      const Color(0xff27272a),
      const Color(0xfff4f4f5),
    ),
  };
}

extension TextStyleUtils on TextStyle {
  /// Modifies the weight of the font.
  ///
  /// Fractional weight deltas are only supported for variable fonts.
  /// For non-variable fonts such as, [delta] will be rounded to the nearest
  /// integer.
  ///
  /// A [delta] value of `0.0` will return the current [TextStyle] without any
  /// changes. A non-zero [delta] value will be added the weight in multiples
  /// of `100`. Typically, the weight is clamped below by `100` and above by
  /// `900`, but the exact effect can vary depending on the font.
  ///
  TextStyle addWeight(double delta) {
    if (delta == 0.0) {
      return this;
    }
    final weight =
        fontVariations
                ?.firstWhereOrNull((variation) => variation.axis == 'wght')
                ?.value
            as num?;
    if (weight != null && fontVariations == null) {
      return apply(fontWeightDelta: delta.round());
    }
    return copyWith(
      fontVariations: [FontVariation.weight((weight ?? 400) + delta * 100)],
    );
  }

  /// Modifies the letter spacing of the font if the language is not in the
  /// [avoidedLangs] list.
  ///
  /// Defaults to `0.0`, which is the normal letter spacing. A positive value
  /// will increase the letter spacing, and a negative value will decrease it.
  ///
  TextStyle withLetterSpacing(double delta) {
    return apply(letterSpacingDelta: delta);
  }

  /// Modifies the width of the font. This is only supported
  /// for variable fonts such as [kLabelFontFamily].
  ///
  /// Note that [kFontFamily] does not support width modification.
  ///
  /// Defaults to `1.0`, which is the normal width. A value greater
  /// than `1.0` will expand the width, and a value less than `1.0`
  /// will condense the width.
  ///
  // TextStyle modifyWidth([double width = 1.0]) => copyWith(
  //       fontVariations: [FontVariation.width(width * 100.0)],
  //     );

  TextStyle enableFeature(String feature) {
    return copyWith(
      fontFeatures: [...?fontFeatures, FontFeature.enable(feature)],
    );
  }

  TextStyle enableFeatures(List<String> features) {
    return copyWith(
      fontFeatures: [...?fontFeatures, ...features.map(FontFeature.enable)],


 0; i < discInfo.refs.length; i++) {
                    ref = discInfo.refs[i]
                    remote.addRef(ref.name, ref.sha)
                }
                if (callback != "undefined") {
                    callback(discInfo.refs)
                }
            });
        }

        this.fetchRef = function(wantRefs, haveRefs, shallow, depth, moreHaves, callback, noCommon, progress) {
            var url = this.makeUri('/git-upload-pack')
            var body = refWantRequest(wantRefs, haveRefs, shallow, depth);
            var thisRemote = this
            var xhr = new XMLHttpRequest();

            var packProgress, receiveProgress;
            if (progress){
                var chunker = new ProgressChunker(progress);
                receiveProgress = chunker.getChunk(0, 0.2);
                packProgress = chunker.getChunk(20, 0.8);
            }

            xhr.open("POST", url, true, username, password);
            xhr.responseType = 'arraybuffer';
            xhr.setRequestHeader("Content-Type", "application/x-git-upload-pack-request");

            xhr.onload = function() {

                var binaryData = xhr.response;
                if (haveRefs && String.fromCharCode.apply(null, new Uint8Array(binaryData, 4, 3)) == "NAK") {
                    if (moreHaves) {
                        thisRemote.store._getCommitGraph(moreHaves, 32, function(commits, next) {
                            thisRemote.fetchRef(wantRefs, commits, depth, next, callback, noCommon);
                        });
                    }
                    else if (noCommon){
                        noCommon();
                    }
                } else {
                    if (packProgress){
                        packProgress({pct: 0, msg: "Parsing pack data"});
                    }
                    UploadPackParser.parse(binaryData, store, function(objects, packData, common, shallow) {
                        if (callback) {
                            callback(objects, packData, common, shallow);
                        }
                    }, packProgress);
                    // var packWorker = new Worker(workerUrl);
                    // packWorker.onmessage = function(evt){
                    //     var msg = evt.data;
                    //     if (msg.type == GitLiteWorkerMessages.FINISHED && callback){
                    //         packWorker.terminate();
                    //         callback(msg.objects, new Uint8Array(msg.data), msg.common);
                    //     }
                    //     else if (msg.type == GitLiteWorkerMessages.RETRIEVE_OBJECT){
                    //         store._retrieveRawObject(msg.sha, "ArrayBuffer", function(baseObject){
                    //             packWorker.postMessage({type: GitLiteWorkerMessages.OBJECT_RETRIEVED, id: msg.id, object: baseObject}, [baseObject.data]);
                    //             var x = 0;
                    //         });
                    //     }
                    //     else if (progress && msg.type == GitLiteWorkerMessages.PROGRESS){
                    //         progress(msg);
                    //     }
                    // }
                    // packWorker.postMessage({type: GitLiteWorkerMessages.START, data:binaryData}, [binaryData]);
                }
            }
            if (receiveProgress){
                xhr.onprogress = function(evt){
                    // if (evt.lengthComputable){
                    //     var pct = evt.loaded / evt.total;
                    //     receiveProgress({pct: pct, msg: "Received " + evt.loaded + "/" + evt.total + " bytes"});
                    // }
                    // else{

                        receiveProgress({pct: 100, msg: "Received " + (evt.loaded/1048576).toFixed(2) + "