e query")
	q = &chat1.GetInboxQuery{Status: []chat1.ConversationStatus{chat1.ConversationStatus_IGNORED}}
	mergeReadAndCheck(t, ignored, "ignored")

	t.Logf("merging muted query")
	q = &chat1.GetInboxQuery{Status: []chat1.ConversationStatus{chat1.ConversationStatus_MUTED}}
	mergeReadAndCheck(t, muted, "muted")

	t.Logf("merging tlf ID query")
	q = &chat1.GetInboxQuery{TlfID: &full[0].Conv.Metadata.IdTriple.Tlfid}
	tlfIDs := []types.RemoteConversation{full[0]}
	mergeReadAndCheck(t, tlfIDs, "tlfids")

	t.Logf("merging after query")
	after := full[:4]
	atime := gregor1.Time(15)
	q = &chat1.GetInboxQuery{After: &atime}
	mergeReadAndCheck(t, after, "after")

	t.Logf("merging before query")
	before := full[5:]
	var beforeConvIDs []chat1.ConversationID
	for _, bconv := range before {
		beforeConvIDs = append(beforeConvIDs, bconv.GetConvID())
	}
	btime := gregor1.Time(15)
	q = &chat1.GetInboxQuery{Before: &btime}
	mergeReadAndCheck(t, before, "before")

	t.Logf("check conv IDs queries work")
	q = &chat1.GetInboxQuery{Before: &btime, ConvIDs: beforeConvIDs}
	_, cres, err := inbox.Read(context.TODO(), uid, q)
	require.NoError(t, err)
	convListCompare(t, before, cres, "convIDs")
}

func TestInboxEmptySuperseder(t *testing.T) {
	tc, inbox, uid := setupInboxTest(t, "queries")
	defer tc.Cleanup()

	// Create an inbox with a bunch of convos, merge it and read it back out
	numConvs := 20
	var convs []types.RemoteConversation
	for i := 0; i < numConvs; i++ {
		conv := makeConvo(gregor1.Time(i), 1, 1)
		conv.Conv.MaxMsgSummaries = nil
		convs = append(convs, conv)
	}
	var full, superseded []types.RemoteConversation
	convs[6].Conv.Metadata.SupersededBy = append(convs[6].Conv.Metadata.SupersededBy, convs[17].Conv.Metadata)
	convs[17].Conv.Metadata.Supersedes = append(convs[17].Conv.Metadata.Supersedes, convs[6].Conv.Metadata)
	for i := len(convs) - 1; i >= 0; i-- {
		// Don't skip the superseded one, since it's not supposed to be filtered out
		// by an empty superseder
		full = append(full, convs[i])
	}
	for _, conv := range full {
		t.Logf("convID: %s", conv.GetConvID())
	}

	require.NoError(t, inbox.Merge(context.TODO(), uid, 1, utils.PluckConvs(convs), nil))

	// Merge in queries and try to read them back out
	var q *chat1.GetInboxQuery
	mergeReadAndCheck := func(t *testing.T, ref []types.RemoteConversation, name string) {
		require.NoError(t, inbox.Merge(context.TODO(), uid, 1, []chat1.Conversation{}, q))
		_, res, err := inbox.Read(context.TODO(), uid, q)
		require.NoError(t, err)
		convListCompare(t, ref, res, name)
	}
	t.Logf("merging all convs with nil query")
	q = nil
	mergeReadAndCheck(t, full, "all")

	t.Logf


test("validates when all Drone environment vars are set", () => {
    const drone = new Drone(correctEnv)
    expect(drone.isCI).toBeTruthy()
  })

  test("does not validate without DRONE", () => {
    const drone = new Drone({})
    expect(drone.isCI).toBeFalsy()
  })
})

describe(".isPR", () => {
  test("validates when all Drone environment vars are set", () => {
    const drone = new Drone(correctEnv)
    expect(drone.isPR).toBeTruthy()
  })

  test("does not validate without DRONE_PULL_REQUEST", () => {
    const drone = new Drone({})
    expect(drone.isPR).toBeFalsy()
  })

  const envs = ["DRONE_PULL_REQUEST", "DRONE_REPO"]
  envs.forEach((key: string) => {
    let env = {
      DRONE: "true",
      DRONE_PULL_REQUEST: "800",
      DRONE_REPO: "artsy/eigen",
    }
    env[key] = null

    test(`does not validate when ${key} is missing`, () => {
      const drone = new Drone(env)
      expect(drone.isPR).toBeFalsy()
    })
  })

  it("needs to have a PR number", () => {
    let env = {
      DRONE: "true",
      DRONE_PULL_REQUEST: "asdasd",
      DRONE_REPO: "artsy/eigen",
    }
    const drone = new Drone(env)
    expect(drone.isPR).toBeFalsy()
  })
})

describe(".pullRequestID", () => {
  it("pulls it out of the env", () => {
    const drone = new Drone(correctEnv)
    expect(drone.pullRequestID).toEqual("800")
  })
})

describe(".repoSlug", () => {
  it("pulls it out of the env", () => {
    const drone = new Drone(correctEnv)
    expect(drone.repoSlug).toEqual("artsy/eigen")
  })
})
import { SKLayer,BorderRadius } from '../../types';
import { precisionControl } from '../../common/utils'
/**
 * 计算圆角
 * @param {*} layer 图层
 *  pointRadiusBehaviour: 1 round Corners
 *  pointRadiusBehaviour: 2 smooth Corners
 */
const calculateBorderRadius = (layer:SKLayer):BorderRadius=> {
    if (layer.points && layer.points.length !== 4) { // 不是 4 个锚点组成的不计算圆角
        return {}
    }

    // 如果 points 的模式是   curveMode: 1 的情况， 以四个角的角度作为圆角的大小
    if (layer.points && layer.points.length == 4 && layer.points[0].curveMode == 1 && layer.points[1].curveMode == 1 && layer.points[2].curveMode == 1 && layer.points[3].curveMode == 1 && layer.fixedRadius !== undefined) {
        const cornerRadiusList = [];
        for (let item of layer.points) {
            cornerRadiusList.push(item.cornerRadius);
        }
        const [topLeft, topRight, bottomRight, bottomLeft] = cornerRadiusList; // 上、右、下、左

        return {
            topLeft: precisionControl(topLeft),
            topRight: precisionControl(topRight),
            bottomRight: precisionControl(bottomRight),
            bottomLeft: precisionControl(bottomLeft)
        }
    }

    // 如果 points 的模式是 curveMode: 2 cornerRadius: 0 的情况，为正圆
    if (layer.points?.length === 4 && layer.points[0].curveMode === 2 && layer.points[1].curveMode === 2 && layer.points[2].curveMode === 2 && layer.points[3].curveMode === 2) {
        const cornerRadiusList = [];
        for (let item of layer.points) {
            cornerRadiusList.push(item.cornerRadius);
        }
        const [topLeft, to


=3s),t={3I:e,oW:t,1M:1e},1e===ul){if(1e===al)1n 1x(r(jy));ul=t,al.3R={2b:0,9a:t,dP:1e}}1w ul=ul.1M=t;1b e.d1}1a en(e){1b{5L:e,b8:1e,5M:1e,9b:1e,8t:1e,3O:1e,2u:1e,dQ:1e,a5:1e}}1a tn(e){1b{5L:e.5L,b8:e.b8,5M:e.5M,9b:1e,8t:1e,3O:1e,2u:1e,dQ:1e,a5:1e}}1a nn(e,t){1b{2b:e,dR:t,1D:0,9c:1e,3e:1e,1M:1e,3A:1e}}1a rn(e,t){1e===e.5M?e.b8=e.5M=t:(e.5M.1M=t,e.5M=t)}1a on(e,t){1d n=e.2o;if(1e===n){1d r=e.2D,i=1e;1e===r&&(r=e.2D=en(e.1J))}1w r=e.2D,i=n.2D,1e===r?1e===i?(r=e.2D=en(e.1J),i=n.2D=en(n.1J)):r=e.2D=tn(i):1e===i&&(i=n.2D=tn(r));1e===i||r===i?rn(r,t):1e===r.5M||1e===i.5M?(rn(r,t),rn(i,t)):(rn(r,t),i.5M=t)}1a an(e,t){1d n=e.2D;n=1e===n?e.2D=en(e.1J):un(e,n),1e===n.8t?n.9b=n.8t=t:(n.8t.1M=t,n.8t=t)}1a un(e,t){1d n=e.2o;1b 1e!==n&&t===n.2D&&(t=e.2D=tn(t)),t}1a ln(e,t,n,r,i,o){1F(n.1D){1g 1:1b e=n.9c,"1a"==1k e?e.1A(o,r,i):e;1g 3:e.1H=e.1H&-fS|64;1g 0:if(e=n.9c,i="1a"==1k e?e.1A(o,r,i):e,1e===i||1m 0===i)1o;1b Ai({},r,i);1g 2:sl=!0}1b r}1a sn(e,t,n,r,i){sl=!1,t=un(e,t);1j(1d o=t.5L,a=1e,u=0,l=t.b8,s=o;1e!==l;){1d f=l.2b;f<i?(1e===a&&(a=l,o=s),u<f&&(u=f)):(jz(f,l.dR),s=ln(e,t,l,s,n,r),1e!==l.3e&&(e.1H|=32,l.3A=1e,1e===t.2u?t.3O=t.2u=l:(t.2u.3A=l,t.2u=l))),l=l.1M}1j(f=1e,l=t.9b;1e!==l;){1d c=l.2b;c<i?(1e===f&&(f=l,1e===a


,"NLS_selectionUnionLbl":"Ühend","NLS_autoCompleteLbl":"Täida automaatselt","NLS_unionLbl":"Ühend","NLS_rectangleLbl":"Nelinurk","NLS_circleLbl":"Ring","NLS_ellipseLbl":"Ellips","NLS_triangleLbl":"Kolmnurk","NLS_arrowLbl":"Nool","NLS_arrowLeftLbl":"Nool vasakule","NLS_arrowUpLbl":"Nool üles","NLS_arrowDownLbl":"Nool alla","NLS_arrowRightLbl":"Nool paremale","NLS_undoLbl":"Tühista","NLS_redoLbl":"Ennista"}},"Search":{"main":{"searchButtonTitle":"Otsi","clearButtonTitle":"Tühjenda otsing","placeholder":"Otsi aadressi või kohta","searchIn":"Otsi asukohast:","all":"Kõik","emptyValue":"Sisestage otsingutermin.","untitledResult":"Pealkirjata","untitledSource":"Pealkirjata allikas","noResults":"Tulemusi pole","noResultsFound":"Väärtuse ${value} jaoks ei leitud tulemusi.","showMoreResults":"Kuva veel tulemusi","hideMoreResults":"Peida veel tulemusi","searchResult":"Otsi tulemusi","moreResultsHeader":"Veel tulemusi","esriLocatorName":"Esri World Geocoder"}},"Geocoder":{"main":{"clearButtonTitle":"Puhasta otsing","searchButtonTitle":"Otsi","geocoderMenuButtonTitle":"Muuda geokodeerijat","geocoderMenuHeader":"Otsi","geocoderMenuCloseTitle":"Sule menüü","untitledGeocoder":"Pealkirjata geokodeerija"},"esriGeocoderName":"Esri World Geocoder"},"geocodeMatch":{"match":{"mapAllCandidatesLabel":"Kanna kaardile kõik soovitused","defaultSortOrderLabel":"Vaikimisi sortimise järjekord","tableOptionsLabel":"Valikud","columnLabelAddress":"Aadress","columnLabelType":"Tüüp","columnLabelScore":"Skoor","noDataMsg":"Tulemusi pole.","userCreatedLabel":"Kasutaja loodud","defaultMatchType":"Vaikevaste"},"popup":{"noAddress":"Aadressi ei leitud.","matchButtonLabel":"Vastenda","discardButtonLabel":"Loobu","checkBoxLocation":"Asukoht (X, Y)","checkBoxAddress":"Soovitatud aadress","addressTitle":"Soovitatud aadress","optionsTitle":"Vaste valikud:","loadingPH":"Otsin...","locationTitle":"Asukoht","xTitle":"X: ","yTitle":"Y: "},"customLabel":"Kohandatud","idProperty":"id","gridTitle":"Soovitused","matchedLC":"vastendatud","matchedUC":"Vastendatud","unmatchedLC":"vastendamata","unmatchedUC":"Vastendamata"},"geocodeReview":{"review":{"noDataMsg1":"Vastendamata objekte pole","noDataMsg2":"Vastendatud objekte pole","noDataMsg3":"Üle vaadatud objekte pole","columnOriginalLocation":"Algne asukoht","columnSelectedLocation":"Valitud asukoht","columnOriginalAddress":"Algne aadress","columnSelectedAddress":"Valitud aadress"},"customLabel":"Kohandatud","unmatchedLC":"vastendamata","matchedLC":"vastendatud","unmatchedUC":"Vastendamata","matchedUC":"Vastendatud","totalUC":"Kokku","remainingUC":"Veel","idProperty":"id","reviewedUC":"Üle vaadatud","columnLabelAddress":"Aadress","of":"/","unmatchedTotal":"Vastendamata (${count} kokku)","unmatchedRemaining":"Vastendamata (${count1} / ${count2}


    if(direction.up)
      newPosition.top = position.top - POSITION_UNIT;

    if(direction.down)
      newPosition.top = position.top + POSITION_UNIT;

    if(direction.left)
      newPosition.left = position.left - POSITION_UNIT;

    if(direction.right)
      newPosition.left = position.left + POSITION_UNIT;

    setPosition({...position, ...newPosition});
  }, [direction]);

  return position;
};export interface IAppConfiguration {
    secret: string;
}

export class AppConfiguration implements IAppConfiguration {
    private configuration: IAppConfiguration;

    constructor() {
        this.configuration = require(`./${process.env.NODE_ENV}.js`);
    }

    public get secret(): string {
        return this.configuration.secret;
    }
}
import Vue, {ComponentOptions} from 'vue'
import Component from 'vue-class-component'
import * as _ from 'lodash'
import {parse as parseUrl} from 'url'
import {
  join
} from 'path'
import {
  KeyboardShortcut,
  Workflow,
  GlobalData
} from '../utils'

export declare type VueClass = {
    new (): Vue
} & typeof Vue

function onResChanged(newRes: any) {
  this.log.info('onResChanged')
  this._path = this.$route.path
  this.$nextTick(() => {
    const list = new ItemList(this.$el)
    list.active(0)
  })
}

export function ListComponent<U extends Vue>(options: ComponentOptions<U>)
  : <V extends VueClass>(target: V) => V {
  return (target: VueClass) => {
    target.prototype._mounted = target.prototype.mounted
    target.prototype._destroyed = target.prototype.destroyed

    target.prototype.mounted = function() {
      const workflow = new Workflow(() => {
        return !GlobalData.debouncing
      })
      this._turnOn = debouncing => {
        console.log('this._turn > debouncing: ', debouncing)
        if(debouncing === false) {
          workflow.trunOn()
        }
      }
      GlobalData.on('debouncing', this._turnOn)

      const focus = workflow.push((event: KeyboardEvent) => {
        const list = new ItemList(this.$el)
        list.focus(list.activeIndex)
      })
      KeyboardShortcut.globalShortcut.register('esc', event => {
        event.preventDefault()
        focus(event)
      })
      KeyboardShortcut.globalShortcut.register('down', event => {
        event.preventDefault()
        if(document.activeElement.id === 'query-input') {
          focus(event)
        }
      })
      KeyboardShortcut.globalShortcut.register('enter', workflow.push(event => {
        if(document.activeElement.id === 'query-input') {
          const itemList = new ItemList(this.$el)
          if(itemList.activeIndex !== -1) {
            const idx = itemList.activeIndex
            const url = itemList.item(idx).getAttribute('href')
            const target = itemList.item(idx).getAttribute('target')
            if(target) {
              window.open(url, target)
            } else {
              window.location.href = url
            }
          }
        }
      }))
      this._shortcut = new KeyboardShortcut(this.$el)
      const down = workflow.push((event: KeyboardEvent) => {
        const list = new ItemList(this.$el)
        list.focus(list.activeIndex + 1)
      })
      this._shortcut.register('j', down)
      this._shortcut.register('down', down)
      const up = workflow.push((event: KeyboardEv


6
IGZhdGlndWU= 18787
IHByb2NlZWRpbmc= 18788
Y29uc3RpdHV0aW9uYWw= 18789
IG1pc2Vy 18790
IGNoYWlycw== 18791
Z2dpbmc= 18792
aXBwbGU= 18793
IGRlbnQ= 18794
IGRpc3JlZw== 18795
55Q= 18796
c3RhbnQ= 18797
bGxv 18798
YnBz 18799
YWtlbmluZw== 18800
IGFibm9ybWFs 18801
IEVSQQ== 18802
5aOr 18803
IEhCTw== 18804
IE1BUg== 18805
IGNvbmNlc3M= 18806
IHNlcnZhbnQ= 18807
IGFzcGly 18808
bGF2 18809
IFBhbmVs 18810
YW1v 18811
IHByZWNpcA== 18812
IHJlY29yZGluZ3M= 18813
IHByb2NlZWRlZA== 18814
IGNvbG9ueQ== 18815
IFRhbmc= 18816
YWJsbw== 18817
IHN0cmlwcGVk 18818
TGVmdA== 18819
dG9v 18820
IHBvdGF0b2Vz 18821
IGZpbmVzdA== 18822
JSku 18823
IGNyYXA= 18824
IFphY2g= 18825
YWJhc2Vz 18826
IEdvdGg= 18827
IGJpbGxpb25haXJl 18828
d29sZg== 18829
IHNhbmN0aW9u 18830
U0s= 18831
IGxvZ2dlZA== 18832
UG8= 18833
ZXllZA== 18834
dW5hbA== 18835
IGNyaWNrZXQ= 18836
IGFybWllcw== 18837
IHVuY292ZXJlZA== 18838
Q2xvdWQ= 18839
w7Nu 18840
IHJlYm91bmRz 18841
IG1lcw== 18842
T3Blcg== 18843
UGFj 18844
IG5hdGlvbmFsbHk= 18845
IGluc2VydGVk 18846
cGljdA== 18847
IGdvdmVybmFuY2U= 18848
0Lg= 18849
IHByaXZpbGVnZXM= 18850
R0VU 18851
IGZhdm9yaXRlcw== 18852
aW1pdHk= 18853
IGxvdmVy 18854
dGhlbQ== 18855
ZW1wbA== 18856
IGdvcmdlb3Vz 18857
QW5u 18858
IHNsaXBwZWQ= 18859
IHZldG8= 18860
Qm9i 18861
IHNsaW0= 18862
dWNj 18863
IEZhbWU= 18864
dWRkZW5seQ== 18865
IGRlbmllcw== 18866
IE1hdXI= 18867
IGRpc3RhbmNlcw== 18868
IHdhbm5h 18869
dGFy 18870
IFNFUg== 18871
IOKI 18872
IGxlbW9u 18873
YXRoZXRpYw== 18874
IGxpdGVyYWw= 18875
IGRpc3Rpbmd1aXNoZWQ= 18876
IGFuc3dlcmluZw== 18877
R0k= 18878
IHJlbGlnaW9ucw== 18879
IFBoaWxvcw== 18880
IExheQ== 18881
IGNvbXBvcw== 18882
aXJlbWVudHM= 18883
IEtvcw== 18884
aW5leg== 18885
cm9sbGluZw== 18886
IHlvdW5nZXN0 18887
YW5kaXNl 18888


�取每个元素

			// 抽取出图片
			if (c.select("img").size() > 0) {
				Elements imgs = c.getElementsByTag("img");
				System.out.println("img");
				for (Element img : imgs) {
					if (!img.attr("src").equals("")) {
						Blog blogImgs = new Blog();
						// 大图链接
						if (!img.parent().attr("href").equals("")) {
							blogImgs.setImgLink(img.parent().attr("href"));
							System.out.println("href="
									+ img.parent().attr("href"));
							if (img.parent().parent().tagName().equals("p")) {
								// img.parent().parent().remove();
							}
							img.parent().remove();
						}
						blogImgs.setContent(img.attr("src"));
						blogImgs.setImgLink(img.attr("src"));
						System.out.println(blogImgs.getContent());
						blogImgs.setState(Constants.DEF_BLOG_ITEM_TYPE.IMG);
						list.add(blogImgs);
					}
				}
			}
			c.select("img").remove();

			// 获取博客内容
			Blog blogContent = new Blog();
			blogContent.setState(Constants.DEF_BLOG_ITEM_TYPE.CONTENT);

			if (c.text().equals("")) {
				continue;
			} else if (c.children().size() == 1) {
				if (c.child(0).tagName().equals("bold")
						|| c.child(0).tagName().equals("span")) {
					if (c.ownText().equals("")) {
						// 小标题，咖啡色
						blogContent
								.setState(Constants.DEF_BLOG_ITEM_TYPE.BOLD_TITLE);
					}
				}
			}

			// 代码
			if (c.select("pre").attr("name").equals("code")) {
				blogContent.setState(Constants.DEF_BLOG_ITEM_TYPE.CODE);
				blogContent.setContent(ToDBC(c.outerHtml()));
			} else {
				blogContent.setContent(ToDBC(c.outerHtml()));
			}
			list.add(blogContent);
		}

		return list;
	}

	/**
	 * 获取博客评论列表
	 *
	 * @unused 无用
	 * @param str
	 * @return
	 */
	// public static List<Comment> getComment(String str) {
	// List<Comment> list = new ArrayList<Comment>();
	//
	// // 获取文档对象
	// Document doc = Jsoup.parse(str);
	// // 获得id为comment_list的元素
	// Element commentClass = doc.getElementsByClass("comment_class").get(0);
	//
	// Element commentList = commentClass.getElementById("comment_list");
	//
	// // 获得所有评论主题
	// Elements commentTopics = commentList
	// .select("div.comment_item.comment_topic");
	// // 遍历所有评论主题
	// for (Element commentTopic : commentTopics) {
	// Comment topic = new Comment();
	// topic.setName(commentTopic.select("a.username").text());
	// topic.setDate(commentTopic.select("span.ptime").text());
	// topic.setContent(commentTopic.select("dd.comment_body").text());
	// topic.setPic(commentTopic.select("dd.comment_userface")
	// .select("img").attr("src"));
	//
	// // 获取评论回复
	// Elements commentReplies = commentTopic
	// .getElementsByClass("comment_reply");
	// if (commentReplies.size() == 0) {
	// topic.setReplyCount("");
	// } else {
	// topic.setReplyCount("回复: " + commentReplies.size());
	// }
	// topic.setType(Constants.DEF_COMMENT_TYPE.PARENT);
	// l


string
}

/**
 * 修改负载均衡计费方式的监听器信息。
 */
export interface ModifyLoadBalancerChargeModeListener {
  /**
   * 监听器ID。
   */
  ListenerId: string
  /**
   * 协议类型。
   */
  Protocol: string
  /**
   * 带宽。
   */
  Bandwidth: number
}

/**
 * 流量镜像健康检查返回的接收机状态信息。
 */
export interface TrafficMirrorReciversStatus {
  /**
   * 内网IP。
   */
  LanIp: string
  /**
   * 端口及对应的状态。
   */
  ReceiversPortStatusSet: Array<TrafficMirrorPortStatus>
}

/**
 * CreateLoadBalancers请求参数结构体
 */
export interface CreateLoadBalancersRequest {
  /**
   * 黑石负载均衡实例所属的私有网络ID。
   */
  VpcId: string
  /**
   * 负载均衡的类型，取值为open或internal。open表示公网(有日租)，internal表示内网。
   */
  LoadBalancerType: string
  /**
   * 在私有网络内购买内网负载均衡实例的时候需要指定子网ID，内网负载均衡实例的VIP将从这个子网中产生。其他情况不用填写该字段。
   */
  SubnetId?: string
  /**
   * 负载均衡所属项目ID。不填则属于默认项目。
   */
  ProjectId?: number
  /**
   * 购买黑石负载均衡实例的数量。默认值为1, 最大值为20。
   */
  GoodsNum?: number
  /**
   * 黑石负载均衡的计费模式，取值为flow和bandwidth，其中flow模式表示流量模式，bandwidth表示带宽模式。默认值为flow。
   */
  PayMode?: string
  /**
   * 负载均衡对应的TGW集群类别，取值为tunnel、fullnat或dnat。tunnel表示隧道集群，fullnat表示FULLNAT集群（普通外网负载均衡），dnat表示DNAT集群（增强型外网负载均衡）。默认值为fullnat。如需获取client IP，可以选择 tunnel 模式，fullnat 模式（tcp 通过toa 获取），dnat 模式。
   */
  TgwSetType?: string
  /**
   * 负载均衡的独占类别，取值为0表示非独占，1表示四层独占，2表示七层独占，3表示四层和七层独占，4表示共享容灾。
   */
  Exclusive?: number
  /**
   * 指定的VIP，如果指定，则数量必须与goodsNum一致。如果不指定，则由后台分配随机VIP。
   */
  SpecifiedVips?: Array<string>
  /**
   * （未全地域开放）保障型负载均衡设定参数，如果类别选择保障型则需传入此参数。
   */
  Bz


true);
        }
    }

}
/*
 * Copyright (c) 2023 OceanBase.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.oceanbase.tools.sqlparser.adapter.mysql;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import org.antlr.v4.runtime.ParserRuleContext;

import com.oceanbase.tools.sqlparser.adapter.StatementFactory;
import com.oceanbase.tools.sqlparser.obmysql.OBParser.Alter_column_group_actionContext;
import com.oceanbase.tools.sqlparser.obmysql.OBParser.Alter_external_table_actionContext;
import com.oceanbase.tools.sqlparser.obmysql.OBParser.Alter_table_actionsContext;
import com.oceanbase.tools.sqlparser.obmysql.OBParser.Alter_table_stmtContext;
import com.oceanbase.tools.sqlparser.obmysql.OBParserBaseVisitor;
import com.oceanbase.tools.sqlparser.statement.alter.table.AlterTable;
import com.oceanbase.tools.sqlparser.statement.alter.table.AlterTableAction;
import com.oceanbase.tools.sqlparser.statement.common.RelationFactor;

import lombok.NonNull;

/**
 * {@link MySQLAlterTableFactory}
 *
 * @author yh263208
 * @date 2023-06-15 13:57
 * @since ODC_release_4.2.0
 */
public class MySQLAlterTableFactory extends OBParserBaseVisitor<AlterTable> implements StatementFactory<AlterTable> {

    private final ParserRuleContext parserRuleContext;

    public MySQLAlterTableFactory(@NonNull Alter_table_stmtContext context) {
        this.parserRuleContext = context;
    }

    @Override
    public AlterTable generate() {
        return visit(this.parserRuleContext);
    }

    @Override
    public AlterTable visitAlter_table_stmt(Alter_table_stmtContext ctx) {
        RelationFactor factor = MySQLFromReferenceFactory.getRelationFactor(ctx.relation_factor());
        List<AlterTableAction> actions = null;
        if (ctx.alter_table_actions() != null) {
            actions = getAlterTableActions(ctx.alter_table_actions());
        } else if (ctx.alter_column_group_action() != null) {
            actions = getAlterTableActions(ctx.alter_column_group_action());
        } else if (ctx.alter_external_table_action() != null) {
            actions = getAlterTableActions(ctx.alter_external_table_action());
        }
        AlterTable alterTable = new AlterTable(ctx, factor, actions);
        if (ctx.EXTERNAL() != null) {
            alterTable.setExternal(true);
        }
        alterTable.setUserVariable(factor.getUserVariable());
        return alterTable;
    }

    private List<AlterTableAction> getAlterTableActions(Alter_table_actionsContext context) {
        if (context == null) {
            return null;
        }
        List<AlterTableAction> actions = new ArrayList<>();
        if (context.alter_table_action() != null && context.alter_table_actions() == null) {
            actions.add(new MySQLAlterTableActionFactory(context.alter_table_action()).generate());
        } else if (context.alter_table_action() != null && context.alter_table_actions() != null) {
            actions.addAll(getAlterTableActions(context.alter_table_actions()));
            actions.add(new MySQLAlterTableAction


/template/dialog/glyf-download.tpl');
    },
    set(setting) {
        let onChange = $.proxy(previewGlyf, this);
        $('#glyf-download-color').on('change', onChange);
        $('#glyf-download-size').on('change', onChange);
        colorpicker.show('#glyf-download-color');
        $('#glyf-download-svg').on('click', $.proxy(function (e) {
            let svgText = getSvg(this.setting);
            download((this.setting.glyf.name || 'svg') + '.svg', svg2base64(svgText));
        }, this));

        $('#glyf-download-png').on('click', $.proxy(function (e) {
            let canvas = $('#glyf-download-preview canvas').get(0);
            let imgData = canvas.toDataURL();
            download((this.setting.glyf.name || 'png') + '.png', imgData);
        }, this));

        $('#glyf-download-name').html(setting.glyf.name);
        this.setting = setting;
        previewGlyf.call(this);
    },
    onDispose() {
        $('#glyf-download-color').off('change');
        $('#glyf-download-size').off('change');
        $('#glyf-download-svg').off('click');
        $('#glyf-download-png').off('click');
        this.setting = null;
    }
});
/**
 * @file editor.js
 * @author mengke01(kekee000@gmail.com)
 */

export default {
    glyph_name: '命名',
    left_side_bearing: '左边距',
    right_side_bearing: '右边距',
    baseline_offset: '基线偏移',
    flip: '翻转',
    mirror: '镜像',

    scale: '按比例缩放',
    findglyf: '查找字形',
    downloadglyf: '导出字形',
    setunicode: '设置代码点',
    del: '删除',
    edit: '编辑',
    resume: '恢复',
    prevpage: '上一页',
    nextpage: '下一页',
    gotopage: '转到',

    saveas: '另存为',
    sync: '同步',
    syncfont: '同步字体',
    cancelsync: '取消同步',
    autosync: '自动同步',
    fonttype: '字体类型',
    remoteurl: '远程地址',
    fontname: '字体名称',
    fontinfo: '字体信息',
    ascent: '上升',
    descent: '下降',
    linegap: '行间距',
    usWinAscent: 'win上升',
    usWinDescent: 'win下降',
    calc: '计算',
    sTypoAscender: 'typo上升',
    sTypoDescender: 'typo下降',
    sTypoLineGap: 'typo间距',
    sxHeight: 'x高度',
    sCapHeight: '大写H高度',
    yStrikeoutPosition: '删除线位置',
    yStrikeoutSize: '删除线厚度',
    underlinePosition: '下划线位置',
    underlineThickness: '下划线厚度',
    ySubscriptXSize: '下标水平',
    ySubscriptYSize: '下标垂直',
    ySubscriptXOffset: '下标X偏移',
    ySubscriptYOffset: '下标Y偏移',
    ySuperscriptXSize: '上标水平',
    ySuperscriptYSize: '上标垂直',
    ySuperscriptXOffset: '上标X偏移',
    ySuperscriptYOffset: '上标Y偏移',
    achVendID: '供应商ID',
    usWeightClass: '粗细',


WEU = 3,
        LEAGUE_REGION_EEU = 4,
        LEAGUE_REGION_CHINA = 5,
        LEAGUE_REGION_SEA = 6,
    }

    [global::ProtoBuf.ProtoContract()]
    public enum ELeagueTier
    {
        LEAGUE_TIER_UNSET = 0,
        LEAGUE_TIER_AMATEUR = 1,
        LEAGUE_TIER_PROFESSIONAL = 2,
        LEAGUE_TIER_MINOR = 3,
        LEAGUE_TIER_MAJOR = 4,
        LEAGUE_TIER_INTERNATIONAL = 5,
        LEAGUE_TIER_DPC_QUALIFIER = 6,
        LEAGUE_TIER_DPC_LEAGUE_QUALIFIER = 7,
        LEAGUE_TIER_DPC_LEAGUE = 8,
        LEAGUE_TIER_DPC_LEAGUE_FINALS = 9,
    }

    [global::ProtoBuf.ProtoContract()]
    public enum ELeagueTierCategory
    {
        LEAGUE_TIER_CATEGORY_AMATEUR = 1,
        LEAGUE_TIER_CATEGORY_PROFESSIONAL = 2,
        LEAGUE_TIER_CATEGORY_DPC = 3,
    }

    [global::ProtoBuf.ProtoContract()]
    public enum ELeagueDivision
    {
        LEAGUE_DIVISION_UNSET = 0,
        LEAGUE_DIVISION_I = 1,
        LEAGUE_DIVISION_II = 2,
    }

    [global::ProtoBuf.ProtoContract()]
    public enum ELeagueBroadcastProvider
    {
        LEAGUE_BROADCAST_UNKNOWN = 0,
        LEAGUE_BROADCAST_STEAM = 1,
        LEAGUE_BROADCAST_TWITCH = 2,
        LEAGUE_BROADCAST_YOUTUBE = 3,
        LEAGUE_BROADCAST_OTHER = 100,
    }

    [global::ProtoBuf.ProtoContract()]
    public enum ELeaguePhase
    {
        LEAGUE_PHASE_UNSET = 0,
        LEAGUE_PHASE_REGIONAL_QUALIFIER = 1,
        LEAGUE_PHASE_GROUP_STAGE = 2,
        LEAGUE_PHASE_MAIN_EVENT = 3,
    }

    [global::ProtoBuf.ProtoContract()]
    public enum ELeagueAuditAction
    {
        LEAGUE_AUDIT_ACTION_INVALID = 0,
        LEAGUE_AUDIT_ACTION_LEAGUE_CREATE = 1,
        LEAGUE_AUDIT_ACTION_LEAGUE_EDIT = 2,
        LEAGUE_AUDIT_ACTION_LEAGUE_DELETE = 3,
        LEAGUE_AUDIT_ACTION_LEAGUE_ADMIN_ADD = 4,
        LEAGUE_AUDIT_ACTION_LEAGUE_ADMIN_REVOKE = 5,
        LEAGUE_AUDIT_ACTION_LEAGUE_ADMIN_PROMOTE = 6,
        LEAGUE_AUDIT_ACTION_LEAGUE_STREAM_ADD = 7,
        LEAGUE_AUDIT_ACTION_LEAGUE_STREAM_REMOVE = 8,
        LEAGUE_AUDIT_ACTION_LEAGUE_IMAGE_UPDATED = 9,
        LEAGUE_AUDIT_ACTION_LEAGUE_MESSAGE_ADDED = 10,
        LEAGUE_AUDIT_ACTION_LEAGUE_SUBMITTED = 11,
        LEAGUE_AUDIT_ACTION_LEAGUE_SET_PRIZE_POOL = 12,
        LEAGUE_AUDIT_ACTION_LEAGUE_ADD_PRIZE_POOL_ITEM = 13,
        LEAGUE_AUDIT_ACTION_LEAGUE_REMOVE_PRIZE_POOL_ITEM = 14,
        LEAGUE_AUDIT_ACTION_LEAGUE_MATCH_START = 15,
        LEAGUE_AUDIT_ACTION_LEAGUE_MATCH_END = 16,
        LEAGUE_AUDIT_ACTION_LEAGUE_ADD_INVITED_TEAM = 17,


resources = TestUtility::decodeResources({resource, resource_2});
  context_init_manager_.initialize(init_watcher_);
  EXPECT_NO_THROW(srds_subscription_->onConfigUpdate(decoded_resources.refvec_, {}, "1"));
  EXPECT_EQ(1UL,
            server_factory_context_.scope_.counter("foo.scoped_rds.foo_scoped_routes.config_reload")
                .value());
  EXPECT_EQ(2UL, all_scopes_.value());

  const std::string config_yaml3 = R"EOF(
name: bar_scope
route_configuration_name: foo_routes
key:
  fragments:
    - string_key: x-foo-key
)EOF";
  const auto resource_3 = parseScopedRouteConfigurationFromYaml(config_yaml);
  const std::string config_yaml4 = R"EOF(
name: foo_scope
route_configuration_name: foo_routes
key:
  fragments:
    - string_key: x-bar-key
)EOF";
  const auto resource_4 = parseScopedRouteConfigurationFromYaml(config_yaml2);
  const auto decoded_resources_2 = TestUtility::decodeResources({resource_3, resource_4});
  EXPECT_NO_THROW(srds_subscription_->onConfigUpdate(decoded_resources_2.refvec_, {}, "2"));
  EXPECT_EQ(2UL,
            server_factory_context_.scope_.counter("foo.scoped_rds.foo_scoped_routes.config_reload")
                .value());
  EXPECT_EQ(2UL, all_scopes_.value());
}

// Tests whether scope key conflict with updated scopes is ignored.
TEST_F(ScopedRdsTest, IgnoreConflictWithUpdatedScopeSotW) {
  setup();
  const std::string config_yaml = R"EOF(
name: foo_scope
route_configuration_name: foo_routes
key:
  fragments:
    - string_key: x-foo-key
)EOF";
  const auto resource = parseScopedRouteConfigurationFromYaml(config_yaml);
  const std::string config_yaml2 = R"EOF(
name: bar_scope
route_configuration_name: foo_routes
key:
  fragments:
    - string_key: x-bar-key
)EOF";
  const auto resource_2 = parseScopedRouteConfigurationFromYaml(config_yaml2);

  // Delta API.
  const auto decoded_resources = TestUtility::decodeResources({resource, resource_2});
  context_init_manager_.initialize(init_watcher_);
  EXPECT_NO_THROW(srds_subscription_->onConfigUpdate(decoded_resources.refvec_, "1"));
  EXPECT_EQ(1UL,
            server_factory_context_.scope_.counter("foo.scoped_rds.foo_scoped_routes.config_reload")
                .value());
  EXPECT_EQ(2UL, all_scopes_.value());

  const std::string config_yaml3 = R"EOF(
name: bar_scope
route_configuration_name: foo_routes
key:
  fragments:
    - string_key: x-foo-key
)EOF";
  const auto resource_3 = parseScopedRouteConfigurationFromYaml(config_yaml);
  const std::string config_yaml4 = R"EOF(
name: foo_scope
route_configuration_name: foo_routes
key:
  fragments:
    - string_key: x-bar-key
)EOF";
  const auto resource_4 = parseScopedRouteConfigurationFromYaml(config_yaml2);
  const auto decoded_resources_2 = TestUtility::decodeResources({resource_3, resource_4});
  EXPECT_NO_THROW(srds_subscription_->onConfigUpdate(decoded_resources_2.refvec_, "2"));
  EXPECT_EQ(2UL,
            server_factory_context_.scope_.counter("foo.scoped_rds.foo_scoped_routes.config_reload")
                .value());
  EXPECT_EQ(2UL, all_scopes_.value());
}

// Compare behavior of a lazy


()
end

--- Toggle Regexplainer
--
function M.toggle()
  if Buffers.is_open() then
    M.hide()
  else
    M.show()
  end
end

--- **INTERNAL** for testing only
--
function M.teardown()
  local_config = vim.tbl_deep_extend('keep', {}, default_config)
  Buffers.clear_timers()
  pcall(vim.api.nvim_del_augroup_by_name, augroup_name)
end

--- **INTERNAL** notify the component tree for the current regexp
--
function M.debug_components()
  ---@type any
  local mode = 'debug'
  show_for_real { auto = false, display = 'split', mode = mode }
end

--- Clear the image cache
--
function M.clear_cache()
  cache.clear_cache()
  utils.notify('Regexplainer image cache cleared', 'info')
end

return M


---- Functions for reading and writing the cache file

local M = {}

---@class CacheConfig
---@field enable boolean
---@field ttl number
---@field path string

---@class CacheContent
---@field timestamp number The timestamp of the cache file
---@field servers table<string> The servers that were cached

---Reads the cache file and returns the content
---If the cache file does not exist or is older than 7 days, returns nil
---@param config CacheConfig The cache configuration
---@return CacheContent|nil
function M.read_servers(config)
  if not config.enable then
    return nil
  end

  local cache_file = config.path .. "/servers.json"
  local file = io.open(cache_file, 'r')

  if not file then
    return nil
  end

  local json = file:read('*a')
  file:close()

  ---@type boolean, CacheContent
  local decoded, content = pcall(vim.json.decode, json)
  if not decoded or type(content) ~= "table" or not content.timestamp or not content.servers then
    return nil
  end

  -- Check if cache is expired (7 days)
  if content.timestamp < os.time() - config.ttl then
    return nil
  end

  return content
end

---Writes the servers to the cache file
---@param servers table<string> The servers to write to the cache
---@param config CacheConfig The cache configuration
--


import torch
import torchaudio
import torchaudio.transforms as transforms
from nemo.collections.asr.models import EncDecSpeakerLabelModel
from nemo.utils import logging

# Input and output file paths
input_audio_path = "sample.wav"   # Replace with your actual file
mono_audio_path = "mono_audio.wav"  # New mono-converted audio file

# Convert stereo to mono
waveform, sample_rate = torchaudio.load(input_audio_path)
if waveform.shape[0] > 1:  # Check if audio has more than 1 channel
    waveform = torch.mean(waveform, dim=0, keepdim=True)  # Convert to mono

# Resample to 16kHz if needed (NeMo models often require this)
target_sample_rate = 16000
if sample_rate != target_sample_rate:
    resampler = transforms.Resample(orig_freq=sample_rate, new_freq=target_sample_rate)
    waveform = resampler(waveform)
    sample_rate = target_sample_rate

# Save the processed mono audio
torchaudio.save(mono_audio_path, waveform, sample_rate)

# Load the local diarization model
model_path = "diar_sortformer_4spk-v1.nemo"
logging.info(f"Loading model from {model_path}")
diar_model = EncDecSpeakerLabelModel.restore_from(model_path)
logging.info("Model loaded successfully!")

# Run diarization on mono audio file
predicted_segments = diar_model.diarize(audio=mono_audio_path, batch_size=1)

# Print results
print("Speaker Diarization Results:")
for segment in predicted_segments:
    print(segment)


from __future__ import annotations

from typing import Any, Dict, List

def _get(d: Dict[str, Any], *names: str) -> Any:
    for n in names:
        if isinstance(d, dict) and n in d:
            return d[n]
    return None

def normalize_content_to_list(content: Any) -> List[Dict[str, Any]]:
    segments: List[Dict[str, Any]] = []
    try:
        if isinstance(content, str):
            return [{"type": "text", "text": content}]
        if isinstance(content, list):
            for item in content:
                if isinstance(item, dict):
                    t = item.get("type") or ("text" if isinstance(item.get("text"), str) else None)
                    if t == "text" and isinstance(item.get("text"), str):
                        segments.append({"type": "text", "text": item.get("text")})
                    else:
                        seg: Dict[str, Any] = {}
                        if t:
                            seg["type"] = t
                        if isinstance(item.get("text"), str):
                            seg["text"] = item.get("text")
                        if seg:
                            segments.append(seg)
            return segments
        if isinstance(content, dict):
            if isinstance(content.get("text"), str):
                return [{"type": "text", "text": content.get("text")}]
    except Exception:
        return []
    return []

def segments_to_text(segments: List[Dict[str, Any]]) -> str:
    parts: List[str] = []
    for seg in segments:
        if isinstance(seg, dict) and seg.get("type") == "text" and isinstance(seg.get("text"), str):
            parts.append(seg.get("text") or "")
    return "".join(parts)

def segments_to_warp_results(segments: List[Dict[str, Any]]) -> List[Dict[str, Any]]:
    results: List[Dict[str, Any]] = []
    for seg in segments:
        if isinstance(seg, dict) and seg.get("type") == "text" and isinstance(seg.get("text"), str):
            results.append({"text": {"text": seg.get("text")}})
    return results


eout * time.Millisecond))

	if err := connection.WriteMsg(query); err != nil {
		return nil, err
	}

	response, err := connection.ReadMsg()
	if err != nil {
		return nil, err
	}

	response.Id = query.Id
	return response, nil
}
package authr

import (
	"encoding/json"
	"errors"
	"fmt"
	"math/rand"
	"os"
	"runtime"
	"testing"

	"github.com/stretchr/testify/require"
)

type equalitytestscen struct {
	n    string
	a, b interface{}
	r    bool
}

func getEqualityTestScenarios() []equalitytestscen {
	return []equalitytestscen{
		{
			n: `"5"==uint32(5)=>true`,
			a: "5",
			b: uint32(5),
			r: true,
		},
		{
			n: `"hi"=="hi"=>true`,
			a: "hi",
			b: "hi",
			r: true,
		},
		{
			n: `"hi"=="hello"=>false`,
			a: "hi",
			b: "hello",
			r: false,
		},
		{
			n: `"hi"==true=>true`,
			a: "hi",
			b: true,
			r: true,
		},
		{
			n: "float64(3.1415)==float32(3.1415)=>true",
			a: float64(3.1415),
			b: float32(3.1415),
			r: true,
		},
		{
			n: "float32(0)==nil=>true",
			a: float32(0),
			b: nil,
			r: true,
		},
		{
			n: "int32(1)==true=>true",
			a: int32(1),
			b: true,
			r: true,
		},
		{
			n: "int16(0)==false=>true",
			a: int16(0),
			b: false,
			r: true,
		},
		{
			n: `""==nil=>true`,
			a: "",
			b: nil,
			r: true,
		},
		{
			n: `"hi"==nil=>false`,
			a: "hi",
			b: nil,
			r: false,
		},
		{
			n: `true=="0"=>false`,
			a: true,
			b: "0",
			r: false,
		},
		{
			n: `true==true=>true`,
			a: true,
			b: true,
			r: true,
		},
		{
			n: `true==false=>false`,
			a: true,
			b: false,
			r: false,
		},
		{
			n: `true==nil=>false`,
			a: true,
			b: nil,
			r: false,
		},
		{
			n: `false==nil=>true`,
			a: false,
			b: nil,
			r: true,
		},
		{
			n: `nil==nil=>true`,
			a: nil,
			b: nil,
			r: true,
		},
		{
			n: `false=>""=>true`,
			a: false,
			b: "",
			r: true,
		},
		{
			n: `false=>"0"=>true`,
			a: false,
			b: "0",
			r: true,
		},
	}
}

func BenchmarkLooseEquality(b *testing.B) {
	for _, s := range getEqualityTestScenarios() {
		b.Run(s.n, func(b *testing.B) {
			b.ReportAllocs()
			b.ResetTimer()
			for i := 0; i < b.N; i++ {
				_, err := looseEquality(s.a, s.b)
				if err != nil {
					b.Fatalf("unexpected error: %s", err)
				}
			}
		})
	}
}

type regexptestscen struct {
	n, op, p string
	v        interface{}
}

func getregexpscens() []regexptestscen {
	return []regexptestscen{
		{n: "int(33)~*^foo$=>false", op: "~*", p: "^foo$", v: 33},
		{n: `"foo-one"~*^Foo=>true`, op: "~*", p: "^Foo", v: "foo-one"},
		{n: `"bar-two"~^Bar=>false`, op: "~", p: "^Bar", v: "bar-two"},
	}
}

func BenchmarkRegexpOperatorSerial(b *testing.B) {
	regexpOperatorBenchmark(b,


 r1, #4
	ldr     r2, [r4, r1]
	add     r0, r1, #0x4
	mul     r0, r2
	add     r2, r4, r0
	mov     r0, #0xd7
	lsl     r0, r0, #2
	ldr     r0, [r2, r0]
	mov     r2, #0xa5
	add     r1, #0x10
	lsl     r2, r2, #4
	add     r1, r4, r1
	add     r2, r4, r2
	bl      Function_223ba88
	mov     r0, r4
	mov     r1, #0xe
	mov     r2, #0x10
	bl      Function_2243ec8
	mov     r0, #0xd
	str     r0, [r4, #0x2c]
	ldr     r0, [pc, #0x8] @ 0x22431ec, (=0x1484)
	mov     r1, #0x0
	str     r1, [r4, r0]
	mov     r0, #0x3
	pop     {r4,pc}
@ 0x22431ea

.align 2

.word 0x1484 @ 0x22431ec
.thumb
Function_22431f0: @ 22431f0 :thumb
	push    {r4,lr}
	mov     r4, r0
	bl      Function_223b7b8
	cmp     r0, #0x0
	beq     branch_22432ba
	bl      Function_223b7d8
	ldr     r2, [pc, #0xd0] @ 0x22432d4, (=0x1484)
	mov     r1, #0x0
	str     r1, [r4, r2]
	mov     r2, r0
	add     r2, #0xf
	cmp     r2, #0xf
	bhi     branch_22432d0
	add     r2, r2, r2
	add     r2, pc
	ldrh    r2, [r2, #0x6]
	lsl     r2, r2, #16
	asr     r2, r2, #16
	add     pc, r2
@ 0x224321a

Jumppoints_224321a:
.hword branch_22432ac - Jumppoints_224321a - 2
.hword branch_22432ac - Jumppoints_224321a - 2
.hword branch_22432b4 - Jumppoints_224321a - 2
.hword branch_22432a4 - Jumppoints_224321a - 2
.hword branch_224329c - Jumppoints_224321a - 2
.hword branch_224329c - Jumppoints_224321a - 2
.hword branch_224329c - Jumppoints_224321a - 2
.hword branch_224329c - Jumppoints_224321a - 2
.hword branch_224329c - Jumppoints_224321a - 2
.hword branch_224329c - Jumppoints_224321a - 2
.hword branch_2243294 - Jumppoints_224321a - 2
.hword branch_22432d0 - Jumppoints_224321a - 2
.hword branch_22432d0 - Jumppoints_224321a - 2
.hword branch_22432ac - Jumppoints_224321a - 2
.hword branch_22432d0 - Jumppoints_224321a - 2
.hword branch_224323a - Jumppoints_224321a - 2
.thumb
branch_224323a: @ 224323a :thumb
	mov     r0, #0x1e
	str     r0, [r4, #0x2c]
	mov     r0, r4
	bl      Function_2243b08
	mov     r2, #0x45
	lsl     r2, r2, #2
	mov     r


-colors-custom, $o-grays) {
    .bg-#{$-name}, .text-bg-#{$-name}  {
        @include o-print-color($-color, background-color, bg-opacity);
    }

    .text-bg-#{$-name} {
        @include o-print-color(color-contrast($-color), color, text-opacity);
    }
}

// 4. Cleanup temporary maps
$-o-text-colors-custom: null;
$-o-bg-colors-custom: null;

// 5. Adapt the behaviour of .btn-link buttons when in conjuction with the custom
//    contextual classes (eg. text-action). 'muted' is set as default text color,
//    while the contextual-class color will be used on ':hover'.
//    Note: the same is done above for the '$theme-colors'. Here on the
//    '$o-text-colors-custom' because we don't want it to apply on the '$o-grays'.
.btn-link {
    @each $-name, $-color in $o-text-colors-custom{
        &.btn-#{$-name}, &.text-#{$-name} {
            @include o-btn-link-variant($o-gray-600!important, o-text-color($-name) or $-color!important);
        }
    }
}

// 6. Adds a bg-inherit custom utility class
.bg-inherit {
    background-color: inherit;
}

// Cards
// ============================================================================
.card-body {
    @extend %-card-body-reviewed; // See bootstrap_review.scss
}

// Alert
// ==============================================================================
.alert {
    padding-top: var(--alert-padding-y, $alert-padding-y);
    padding-bottom: var(--alert-padding-y, $alert-padding-y);
    margin-bottom: var(--alert-margin-bottom, $alert-margin-bottom);
}

// Switches
// ============================================================================
.form-switch {
    .form-check-input:checked {
        background-color: $o-success;
        border-color: $o-success;
    }

    .form-check-input:focus {
        border-color: $o-success;
    }

    &:hover .form-check-input:not(:disabled) {
        border-color: $o-success;
    }

    // Creating a different styling for toggle switches with a purpose of switching
    // from A to B (eg. switching between month and year) rather than ON/OFF.
    // The 'o_switch_toggle' class should be use in addition to the default
    // 'form-switch' Bootstrap class.
    &.o_switch_toggle {
        .form-check-input, .form-check-input:checked {
            border-color: $o-action;
            background-color: $o-view-background-color;

            &, &:focus, &:checked {
                background-image: escape-svg(url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'><circle r='3' fill='#{$o-action}'/></svg>"));
            }
        }

        &:hover .form-check-input:not(:disabled) {
            border-color: $o-action;
        }
    }

    &:disabled, &.disabled, &[disabled] {
        opacity: $o-opacity-disabled;
    }
}
.o_field_percent_pie {
    .o_pie {
        --PercentPieField-color-active: #{$o-action};
        --PercentPieField-color-static: #{rgba(#000, .15)};

        height: var(--PercentPieField-size, #{$font-size-lg});
        aspect-ratio: 1;
        margin-right: var(--PercentPieField-gap, #{map-get($spacers, 2) });
    }


)
for more details.

The following table compares the timing of several operations for
[streamly](https://github.com/composewell/streamly)
with lists using a one million element stream.  For brevity only
those operations where the performance of the two packages differ by
more than 10% are shown in the table below. The last column shows how
many times slower list is compared to streamly.

| Benchmark           | streamly(μs) |  list(μs)  | list/streamly |
| ------------------- | ------------ | ---------- | ------------- |
| drop-map x 4        |    375.09    |  76925.32  | 205.08        |
| filter-drop x 4     |    382.03    |  54848.54  | 143.57        |
| drop-scan x 4       |    795.81    |  76716.79  |  96.40        |
| filter-scan x 4     |    795.60    |  44559.15  |  56.01        |
| scan-map x 4        |   1192.19    |  48838.22  |  40.97        |
| take-map x 4        |   1500.99    |  60126.58  |  40.06        |
| filter-take x 4     |   1502.01    |  48766.87  |  32.47        |
| take-drop x 4       |   1499.62    |  41720.03  |  27.82        |
| take-scan x 4       |   1874.94    |  51283.30  |  27.35        |
| drop-one x 4        |    375.33    |   8993.87  |  23.96        |
| dropWhile-false x 4 |    374.61    |   8957.79  |  23.91        |
| dropWhile-false     |    374.83    |   8670.05  |  23.13        |
| drop-one            |    390.77    |   8681.85  |  22.22        |
| dropWhile-true      |    571.60    |  12237.48  |  21.41        |
| drop-all            |    562.94    |   8262.38  |  14.68        |
| take-all            |    624.83    |    564.34  |  1/1.11       |
| scan x 4            |    795.83    |    385.85  |  1/2.06       |
| appendR[10000]      |    360.75    |    126.95  |  1/2.84       |
| concatMap           |   34957.71   |   1124.85  |  1/31.08      |

* streamly-0.8.0, base-4.14.1.0, ghc-8.10.4, Linux

To generate these reports run `bench-runner` with:

* `--targets "StreamlyPure List"`

### Streamly vs Streaming

The following table compares the timing of several operations
for [streamly](https://github.com/composewell/streamly) with
[streaming](https://hackage.haskell.org/package/streaming) using a
million element stream.

| Benchmark           | streamly(μs) | streaming(μs) | streaming/streamly |
| ------------------- | ------------ | ------------- | ------------------ |
| appendR[10000]      |       326.56 |    1301176.69 |            3984.54 |
| mapM x 4            |       374.42 |     223591.08 |             597.17 |
| filter-map x 4      |       381.07 |     194903.88 |             511.47 |
| filter-scan x 4     |       795.66 |     233527.90 |             293.50 |
| filter-all-in x 4   |       375.40 |     102629.64 |             273.38 |
| filter-drop x 4     |       387.15 |      99096.98 |             255.96 |
| map x 4             |       386.49 |      94944.87 |             245.66 |
| drop-map x 4        |       375.62 |      89669.37 |             238.73 |
| scan x 4            |       7


/*
 * Copyright (C) 2010 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#pragma once

#include <stdint.h>

#define BIONIC_DISALLOW_COPY_AND_ASSIGN(TypeName) \
  TypeName(const TypeName&) = delete;             \
  void operator=(const TypeName&) = delete

#define BIONIC_DISALLOW_IMPLICIT_CONSTRUCTORS(TypeName) \
  TypeName() = delete;                                  \
  BIONIC_DISALLOW_COPY_AND_ASSIGN(TypeName)

#define BIONIC_ROUND_UP_POWER_OF_2(value) \
  ((sizeof(value) == 8) \
    ? (1UL << (64 - __builtin_clzl(static_cast<unsigned long>(value)))) \
    : (1UL << (32 - __builtin_clz(static_cast<unsigned int>(value)))))

static constexpr uintptr_t align_down(uintptr_t p, size_t align) {
  return p & ~(align - 1);
}

static constexpr uintptr_t align_up(uintptr_t p, size_t align) {
  return (p + align - 1) & ~(align - 1);
}

template <typename T>
static inline T* align_down(T* p, size_t align) {
  return reinterpret_cast<T*>(align_down(reinterpret_cast<uintptr_t>(p), align));
}

template <typename T>
static inline T* align_up(T* p, size_t align) {
  return reinterpret_cast<T*>(align_up(reinterpret_cast<uintptr_t>(p), align));
}

#if defined(__arm__)
#define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined r14")
#elif defined(__aarch64__)
#define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined x30")
#elif defined(__i386__)
#define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined \%eip")
#elif defined(__riscv)
#define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined ra")
#elif defined(__x86_64__)
#define BIONIC_STOP_UNWIND asm volatile(".cfi_undefined \%rip")
#endif

// The arraysize(arr) macro returns the # of elements in an array arr.
// The expression is a compile-time constant, and therefore can be
// used in defining new arrays, for example.  If you use arraysize on
// a pointer by mistake, you will get a compile-time error.
//
// One caveat is that arraysize() doesn't accept any array of an
// anonymous type or a type defined inside a function.
//
// This template function declaration is used in defining arraysize.
// Note that the function doesn't need an implementation, as we only
// use its type.
template <typename T, size_t N>
char (&ArraySizeHelper(T (&array)[N]))[N];  // NOLINT(readability/casting)

#define arraysize(array) (sizeof(ArraySizeHelper(array)))

// Used to inform clang's -Wimplicit-fallthrough that a fallthrough is intended. There's no way to
// silence (or enable, apparently) -Wimplicit-fallthrough in C yet.
#ifdef __cplusplus
#define __BIONIC_FALLTHROUGH [[clang::fallthrough]]
#else
#define __BIONIC_FALLTHROUGH
#endif

static inline uintptr_t untag_address(uintptr_t p) {
#if defined(__aarch64__)
  return p & ((1ULL << 56) - 1);
#else
  return p;
#endif
}

template <typename T>
static inline T* untag_address(T* p) {
  return reinterpret_cast<T*>(untag_address(reinterpret_cast<uintptr_t>(p)));
}


// Copyright (c) 2016  GeometryFactory SARL (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org); you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public License as
// published by the Free Software Foundation; either version 3 of the License,
// or (at your option) any later version.
//
// Licensees holding a valid commercial license may use this file in
// accordance with the commercial license agreement provided with the software.
//
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
//
// $URL: https://github.com/CGAL/cgal/blob/releases/CGAL-4.14/Installation/include/CGAL/license/Surface_mesh_deformation.h $
// $Id: Surface_mesh_deformation.h 15fe22c %aI Mael Rouxel-Labbé
// SPDX-License-Identifier: LGPL-3.0+
//
// Author(s) : Andreas Fabri
//
// Warning: this file is generated, see include/CGAL/licence/README.md

#ifndef CGAL_LICENSE_SURFACE_MESH_DEFORMATION_H
#define CGAL_LICENSE_SURFACE_MESH_DEFORMATION_H

#include <CGAL/config.h>
#include <CGAL/license.h>

#ifdef CGAL_SURFACE_MESH_DEFORMATION_COMMERCIAL_LICENSE

#  if CGAL_SURFACE_MESH_DEFORMATION_COMMERCIAL_LICENSE < CGAL_RELEASE_DATE

#    if defined(CGAL_LICENSE_WARNING)

       CGAL_pragma_warning("Your commercial license for CGAL does not cover "
                           "this release of the Triangulated Surface Mesh Deformation package.")
#    endif

#    ifdef CGAL_LICENSE_ERROR
#      error "Your commercial license for CGAL does not cover this release \
              of the Triangulated Surface Mesh Deformation package. \
              You get this error, as you defined CGAL_LICENSE_ERROR."
#    endif // CGAL_LICENSE_ERROR

#  endif // CGAL_SURFACE_MESH_DEFORMATION_COMMERCIAL_LICENSE < CGAL_RELEASE_DATE

#else // no CGAL_SURFACE_MESH_DEFORMATION_COMMERCIAL_LICENSE

#  if defined(CGAL_LICENSE_WARNING)
     CGAL_pragma_warning("\nThe macro CGAL_SURFACE_MESH_DEFORMATION_COMMERCIAL_LICENSE is not defined."
                          "\nYou use the CGAL Triangulated Surface Mesh Deformation package under "
                          "the terms of the GPLv3+.")
#  endif // CGAL_LICENSE_WARNING

#  ifdef CGAL_LICENSE_ERROR
#    error "The macro CGAL_SURFACE_MESH_DEFORMATION_COMMERCIAL_LICENSE is not defined.\
            You use the CGAL Triangulated Surface Mesh Deformation package under the terms of \
            the GPLv3+. You get this error, as you defined CGAL_LICENSE_ERROR."
#  endif // CGAL_LICENSE_ERROR

#endif // no CGAL_SURFACE_MESH_DEFORMATION_COMMERCIAL_LICENSE

#endif // CGAL_LICENSE_SURFACE_MESH_DEFORMATION_H


 in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
*/

import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:huawei_map/huawei_map.dart';

import 'package:huawei_map_example/custom_widgets/custom_action_bar.dart';
import 'package:huawei_map_example/custom_widgets/custom_app_bar.dart';
import 'package:huawei_map_example/custom_widgets/custom_icon_button.dart';

class CircleDemo extends StatefulWidget {
  const CircleDemo({Key? key}) : super(key: key);

  @override
  State<CircleDemo> createState() => _CircleDemoState();
}

class _CircleDemoState extends State<CircleDemo> {
  bool _colorChanged = false;
  bool _strokeChanged = false;
  bool _radiusChanged = false;

  static const LatLng _center = LatLng(41.012959, 28.997438);
  static const double _zoom = 12;

  late HuaweiMapController mapController;
  final Set<Circle> _circles = <Circle>{};

  LatLng circleCenter1 = const LatLng(40.983208, 28.965971);
  LatLng circleCenter2 = const LatLng(41.028675, 29.025234);
  LatLng circleCenter3 = const LatLng(40.851750922225825, 29.31384346110201);

  Circle? circle0;
  Circle? circle1;
  Circle? circle2;

  HmsTranslateAnimation translateAnimation = HmsTranslateAnimation(
    animationId: 'translateAnimation',
    target: const LatLng(41.028675, 29.025234),
  );

  void _onMapCreated(HuaweiMapController controller) {
    mapController = controller;
  }

  void _clear() {
    setState(() {
      _circles.clear();
    });
  }

  void changeColor() {
    if (circle0 != null && _circles.isNotEmpty) {
      if (!_colorChanged) {
        setState(
          () {
            _circles.remove(circle0);
            circle0 = circle0!.updateCopy(
              fillColor: const Color.fromRGBO(100, 200, 0, 0.5),
            );
            _circles.add(circle0!);
            _colorChanged = !_colorChanged;
          },
        );
      } else {
        setState(
          () {
            _circles.remove(circle0);
            circle0 = circle0!.updateCopy(
              fillColor: const Color.fromRGBO(100, 100, 0, 0.3),
            );
            _circles.add(circle0!);
            _colorChanged = !_colorChanged;
          },
        );
      }
    }
  }

  void changeRadius() {
    if (circle0 != null && _circles.isNotEmpty) {
      if (!_radiusChanged) {
        setState(
          () {
            _circles.remove(circle0);
            circle0 = circle0!.updateCopy(radius: 5000);
            _circles.add(circle0!);
            _radiusChanged = !_radiusChanged;
          },
        );
      } else {
        setState(
          () {
            _circles.remove(circle0);
            circle0 = circle0!.updateCopy(radius: 3000);
            _circles.add(circle0!);
            _radiusChanged = !_radiusChanged;
          },
        );
      }
    }
  }

  void _changeStrokes() {
    if (circle1 != null && _circles.isNotEmpty) {
      if (!_strokeChanged) {
        setState(() {
          _circles.remove(circle1);
          circle1 = circle1!.updateCopy(
            strokeColor: Colors.cyan,
            strokeWidth: 6,
          );
          _circles.add(circle1!);
          _strokeChanged = !_strokeChanged;
        });
      } else {
        setState(() {
          _circ


	maxima := 0
	for i, v := range y {
		if v == 0 {
			geq = x[i]
		}
		if i == 0 || i == len(y)-1 {
			continue
		}
		if v > y[i-1] && v > y[i+1] {
			maxima++
		}
		if v < y[i-1] && v < y[i+1] {
			minima++
		}
	}
	//if maxima < minima {
	//	maxima = minima
	//}
	turns := float64(maxima + minima)
	xrange := x[len(x)-2] - x[1]
	gn = 1
	if turns > 1 {
		gn = math.Pi * turns / xrange
	}
	sortedy := make([]float64, len(y))
	copy(sortedy, y)
	sort.Float64s(sortedy)
	max := sortedy[len(y)-1]
	//this will be a bad guess if only a zone around a minimum is sampled!
	gk = (2 * math.Pi) * max / (2.0 * xrange) //the IBoltzmann function always sets the minimum to 0, so max *is* twice the amplitude of the cos function.

	LogV(2, "Guess:", geq, gk, gn, "xrange", xrange, "turns", turns)
	ret[0] = &geq
	ret[1] = &gk
	ret[2] = &gn
	return ret
}

func SommelierSimplePeriodicFit(x, y []float64, phase, n, guessk float64) ([]float64, float64) {
	//produces a function that will return the sum of the squared residues for a y = 1/2*k*(x-eq)^2
	score := func(par []float64) float64 {
		eq := phase
		n := n
		k := par[0]
		//		b := par[2]
		//		c := par[3]
		var r2 float64 = 0.0
		for i, v := range y {
			p := k * (1 + math.Cos(n*x[i]-eq))
			r2 = r2 + math.Pow((v-p), 2.0)
		}
		return r2 / (2 * float64(len(x)))
	}
	ngrad := func(g, par []float64) {
		g = fd.Gradient(g, score, par, &fd.Settings{Formula: fd.Central})
	}
	nhess := func(hess *mat.SymDense, par []float64) {
		fd.Hessian(hess, score, par, nil)
	}
	guess := []*float64{&guessk}
	iterations := 10000 //this is 3 orders of magnitude less than the default
	ret, res := Fit(score, ngrad, nhess, guess, iterations)
	//We try to forbid periodicity one by discarding the value, if we get it, incrementing the guess by a random number, and fitting again.
	return ret, math.Sqrt(2 * res)
}

func GoRyckBelleFit(x, y []float64) ([]float64, float64) {
	//produces a function that will return the sum of the squared residues for a y = 1/2*k*(x-eq)^2
	score := func(p []float64) float64 {
		//		b := par[2]
		//		c := par[3]

		var r2 float64 = 0.0
		cos := math.Cos
		pow := math.Pow
		for i, v := range y {
			psi := x[i] - math.Pi
			test := p[0] + p[1]*cos(psi) + p[2]*pow(cos(psi), 2) + p[3]*pow(cos(psi), 3) + p[4]*pow(cos(psi), 4) + p[5]*pow(cos(psi), 5)
			r2 = r2 + math.Pow((v-test), 2.0)
		}
		return r2 / (2 * float64(len(x)))
	}
	ngrad := func(g, par []float64) {
		g = fd.Gradient(g, score, par, &fd.Settings{Formula: fd.Central})
	}
	nhess := func(hess *mat.SymDense, par []float64) {
		fd.Hessian(h


ADXL345 Accelerometer Interfacing with NodeMCU.jpg\"><\/figure>
 <\/p>
Read Accelerations using ADXL345 and NodeMCU<\/strong><\/h1>
To find the roll and pitch of the device we will use the I2C interface of the accelerometer and display it on the serial monitor of Arduino IDE and a local host web server.<\/p>
For the interface, we will use Adafruit libraries. We can install it from Arduino IDE Library Manager by searing Adafruit ADXL345 in the search box.<\/p>
Open the Arduino IDE and navigate to Sketch \u25ba Include Library \u25ba Manage Libraries\u2026<\/strong><\/p>
<\/figure>
The library Manager window will pop up. Now type ADXL345<\/strong> into the search box and click Install on the Adafruit ADXL345<\/strong> option to install version 1.3.1 or higher.<\/p>
<\/figure>
 <\/p>
Now open an example of Adafruit ADXL345 io dashboard. To open it navigate to File \u25ba Examples \u25ba Adafruit ADXM345 \u25ba sensortest<\/strong><\/p>
<\/p>
 <\/p>
<\/figure>
 <\/p>
Here has used the same example below<\/p>
ADXL345 Accelerometer Code for NodeMCU<\/strong><\/h1>
#include <Wire.h>\n#include <Adafruit_Sensor.h>\n#include <Adafruit_ADXL345_U.h>\n\n\/* Assign a unique ID to this sensor at the same time *\/\nAdafruit_ADXL345_Unified accel = Adafruit_ADXL345_Unified(12345);\n\nvoid displaySensorDetails(void)\n{\n  sensor_t sensor;\n  accel.getSensor(&sensor);\n  Serial.println(\"------------------------------------\");\n  Serial.print  (\"Sensor:       \"); Serial.println(sensor.name);\n  Serial.print  (\"Driver Ver:   \"); Serial.println(sensor.version);\n  Serial.print  (\"Unique ID:    \"); Serial.println(sensor.sensor_id);\n  Serial.print  (\"Max Value:    \"); Serial.print(sensor.max_value); Serial.println(\" m\/s^2\");\n  Serial.print  (\"Min Value:    \"); Serial.print(sensor.min_value); Serial.println(\" m\/s^2\");\n  Serial.print  (\"Resolution:   \"); Serial.print(sensor.resolution); Serial.println(\" m\/s^2\"); \n  Serial.prin


/*
 * Copyright 2001-2009, Ingo Weinhold, ingo_weinhold@gmx.de.
 * Distributed under the terms of the MIT License.
 */
#ifndef USERLAND_FS_OBJECT_TRACKER_H
#define USERLAND_FS_OBJECT_TRACKER_H

#include <util/DoublyLinkedList.h>

#include "Locker.h"

namespace UserlandFSUtil {

class ObjectTracker;
class GetObjectTrackableLink;

// ObjectTrackable
class ObjectTrackable {
public:
								ObjectTrackable();
	virtual						~ObjectTrackable();

private:
	friend class ObjectTracker;
	friend class GetObjectTrackableLink;

			DoublyLinkedListLink<ObjectTrackable> fLink;
};

// GetObjectTrackableLink
struct GetObjectTrackableLink {
	inline DoublyLinkedListLink<ObjectTrackable> *operator()(
		ObjectTrackable* trackable) const
	{
		return &trackable->fLink;
	}

	inline const DoublyLinkedListLink<ObjectTrackable> *operator()(
		const ObjectTrackable* trackable) const
	{
		return &trackable->fLink;
	}
};

// ObjectTracker
class ObjectTracker {
private:
								ObjectTracker();
								~ObjectTracker();

public:

	static	ObjectTracker*		InitDefault();
	static	void				ExitDefault();
	static	ObjectTracker*		GetDefault();

private:
			friend class ObjectTrackable;

			void				AddTrackable(ObjectTrackable* trackable);
			void				RemoveTrackable(ObjectTrackable* trackable);

private:
			Locker				fLock;
			DoublyLinkedList<ObjectTrackable, GetObjectTrackableLink>
				fTrackables;

	static	ObjectTracker*		sTracker;
};

}	// namespace UserlandFSUtil

using UserlandFSUtil::ObjectTrackable;
using UserlandFSUtil::ObjectTracker;

#ifdef DEBUG_OBJECT_TRACKING
#	define ONLY_OBJECT_TRACKABLE_BASE_CLASS		: private ObjectTrackable
#	define FIRST_OBJECT_TRACKABLE_BASE_CLASS	private ObjectTrackable,
#else
#	define ONLY_OBJECT_TRACKABLE_BASE_CLASS
#	define FIRST_OBJECT_TRACKABLE_BASE_CLASS
#endif

#endif	// USERLAND_FS_OBJECT_TRACKER_H


	Flux<Flux<Integer>> m =
				source1.asFlux().groupJoin(source2.asFlux(), just(Flux.never()), just(Flux.never()), add2);

		m.subscribe(ts);

		source1.emitNext(1, FAIL_FAST);
		source2.emitError(new RuntimeException("Forced failure"), FAIL_FAST);

		ts.assertErrorMessage("Forced failure")
		  .assertNotComplete()
		  .assertValueCount(1);
	}

	@Test
	public void leftDurationThrows() {
		AssertSubscriber<Object> ts = AssertSubscriber.create();
		Sinks.Many<Integer> source1 = Sinks.unsafe().many().multicast().directBestEffort();
		Sinks.Many<Integer> source2 = Sinks.unsafe().many().multicast().directBestEffort();

		Flux<Integer> duration1 = Flux.error(new RuntimeException("Forced failure"));

		Flux<Flux<Integer>> m =
				source1.asFlux().groupJoin(source2.asFlux(), just(duration1), just(Flux.never()), add2);
		m.subscribe(ts);

		source1.emitNext(1, FAIL_FAST);

		ts.assertErrorMessage("Forced failure")
		  .assertNotComplete()
		  .assertNoValues();
	}

	@Test
	public void rightDurationThrows() {
		AssertSubscriber<Object> ts = AssertSubscriber.create();
		Sinks.Many<Integer> source1 = Sinks.unsafe().many().multicast().directBestEffort();
		Sinks.Many<Integer> source2 = Sinks.unsafe().many().multicast().directBestEffort();

		Flux<Integer> duration1 = Flux.error(new RuntimeException("Forced failure"));

		Flux<Flux<Integer>> m =
				source1.asFlux().groupJoin(source2.asFlux(), just(Flux.never()), just(duration1), add2);
		m.subscribe(ts);

		source2.emitNext(1, FAIL_FAST);

		ts.assertErrorMessage("Forced failure")
		  .assertNotComplete()
		  .assertNoValues();
	}

	@Test
	public void leftDurationSelectorThrows() {
		AssertSubscriber<Object> ts = AssertSubscriber.create();
		Sinks.Many<Integer> source1 = Sinks.unsafe().many().multicast().directBestEffort();
		Sinks.Many<Integer> source2 = Sinks.unsafe().many().multicast().directBestEffort();

		Function<Integer, Flux<Integer>> fail = t1 -> {
			throw new RuntimeException("Forced failure");
		};

		Flux<Flux<Integer>> m =
				source1.asFlux().groupJoin(source2.asFlux(), fail, just(Flux.never()), add2);
		m.subscribe(ts);

		source1.emitNext(1, FAIL_FAST);

		ts.assertErrorMessage("Forced failure")
		  .assertNotComplete()
		  .assertNoValues();
	}

	@Test
	public void rightDurationSelectorThrows() {
		AssertSubscriber<Object> ts = AssertSubscriber.create();
		Sinks.Many<Integer> source1 = Sinks.unsafe().many().multicast().directBestEffort();
		Sinks.Many<Integer> source2 = Sinks.unsafe().many().multicast().directBestEffort();

		Function<Integer, Flux<Integer>> fail = t1 -> {
			throw new RuntimeException("Forced failure");
		};

		Flux<Flux<Integer>> m =
				source1.asFlux().groupJoin(source2.asFlux(), just(Flux.never()), fail, add2);
		m.subscribe(ts);

		source2.emitNext(1, FAIL_FAST);

		ts.assertErrorMessage("Forced failure")
		  .assertNotComplete()
		  .assertNoValues();
	}

	@Test
	public void resultSelectorThrows() {


/*
 * Copyright (c) 2016 Google Inc.
 * Copyright (c) 2016 KongQun Yang (kqyang@google.com)
 *
 * This file is part of FFmpeg.
 *
 * FFmpeg is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * FFmpeg is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with FFmpeg; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */

/**
 * @file
 * internal header for VPx codec configuration utilities.
 */

#ifndef AVFORMAT_VPCC_H
#define AVFORMAT_VPCC_H

#include "libavutil/rational.h"
#include "libavcodec/codec_par.h"
#include "avio.h"
#include "avformat.h"

typedef struct VPCC {
    int profile;
    int level;
    int bitdepth;
    int chroma_subsampling;
    int full_range_flag;
} VPCC;

/**
 * Writes VP codec configuration to the provided AVIOContext.
 *
 * @param s address of the AVFormatContext for the logging context.
 * @param pb address of the AVIOContext where the vpcC shall be written.
 * @param par address of the AVCodecParameters which contains codec information.
 * @return >=0 in case of success, a negative value corresponding to an AVERROR
 *         code in case of failure
 */
int ff_isom_write_vpcc(AVFormatContext *s, AVIOContext *pb,
                       AVCodecParameters *par);

int ff_isom_get_vpcc_features(AVFormatContext *s, AVCodecParameters *par,
                              AVRational *frame_rate, VPCC *vpcc);

#endif /* AVFORMAT_VPCC_H */


[maxNumberOfBlocks]);
      PixelBlock pb = pixelBlocks.get(uid);
      cztToPixelBlocks.get(key)[b] = pb;
    }

    int bpp = FormatTools.getBytesPerPixel(getPixelType());
    int bytesPerLine = m.sizeX*bpp;
    optimalTileHeight = 32;

    // Let's compute the coordinates of the pixel blocks in y
    // We also make the optimal tile height match the max size of a block in Y
    for (PixelBlock[] blocks : cztToPixelBlocks.values()) {
      int yStart = 0;
      for (PixelBlock block: blocks) {
        if (block != null) {
          block.yStart = yStart;
          if ((block.length % bytesPerLine)!=0) {
            LOGGER.error("A pixel block contains a partial line.");
          }
          int nLines = block.length/bytesPerLine;
          if (nLines > optimalTileHeight) {
            optimalTileHeight = nLines;
          }
          yStart+=block.length/bytesPerLine;
          block.yEnd = yStart; // start of the next block = end (excluded) of the previous block
        }
      }
    }

    // Make sure that an optimal tile does not go beyond 2 Gbytes -> that probably shouldn't happen
    if ((long)optimalTileHeight*(long)m.sizeX*(long)bpp > Integer.MAX_VALUE) {
      optimalTileHeight = Integer.MAX_VALUE / (bpp  * m.sizeX) - 1;
    }

    // populate original metadata

    Hashtable<String, Object> tmpMeta = new Hashtable<String, Object>();
    addMeta("Creation date", acquisitionDate, tmpMeta);
    addMeta("Pixel Length X", physicalSizeX, tmpMeta);
    addMeta("Pixel Length Y", physicalSizeY, tmpMeta);
    addMeta("Z step", physicalSizeZ, tmpMeta);

    for (Channel channel : channels) {
      String prefix = "Channel " + channel.name + " ";
      addMetaList(prefix + "ID", channel.id, tmpMeta);
      addMetaList(prefix + "color", channel.color, tmpMeta);
      addMetaList(prefix + "pinhole", channel.pinhole, tmpMeta);
      addMetaList(prefix + "start wavelength", channel.excitation, tmpMeta);
      addMetaList(prefix + "end wavelength", channel.emission, tmpMeta);
      addMetaList(prefix + "linked laser index", channel.laserIndex, tmpMeta);
    }

    for (Objective objective : objectives) {
      addMetaList("Objective Lens name", objective.name, tmpMeta);
      addMetaList("Objective Lens magnification", objective.magnification, tmpMeta);
      addMetaList("Objective Lens na", objective.na, tmpMeta);
      addMetaList("Objective Lens wd", objective.wd, tmpMeta);
      addMetaList("Objective Lens refractive index", objective.ri, tmpMeta);
      addMetaList("Objective Lens immersion", objective.immersion, tmpMeta);
    }

    for (Laser laser : lasers) {
      String prefix = "Laser " + laser.name + " ";
      addMetaList(prefix + "ID", laser.id, tmpMeta);
      addMetaList(prefix + "data ID", laser.dataId, tmpMeta);
      addMetaList(prefix + "power", laser.power, tmpMeta);
      addMetaList(prefix + "transmissivity", laser.transmissivity, tmpMeta);
      addMetaList(prefix + "wavelength", laser.wavelength, tmpMeta);
    }

    for (Detector detector : detectors) {
      addMetaList("Detector ID", detector.id, tmpMeta);
      addMetaList("Detector linked channel ID", detector.channelId, tmpMeta);
      addMetaList("Detector voltage", detector.voltage, tmpMeta);
      addMetaList("Detector offset",


_frontend_2node__modules_2postcss_2README.html',1,'PostCSS'],['../md_frontend_2node__modules_2next_2node__modules_2postcss_2README.html',1,'PostCSS']]],
  ['postinstall_174',['napi-postinstall',['../md_frontend_2node__modules_2napi-postinstall_2README.html',1,'']]],
  ['pre_20commit_175',['pre-commit',['../md_node__modules_2pre-commit_2README.html',1,'']]],
  ['prefer_20default_20export_176',['import/prefer-default-export',['../md_frontend_2node__modules_2eslint-plugin-import_2docs_2rules_2prefer-default-export.html',1,'']]],
  ['prefer_20tag_20over_20role_177',['jsx-a11y/prefer-tag-over-role',['../md_frontend_2node__modules_2eslint-plugin-jsx-a11y_2docs_2rules_2prefer-tag-over-role.html',1,'']]],
  ['prelude_20ls_20a_20href_20https_3a_20travis_20ci_20org_20gkz_20prelude_20ls_20img_20src_20https_3a_20travis_20ci_20org_20gkz_20prelude_20ls_20png_20branch_20master_20alt_20build_20status_20a_178',['prelude.ls ',['../md_frontend_2node__modules_2prelude-ls_2README.html',1,'']]],
  ['preserve_20symlinks_20flag_20sup_20a_20href_20https_3a_20npmjs_20org_20package_20node_20supports_20preserve_20symlinks_20flag_20img_20src_20https_3a_20versionbadg_20es_20inspect_20js_20node_20supports_20preserve_20symlinks_20flag_20svg_20alt_20version_20badge_20a_20sup_179',['preserve symlinks flag sup a href https: npmjs org package node supports preserve symlinks flag img src https: versionbadg es inspect js node supports preserve symlinks flag svg alt version badge a sup',['../md_node__modules_2supports-preserve-symlinks-flag_2README.html',1,'node-supports-preserve-symlinks-flag '],['../md_frontend_2node__modules_2supports-preserve-symlinks-flag_2README.html',1,'node-supports-preserve-symlinks-flag ']]],
  ['primitive_20sup_20a_20href_20htt


 "success",
			init: func(t *testing.T) *Generator {
				return &Generator{
					buf:            bytes.NewBuffer([]byte{}),
					funcs:          []*Func{{}},
					headerTemplate: template.Must(template.New("header").Parse("package header")),
					testTemplate:   template.Must(template.New("test").Parse("//comment")),
				}
			},
			args: func(*testing.T) args {
				return args{w: ioutil.Discard}
			},
		},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			tArgs := tt.args(t)

			receiver := tt.init(t)
			err := receiver.Write(tArgs.w)

			if tt.inspect != nil {
				tt.inspect(receiver, t)
			}

			if (err != nil) != tt.wantErr {
				t.Fatalf("Generator.Write error = %v, wantErr: %t", err, tt.wantErr)
			}

			if tt.inspectErr != nil {
				tt.inspectErr(err, t)
			}
		})
	}
}
package templatestests

// Code generated by http://github.com/gojuno/minimock (dev). DO NOT EDIT.

import (
	"context"
	"sync"
	mm_atomic "sync/atomic"
	mm_time "time"

	"github.com/gojuno/minimock/v3"
	mm_trace "go.opencensus.io/trace"
)

// TracerOpenCensusMock implements trace.Tracer
type TracerOpenCensusMock struct {
	t minimock.Tester

	funcFromContext          func(ctx context.Context) (sp1 *mm_trace.Span)
	inspectFuncFromContext   func(ctx context.Context)
	afterFromContextCounter  uint64
	beforeFromContextCounter uint64
	FromContextMock          mTracerOpenCensusMockFromContext

	funcNewContext          func(ctx context.Context, s *mm_trace.Span) (c1 context.Context)
	inspectFuncNewContext   func(ctx context.Context, s *mm_trace.Span)
	afterNewContextCounter  uint64
	beforeNewContextCounter uint64
	NewContextMock          mTracerOpenCensusMockNewContext

	funcStartSpan          func(ctx context.Context, name string, o ...mm_trace.StartOption) (c2 context.Context, sp1 *mm_trace.Span)
	inspectFuncStartSpan   func(ctx context.Context, name string, o ...mm_trace.StartOption)
	afterStartSpanCounter  uint64
	beforeStartSpanCounter uint64
	StartSpanMock          mTracerOpenCensusMockStartSpan

	funcStartSpanWithRemoteParent          func(ctx context.Context, name string, parent mm_trace.SpanContext, o ...mm_trace.StartOption) (c2 context.Context, sp1 *mm_trace.Span)
	inspectFuncStartSpanWithRemoteParent   func(ctx context.Context, name string, parent mm_trace.SpanContext, o ...mm_trace.StartOption)
	afterStartSpanWithRemoteParentCounter  uint64
	beforeStartSpanWithRemoteParentCounter uint64
	StartSpanWithRemoteParentMock          mTracerOpenCensusMockStartSpanWithRemoteParent
}

// NewTracerOpenCensusMock returns a mock for trace.Tracer
func NewTracerOpenCensusMock(t minimock.Tester) *TracerOpenCensusMock {
	m := &TracerOpenCensusMock{t: t}
	if controller, ok := t.(minimock.MockController); ok {
		controller.RegisterMocker(m)
	}

	m.FromContextMock = mTracerOpenCensusMockFromContext{mock: m}
	m.FromContextMock.callArgs = []*TracerOpenCensusMockFromContextParams{}

	m.NewContextMock = mTracerOpenCensusMockNewContext{mock: m}
	m.NewContextMock.callArgs = []*TracerOpenCensusMockNewContextParams{}

	m.StartSpanMock = mTracerOpenCensusMockStartSpan{mock: m}
	m.StartSpanMock.callArgs = []*TracerOpenCensusMockStartSpanParams{}

	m.StartSpanWithRemoteParentMock


0;: openlibm_math.h

FP_ILOGBNAN : openlibm_math.h

FP_INFINITE : openlibm_math.h

FP_NAN : openlibm_math.h

FP_NORMAL : openlibm_math.h

FP_SUBNORMAL : openlibm_math.h

FP_ZERO : openlibm_math.h

fpclassify : openlibm_math.h

fREe : malloc.c

FREE_NAMBUF : ff.c

FS_EXFAT : ff.h

FS_FAT12 : ff.h

FS_FAT16 : ff.h

FS_FAT32 : ff.h

FSI_Free_Count : ff.c

FSI_LeadSig : <a class="el" href="ff_8c.html#a318e58c1966aba52b90ab98d


          .build();
    }
    List<KancolleShipLogEntity> logs = query.find();
    query.close();

    if (logs.isEmpty) {
      return null;
    }

    return logs;
  }

  void saveShipLog({
    required String admiral,
    required ShipLogType type,
    required String? shipName,
  }) {
    if (shipName == null) {
      return;
    }
    DateTime dateTime = DateTime.now();
    dev.log("save ship log");
    dev.log(shipName);
    dev.log(type.name);
    shipLog.put(KancolleShipLogEntity(
      dateTime: dateTime,
      admiral: admiral,
      type: kShipLogTypeMap[type]!,
      shipName: shipName,
    ));
  }

  void saveRouteLog({
    required int mapId,
    required routeId,
    required int formation,
  }) {
    Query<KancolleRouteLogEntity> query = routeLog
        .query(KancolleRouteLogEntity_.mapId
            .equals(mapId)
            .and(KancolleRouteLogEntity_.routeId.equals(routeId)))
        .build();
    List<KancolleRouteLogEntity>? logs = query.find();
    if (logs.isNotEmpty) {
      routeLog.removeMany(logs.map((e) => e.id).toList());
    }
    routeLog.put(KancolleRouteLogEntity(
        routeId: routeId, mapId: mapId, formation: formation));
  }

  int getRouteFormation(int? mapId, int? routeId) {
    if (mapId == null || routeId == null) {
      return -1;
    }
    Query<KancolleRouteLogEntity> query = routeLog
        .query(KancolleRouteLogEntity_.mapId
            .equals(mapId)
            .and(KancolleRouteLogEntity_.routeId.equals(routeId)))
        .build();
    List<KancolleRouteLogEntity>? logs = query.find();
    if (logs.isNotEmpty) {
      return logs.first.formation;
    }
    return -1;
  }

  void close() {
    store.close();
  }

  Future<void> clear() async {
    close();
    final objBoxDirectory = Directory(pathUtil.objectBoxPath);
    final isExists = await objBoxDirectory.exists();
    if (isExists) {
      debugPrint("obx path exists: $isExists");
      await objBoxDirectory.delete(recursive: true);
    }
  }

  Future<String> storeSize() async {
    return getFileSize(pathUtil.objectBoxDataDBPath, 2);
  }

  void saveQuest(int id, String logStr) {
    Query<KancolleQuestLogEntity> query =
        questLog.query(KancolleQuestLogEntity_.questId.equals(id)).build();
    List<KancolleQuestLogEntity>? logs = query.find();
    late KancolleQuestLogEntity? log;
    if (logs.length > 1) {
      log = logs.first;
      for (var log in logs) {
        questLog.remove(log.id);
      }
      log.logStr = logStr;
      log.timestamp = DateTime.now().millisecondsSinceEpoch;
    } else if (logs.length == 1) {
      log = logs.first;
      if (log.logStr == logStr) {
        return;
      }
      log.logStr = logStr;
      log.timestamp = DateTime.now().millisecondsSinceEpoch;
    } else {
      log = KancolleQuestLogEntity(
          questId: id,
          timestamp: DateTime.now().millisecondsSinceEpoch,
          logStr: logStr);
    }
    questLog.putAsync(log);
    dev.log("put $id");
  }

  void updateAllQuest(String admiral) async {
    if (admiral == '') {
      return;
    }
    Query<KancolleQuestLogEntity> query = questLog.query().build();
    List<KancolleQuestLogEnti


dication.com/pagead/js/adsbygoogle.js"></script>

                    </fieldset>

118 ► California, Santa Clara County, Palo Alto, Green Acres —  Mayfield Fire Bell —

		From 1907 to 1925 this bell was used to summon the volunteer firemen of the town of Mayfield. First used at College Avenue and El Camino Real. The bell was transferred to the town hall at El Camino Real and California Avenue in 1921. When Mayfield  . . .  —  — Map (db m91031) HM

119 ► California, Santa Clara County, Palo Alto, University South — 976 —  Birthplace of “Silicon Valley” —

		This garage is the birthplace of the world’s first high-technology region, “Silicon Valley.” The idea for such a region originated with Dr. Frederick Terman, a Stanford university professor who encouraged his students to start up their  . . .  —  — Map (db m3402) HM

120 ► California, Santa Clara County, Palo Alto, University South — 836 —  Electronics Research Laboratory — <img src=directions.png width=20 title='Driving directions to this location


/14535/65258), [#65260](https://t.me/c/1608823685/14535/65260), [#65262](https://t.me/c/1608823685/14535/65262), [#65747](https://t.me/c/1608823685/14535/65747), [#65748](https://t.me/c/1608823685/14535/65748), [#69804](https://t.me/c/1608823685/14535/69804), [#69806](https://t.me/c/1608823685/14535/69806), [#69933](https://t.me/c/1608823685/14535/69933), [#70004](https://t.me/c/1608823685/14535/70004), [#71011](https://t.me/c/1608823685/14535/71011), [#71021](https://t.me/c/1608823685/14535/71021), [#71023](https://t.me/c/1608823685/14535/71023), [#71025](https://t.me/c/1608823685/14535/71025), [#71026](https://t.me/c/1608823685/14535/71026), [#71522](https://t.me/c/1608823685/14535/71522)

> При второй подаче с бронями на три поездки (по 6-10 дней каждая) дали двухкратную визу только на две первые поездки, третью проигнорировали. Виза была на два месяца с 18 днями пребывания и двумя въездами. Предоставлялись выписки со счетов, пейслипы, траты в Венгрии с прошлых поездок, прошлые визы.
> [#68118](https://t.me/c/1608823685/14535/68118), [#68120](https://t.me/c/1608823685/14535/68120), [#68121](https://t.me/c/1608823685/14535/68121), [#68123](https://t.me/c/1608823685/14535/68123), [#68124](https://t.me/c/1608823685/14535/68124)

> При второй подаче шансы на мультивизу есть, но не гарантированы. Обычно дают однократную визу под даты поездки. Для мультивизы важна хорошая подготовка документов и соблюдение всех требований консульства. Один пользователь получил месячный мульт второй визой, а третьей - на 5 месяцев. Заявленная длинная поездка не связана напрямую с одобрением мульти.
> [#95208](https://t.me/c/1608823685/14535/95208), [#97230](https://t.me/c/1608823685/14535/97230), [#97561](https://t.me/c/1608823685/14535/97561), [#97562](https://t.me/c/1608823685/14535/97562), [#97563](https://t.me/c/1608823685/14535/97563), [#98141](https://t.me/c/1608823685/14535/98141), [#98142](https://t.me/c/1608823685/14535/98142), [#98143](https://t.me/c/1608823685/14535/98143), [#98144


 - 50 * Math.cos(p * Math.PI * 2);

    return {
      d: `M ${startX} ${startY} C ${controlX1} ${controlY1}, ${controlX2} ${controlY2}, ${endX} ${endY}`,
      stroke: `rgba(${Math.floor(255 * p)}, ${Math.floor(
        100 + 155 * (1 - p)
      )}, ${Math.floor(200 * (1 - p))}, 1)`,
      strokeWidth: 2 + 3 * p,
    };
  });

  return (
    <View style={styles.container}>
      <Svg width="100%" height="200">
        <AnimatedPath animatedProps={animatedProps} fill="none" />
      </Svg>
    </View>
  );
};

// Complex particle system with hardware acceleration
const ParticleSystem = ({ count = 50 }) => {
  const particles = useMemo(() => {
    return Array(count)
      .fill(0)
      .map((_, i) => ({
        id: i,
        x: useSharedValue(Math.random() * 300),
        y: useSharedValue(Math.random() * 500),
        scale: useSharedValue(0.5 + Math.random() * 1.5),
        rotation: useSharedValue(0),
        opacity: useSharedValue(0.3 + Math.random() * 0.7),
        speed: 0.5 + Math.random() * 2,
      }));
  }, [count]);

  // Animate all particles
  useEffect(() => {
    particles.forEach((particle) => {
      // Create unique animation for each particle
      particle.rotation.value = withRepeat(
        withTiming(2 * Math.PI, {
          duration: 5000 / particle.speed,
          easing: Easing.linear,
        }),
        -1,
        false
      );

      // Floating animation
      const animatePosition = () => {
        const targetX = Math.random() * 300;
        const targetY = Math.random() * 500;
        const duration = 3000 + Math.random() * 5000;

        particle.x.value = withTiming(targetX, {
          duration,
          easing: Easing.bezier(0.25, 0.1, 0.25, 1),
        });

        particle.y.value = withTiming(
          targetY,
          {
            duration,
            easing: Easing.bezier(0.25, 0.1, 0.25, 1),
          },
          () => {
            // When animation completes, start next animation
            runOnJS(animatePosition)();
          }
        );
      };

      // Start animation loop
      animatePosition();
    });
  }, [particles]);

  return (
    <View style={styles.particleContainer}>
      {particles.map((particle) => (
        <ParticleItem key={particle.id} particle={particle} />
      ))}
    </View>
  );
};

const ParticleItem = ({ particle }) => {
  const animatedStyle = useAnimatedStyle(() => {
    return {
      position: "absolute",
      left: particle.x.value,
      top: particle.y.value,
      opacity: particle.opacity.value,
      transform: [
        { scale: particle.scale.value },
        { rotate: `${particle.rotation.value}rad` },
      ],
    };
  });

  return (
    <Animated.View style={[styles.particle, animatedStyle]}>
      <View style={styles.particleInner} />
    </Animated.View>
  );
};
```

Key benefits of hardware-accelerated path animations:

- **GPU-based rendering**: Path calculations are offloaded to the GPU
- **Complex motion paths**: Support for bezier curves and complex trajectories
- **Smooth transitions**: High frame rates even with many animated elements
- **Dynamic path morphing**: Ability to smoothly transform between different paths
- **Reduced CPU load**: Frees up CPU resources for other tasks

## Measuring Animation Performance

To identify animation performance issues:

1. **Frame Rate Monitoring**: Use the Performance Monitor to track FPS during animations
2. **Systrace**: Capture detailed thread activity on Android
3. **Chrome DevTools**: Profile JavaScript execution time during animations
4. **Interaction Timing**: Measure time between user input and visual response

```jsx
// Simple performance monitorin


 RELATED LINKS

[Get-NetAdapterSriov](./Get-NetAdapterSriov.md)

[Get-NetAdapterVmq](./Get-NetAdapterVmq.md)

---
description: Identify a user, group, or computer account. Use SIDs to check access rights to resources.
ms.assetid: e36d42b2-9bdd-4dd9-9c62-1b7c78239ffe
title: Establishing a Client Context from a SID in C++
ms.topic: concept-article
ms.date: 05/31/2018
---

# Establishing a Client Context from a SID in C++

Use a [*security identifier*](/windows/desktop/SecGloss/s-gly) (SID) to identify a user, group, or computer account. Use SIDs to check access rights to resources.

| Topic                                                                                | Description                              |
|--------------------------------------------------------------------------------------------------------|------------------------------------------|
| [Searching for a SID in an Access Token in C++](searching-for-a-sid-in-an-access-token-in-c--.md)     | Find a SID in an access token.           |
| [Converting a Binary SID to String Format in C++](converting-a-binary-sid-to-string-format-in-c--.md) | Convert a SID to and from string format. |

---
UID: NS:rilapitypes.RILEXCHANGEUICCAPDUPARAMS
title: RILEXCHANGEUICCAPDUPARAMS (rilapitypes.h)
description: "Don't use this structure in your code. Microsoft reserves the RILEXCHANGEUICCAPDUPARAMS structure for internal use only."
old-location: netvista\rilexchangeuiccapduparams.htm
tech.root: netvista
ms.date: 05/02/2018
keywords: ["RILEXCHANGEUICCAPDUPARAMS structure"]
ms.keywords: "*LPRILEXCHANGEUICCAPDUPARAMS, RILEXCHANGEUICCAPDUPARAMS, RILEXCHANGEUICCAPDUPARAMS structure [Network Drivers Starting with Windows Vista], netvista.rilexchangeuiccapduparams, ntddrilapitypes/RILEXCHANGEUICCAPDUPARAMS"
req.header: rilapitypes.h
req.include-header: Rilapitypes.h
req.target-type: Windows
req.target-min-winverclnt:
req.target-min-winversvr:
req.kmdf-ver:
req.umdf-ver:
req.ddi-compliance:
req.unicode-ansi:
req.idl:
req.max-support:
req.namespace:
req.assembly:
req.type-library:
req.lib:
req.dll:
req.irql:
targetos: Windows
req.typenames: RILEXCHANGEUICCAPDUPARAMS, *LPRILEXCHANGEUICCAPDUPARAMS
f1_keywords:
 - RILEXCHANGEUICCAPDUPARAMS
 - rilapitypes/RILEXCHANGEUICCAPDUPARAMS
 - LPRILEXCHANGEUICCAPDUPARAMS
 - rilapitypes/LPRILEXCHANGEUICCAPDUPARAMS
topic_type:
 - APIRef
 - kbSyntax
api_type:
 - HeaderDef
api_location:
 - ntddrilapitypes.h
api_name:
 - RILEXCHANGEUICCAPDUPARAMS
 - LPRILEXCHANGEUICCAPDUPARAMS
---

# RILEXCHANGEUICCAPDUPARAMS structure (rilapitypes.h)

## -description

This topic supports the Windows driver infrastructure and is not intended to be used directly from your code.

## -struct-fields

### -field dwSlotIndex

### -field dwChannelId

### -field dwAPDULength

### -field bAPDU

---
UID: NS:rilapitypes.RILPOSITIONINFOGSM
title: RILPOSITIONINFOGSM (rilapitypes.h)
description: "Micros


"为凄凉之地的维洛收集15个瑟莱德丝水晶雕像。",
    ["T"] = "扭曲的邪恶",
  },
  [7069] = "_",
  [7161] = {
    ["D"] = "你好，$c。经过如此长时间的等待，我们终于有机会响应战斗的召唤了。旧日的感觉正在慢慢恢复，我们又将热血沸腾！$B$B所有新兵都必须完成氏族的试炼。$B$B在附近的蛮爪豺狼人山洞里面有一面霜狼氏族的旗帜。去那里拿回旗帜，然后把它还给我，我就将授予你霜狼新兵的勋章。",
    ["O"] = "到主基地东南边的蛮爪洞穴中去找到霜狼军旗，然后把它交给战争大师拉格隆德。",
    ["T"] = "实验场",
  },
  [7221] = "_",
  [7222] = "_",
  [7302] = {
    ["D"] = "我们的空中支持现在处于困境之中，$N。空军指挥官在敌人的领地中被射落，你必须找到他们，然后我们才可以开始营救行动！$B$B古斯最后一次飞行时曾出现在冰翼碉堡上空，杰斯托的双足飞龙应该在雷矛伐木场附近。至于穆维里克……那个笨蛋据说落在了丹巴达尔北部碉堡一带。$B$B这是我这里汇总的所有情报。赶快出发，彻底搜索那些地区！",
    ["O"] = "找到空军指挥官古斯、空军指挥官杰斯托和空军指挥官穆维里克。任务完成之后向挥官穆法特复命。",
    ["T"] = "被捕的空军指挥官",
  },
  [7383] = {
    ["D"] = "然而泰达希尔并不是一切都尽如人意。范达尔·鹿盔对于世界之树的计划正如他自己所希望的那样一步步展开了，但是还有一个小问题，这个问题或许会给泰达希尔带来一些麻烦。$B$B不过我不打算介入此事。你得去一趟最后一口月亮井，就在这里西北面的神谕林地里，就在神谕之树的树干下面，那是我们的第一口也是最强大的一口月亮井。在那里灌一瓶水，然后回来向我报告。",
    ["O"] = "用月亮井的水装满紫水晶瓶，然后把它交给多兰纳尔的科瑞萨斯·月怒。",
    ["T"] = "大地之冠",
  },
  [7385] = {
    ["D"] = "你可以为我提供更多敌人的鲜血。我很乐意接受更多，$N。",
    ["O"] = "null",
    ["T"] = "联盟之血",


 00 */	li r4, 0
/* 802AD198 002A8DF8  4B D5 6F 6D */	bl memset
/* 802AD19C 002A8DFC  7F E3 FB 78 */	mr r3, r31
/* 802AD1A0 002A8E00  4B FC 15 E5 */	bl OSRestoreInterrupts
/* 802AD1A4 002A8E04  80 01 00 14 */	lwz r0, 0x14(r1)
/* 802AD1A8 002A8E08  83 E1 00 0C */	lwz r31, 0xc(r1)
/* 802AD1AC 002A8E0C  83 C1 00 08 */	lwz r30, 8(r1)
/* 802AD1B0 002A8E10  7C 08 03 A6 */	mtlr r0
/* 802AD1B4 002A8E14  38 21 00 10 */	addi r1, r1, 0x10
/* 802AD1B8 002A8E18  4E 80 00 20 */	blr


Object> matcherArray;

	public FilterQueryMatcher() {
		queryList = new JsonQueryList();
		next = 0;
		matcherArray = new ArrayList<QueryJsonObject>();

	}

	public boolean isDateQuery(String queryString) {
		ObjectMapper mapper = new ObjectMapper();

		if (queryString.indexOf(QueryType.date_query.toString()) > -1) {
			try {
				DateQueryJsonObject dateQuery = mapper.readValue(queryString, DateQueryJsonObject.class);
				return true;
			} catch (Exception e) {
				logger.error("Exception while parsing the date query", e);
			}
		}
		return false;
	}

	public boolean isClassifierQuery(String queryString) {
		ObjectMapper mapper = new ObjectMapper();

		if (queryString.indexOf(QueryType.classifier_query.toString()) > -1) {
			try {
				ClassifierQueryJsonObject classiferQuery = mapper.readValue(queryString, ClassifierQueryJsonObject.class);
				return true;
			} catch (Exception e) {
				logger.debug("Exception in deserializing using Jackson readValue()");
				logger.error("Exception in deserializing using Jackson readValue()", e);
			}
		}
		return false;
	}

	public boolean getMatcherResult(ClassifiedFilteredTweet tweet) {
		if (matcherArray != null) {
			int i = 0;
			boolean matchResult = true;
			for (QueryJsonObject q: matcherArray) {
				//logger.info("Attempting matching with query predicate: " + q.toString());
				++i;
				 matchResult = matchResult && isQueryMatch(q, tweet);
				//logger.info("** Result of matching query with tweet = " + matchResult + " ** \n");
				if (!matchResult) {
					return false;
				}
			}
		}
		return true;
	}

	public boolean isQueryMatch(QueryJsonObject q, ClassifiedFilteredTweet tweet) {
		if (q instanceof DateQueryJsonObject) {
			// check DateQueryJsonObject fields
			if (q.getComparator().equals(ComparatorType.is_after)) {
				boolean matchResult;
				if (null == tweet.getCreatedAt()) {
					logger.warn("No createdAt field in Tweet!!! tweet = " + tweet);
					return false;		// default behavior
				}
				matchResult = tweet.getCreatedAt().compareTo(q.getDate()) >= 0;
				//logger.debug("For " + tweet.getCreatedAt().toString() + " comparing after date " + q.getDate().toString() + " : " + matchResult);
				return matchResult;
			}
			if (q.getComparator().equals(ComparatorType.is_before)) {
				boolean matchResult;
				if (null == tweet.getCreatedAt()) {
					logger.warn("No createdAt field in Tweet!!!" + tweet);
					return false;		// default behavior
				}
				matchResult = tweet.getCreatedAt().compareTo(q.getDate()) <= 0;
				//logger.debug("For " + tweet.getCreatedAt().toString() + " comparing before date" + q.getDate().toString() + " : " + matchResult);
				return matchResult;
			}
		}

		if (q instanceof ClassifierQueryJsonObject) {
			// check ClassifierQueryJsonObject fields
			boolean matchResult = false;
			int i = 0;
			for (NominalLabel nLabel: tweet.getNominalLabels()) {
				//logger.debug("Going for matching nLabel#" + i);
				++i;
				if (q.getClassifierCode() != null && nLabel.attribute_code != null
					&& q.getClassifierCode().equalsIgnoreCase(nLabel.attribute_code)) {
					// classifier code matches, next match comparator
					matchResult = true;
					//logger.info("comparing classifier code '" + nLabel.attibute_code + "': " + matchResult);

					// First check confidence parameter
					if (q.getComparator().equals(ComparatorType.has_confidence)) {
						matchResult = matchResult && (nLabel.confidence >= q


 211.472 679.929 211.237 679.78 211.056C679.641 210.864 679.401 210.704 679.06 210.576C678.718 210.437 678.228 210.304 677.588 210.176C676.83 210.027 676.244 209.856 675.828 209.664C675.422 209.472 675.129 209.232 674.948 208.944C674.777 208.645 674.692 208.261 674.692 207.792C674.692 207.173 674.788 206.699 674.98 206.368C675.182 206.037 675.513 205.803 675.972 205.664C676.441 205.515 677.108 205.44 677.972 205.44C678.782 205.44 679.406 205.504 679.844 205.632C680.281 205.76 680.601 205.984 680.804 206.304C681.006 206.613 681.124 207.056 681.156 207.632H679.828C679.774 207.237 679.614 206.971 679.348 206.832C679.081 206.693 678.617 206.624 677.956 206.624C677.444 206.624 677.049 206.661 676.772 206.736C676.494 206.8 676.297 206.917 676.18 207.088C676.062 207.259 676.004 207.499 676.004 207.808C676.004 207.989 676.078 208.149 676.228 208.288C676.388 208.427 676.649 208.565 677.012 208.704C677.374 208.832 677.892 208.981 678.564 209.152C679.3 209.333 679.865 209.531 680.26 209.744C680.654 209.957 680.932 210.219 681.092 210.528C681.252 210.837 681.332 211.237 681.332 211.728C681.332 212.368 681.23 212.864 681.028 213.216C680.825 213.557 680.489 213.803 680.02 213.952C679.55 214.091 678.878 214.16 678.004 214.16Z"
                fill="#ABABAB"
              ></path>
              <rect
                x="103"
                y="9"
                width="127"
                height="36"
                fill="#65CC54"
                class="motion-safe:animate-pulse"
              ></rect>
              <rect
                x="103"
                y="73"
                width="286"
                height="36"
                fill="#3E7E3B"
              ></rect>
              <path
                d="M405.624 87.432H400.104V86.12H406.92V87.784L402.28 97.16H400.744L405.624 87.432ZM413.41 97.16C412.514 97.16 411.82 97.0853 411.33 96.936C410.839 96.7867 410.492 96.5307 410.29 96.168C410.087 95.8053 409.986 95.2933 409.986 94.632H411.346C411.367 94.9947 411.447 95.272 411.586 95.464C411.724 95.6453 411.943 95.7787 412.242 95.864C412.551 95.9387 412.983 95.976 413.538 95.976C414.028 95.976 414.407 95.9387 414.674 95.864C414.94 95.7893 415.127 95.6667 415.234 95.496C415.351 95.3253 415.41 95.08 415.41 94.76C415.41 94.472 415.335 94.2373 415.186 94.056C415.047 93.864 4


thod)
{
	static bool s_Il2CppMethodInitialized;
	if (!s_Il2CppMethodInitialized)
	{
		il2cpp_codegen_initialize_method (RegexCharClass_SetFromProperty_mA33170AF599765B5FDE8611BED646A850FB2330E_MetadataUsageId);
		s_Il2CppMethodInitialized = true;
	}
	int32_t V_0 = 0;
	int32_t V_1 = 0;
	int32_t V_2 = 0;
	int32_t V_3 = 0;
	String_t* V_4 = NULL;
	{
		V_0 = 0;
		IL2CPP_RUNTIME_CLASS_INIT(RegexCharClass_t56409AACB9ADE95FA5333FC5D94FAADAF564AE90_il2cpp_TypeInfo_var);
		StringU5B0___U2C0___U5D_tE93164AE7893C771D8246C63F72E776F0207282B* L_0 = ((RegexCharClass_t56409AACB9ADE95FA5333FC5D94FAADAF564AE90_StaticFields*)il2cpp_codegen_static_fields_for(RegexCharClass_t56409AACB9ADE95FA5333FC5D94FAADAF564AE90_il2cpp_TypeInfo_var))->get__propTable_17();
		NullCheck((RuntimeArray *)(RuntimeArray *)L_0);
		int32_t L_1 = Array_GetLength_m318900B10C3A93A30ABDC67DE161C8F6ABA4D359((RuntimeArray *)(RuntimeArray *)L_0, 0, /*hidden argument*/NULL);
		V_1 = L_1;
		goto IL_0070;
	}

IL_0010:
	{
		int32_t L_2 = V_0;
		int32_t L_3 = V_1;
		V_2 = ((int32_t)((int32_t)((int32_t)il2cpp_codegen_add((int32_t)L_2, (int32_t)L_3))/(int32_t)2));
		String_t* L_4 = ___capname0;
		IL2CPP_RUNTIME_CLASS_INIT(RegexCharClass_t56409AACB9ADE95FA5333FC5D94FAADAF564AE90_il2cpp_TypeInfo_var);
		StringU5B0___U2C0___U5D_tE93164AE7893C771D8246C63F72E776F0207282B* L_5 = ((RegexCharClass_t56409AACB9ADE95FA5333FC5D94FAADAF564AE90_StaticFields*)il2cpp_codegen_static_fields_for(RegexCharClass_t56409AACB9ADE95FA5333FC5D94FAADAF564AE90_il2cpp_TypeInfo_var))->get__propTable_17();
		int32_t L_6 = V_2;
		NullCheck((StringU5B0___U2C0___U5D_tE93164AE7893C771D8246C63F72E776F0207282B*)(StringU5B0___U2C0___U5D_tE93164AE7893C771D8246C63F72E776F0207282B*)L_5);
		String_t* L_7 = ((StringU5B0___U2C0___U5D_tE93164AE7893C771D8246C63F72E776F0207282B*)(StringU5B0___U2C0___U5D_tE93164AE7893C771D8246C63F72E776F0207282B*)L_5)->GetAt(L_6, 0);
		int32_t L_8 = String_Compare_m5BD1EF8904C9B13BEDB7A876B122F117B317B442(L_4, L_7, 4