text:
Other State Water News
Aquafornia news July 11, 2014 Associated Press
Hot Spot: Yellowstone Road Melts, Sites Closed
The ever-changing thermal geology of Yellowstone National Park has created a hot spot that melted an asphalt road and closed access to popular geysers and other attractions at the height of tourist season, officials said Thursday.
National Park Service Calls Development Plans a Threat to Grand Canyon
Looking eastward from the canyon's popular South Rim, visitors could soon see a hive of construction as workers build restaurants, hotels and shops on a distant mesa on the Navajo Indian reservation. … That project and a second, unrelated development proposed for just south of the canyon have set off alarms at the National Park Service, which sees them as the most serious threat the park has faced in its 95-year history.
Aquafornia news July 7, 2014
Commentary: Yellowstone Grizzly Bears are on the Rebound and Outbound
From the Los Angeles Times, in a commentary by Jeff Burrell:
Today, working as a wildlife conservation scientist in the Northern Rockies, I see grizzly bears regularly. … Every sighting is gratifying, especially since the grizzly bear has been listed under the U.S. Endangered Species Act for most of my life."
Thousands Go Without Water as Detroit Cuts Service for Nonpayment
In April, the city [Detroit] set a target of cutting service to 3,000 customers a week who were more than $150 behind on their bills. In May, the water department sent out 46,000 warnings and cut off service to 4,531.
Aquafornia news June 30, 2014 Los Angeles Times
River Cruise in Oregon Conjures the Spirit of Lewis and Clark
This is the same river route Lewis and Clark took 200 years ago, a 1,000-mile journey along the Columbia and Snake rivers and right up the musket of the American West. … For eight days we make shore visits to waterfalls, wineries, dams, fish ladders, museums and forts along the way.
Aquafornia news June 26, 2014 Associated Press
Lingering Drought Taking Toll on Northern Nevada Wildlife
Lingering drought is taking a toll on wildlife across Northern Nevada, shrinking deer herds on the high desert, drying up fisheries in the valleys and starting to push everything from bears to snakes into urban areas they normally don't frequent.
Aquafornia news June 18, 2014 New York Times
Arizona Cities Could Face Cutbacks in Water From Colorado River, Officials Say
Arizona could be forced to cut water deliveries to its two largest cities unless states that tap the dwindling Colorado River find ways to reduce water consumption and deal with a crippling drought, officials of the state's canal network said Tuesday.
Feds Aren't Inspecting 4 in 10 Higher-risk Wells
"Four in 10 new oil and gas wells near national forests and fragile watersheds or otherwise identified as higher pollution risks escape federal inspection, unchecked by an agency struggling to keep pace with America's drilling boom, according to an Associated Press review that shows wide state-by-state disparities in safety checks."
Court Rules Against Homeowners in Toxic Water Case
"The Supreme Court ruled Monday that a group of homeowners in North Carolina can't sue a company that contaminated their drinking water decades ago because a state deadline has lapsed, a decision that could prevent thousands of other property owners in similar cases from recovering damages after being exposed to toxic waste."
Portland Water Scare: Water Bottles Sell Out, Restaurants Close
"Facing the largest boil-water order in the region's history, Portlanders emptied stores' supplies of bottled water, chucked potentially contaminated food and braced for a complicated Memorial Day weekend."
Aquafornia news May 27, 2014 U.S. Geological Survey (USGS)
News Release: Climate Change Accelerates Hybridization between Native and Invasive Species of Trout
From the U.S. Geological Survey (USGS):
"Scientists have discovered that the rapid spread of hybridization between a native species and an invasive species of trout in the wild is strongly linked to changes in climate. … The study, published today [May 25] in Nature Climate Change, was based on 30 years of research by scientists with the U.S.
Aquafornia news May 27, 2014 Bureau of Reclamation
News Release: New Grand Coulee Laser Light Show Debuts May 24
From the Bureau of Reclamation:
"The Bureau of Reclamation will begin showing the new laser light show 'One River, Many Voices' May 24 at Grand Coulee Dam [in Washington].
Commentary: Fish Need Trees, Too
From The New York Times, in a commentary by Brendan Jones:
"As a resident of Sitka, in southeast Alaska, I've worked in the local commercial fishing industry on and off for the past 17 years. … This year, though, the fishing fleet in southeast Alaska will work under the shadow of an announcement by the United States Forest Service that it intends to approve the Big Thorne timber sale …"
Read more from The New York Times
Feds Won't Allow Water for Pot Growers
"Delivering a major blow to state-licensed pot growers in Washington state and Colorado, the U.S. Bureau of Reclamation said today [May 20] it will not allow any federally-controlled water to be used on marijuana crops."
Aquafornia news May 12, 2014 Las Vegas Review-Journal
Going to the Lake? Take a Selfie to Prove It
From the Las Vegas Review-Journal:
"Can't get enough of the selfie craze? A Lake Mead scavenger hunt is taking the buoyant activity outdoors."
Read more from the Las Vegas Review-Journal
Aquafornia news May 5, 2014 San Francisco Chronicle
Proposed Mine by Wild Smith River Roils Del Norte County Folks
"The clear, flowing Smith River is a life force in the northern corner of California, where the locals keep a sharp eye out for threats to the pristine water and thriving fish."
Aquafornia news April 25, 2014 Associated Press
Scientists Want to Breed Fish to Be Better Biters
"Prodded by fishermen, the Oregon Hatchery Research Center has agreed to see if it can breed the bite back into hatchery steelhead."
Read more from AP
Aquafornia news April 24, 2014 San Francisco Chronicle
OMG, What is in Your Drinking Water?
"In Portland, Ore., city authorities decided to drain a 38 million-gallon reservoir because someone had been reportedly peeing in it. Portland is not like California; it does not lack water."
Biologists Watching Fish Runs After Deadly Slide
"Fisheries biologist Pete Verhey waded through the cold, clear creek that feeds into the North Fork of the Stillaguamish River, scanning riffles and side channels looking for evidence of fish eggs."
Aquafornia news April 22, 2014 U.S. Geological Survey (USGS)
News Release: New Mexico Streamgage Marks 125 Years of Running Strong
"The first USGS streamgage in the country is turning 125 years old, and the U.S. Geological Survey, along with many partner agencies, is commemorating the event on Tuesday, April 22, with a celebration at the Embudo streamgage near Espanola.


text:
Q: Barometric Sensor Library: Compilation Issues I just got an Intel Galileo development board, and I am trying to get the Adafruit_BMP085_Unified driver working. I noticed that the Adafruit_Sensor source had a reference to the pgmspace.h header file, and there's no support for the avr library on the Galileo yet, but I found a temporary header file to replace that.
Now I am having further compilation errors, and I can't pinpoint the issue. Here's the error I am getting.
Adafruit_BMP085_Unified/Adafruit_BMP085_U.cpp.o:(.rodata._ZTI23Adafruit_BMP085_Unified[_ZTI23Adafruit_BMP085_Unified]+0x8): undefined reference to `typeinfo for Adafruit_Sensor'
collect2: error: ld returned 1 exit status

I'm running this Arduino example under the Galileo development IDE Arduino-1.5.3. I am new to C++, so this is one big learning experience. Any help is appreciated!

A: You also need https://github.com/adafruit/Adafruit_Sensor.
Adafruit_Sensor is the base code, and the library you are using is like plugin, it can't work alone.

redpajama_set_name: RedPajamaStackExchange


text:
\section{Introduction}\label{sec intro}
Let $k$ be a field of characteristic $p$, let $G$ be a finite group and let $b$ be a block idempotent of $kG$. Puig defined a fusion system $\mathcal{F}_{(P,e)}(kGb)$ associated to $kGb$ after choosing a maximal $kGb$-Brauer pair $(P,e)$. Up to category isomorphism, this fusion system does not depend on the choice of $(P,e)$. Puig also proved that $\mathcal{F}_{(P,e)}(kGb)$ is saturated if the $k$-algebra $kC_G(P)e$ is split. It is known that in the non-split case it can happen that the fusion system associated to $kGb$ is not saturated. In fact, the Sylow axiom can fail, while the extension axiom always holds. In the Main Theorem~\ref{thm A} of this paper we establish a precise connection between the fusion systems of related blocks in a Galois extension $L/K$ of fields of characteristic $p$ with Galois group $\Gamma$. More precisely, let $b$ be a block idempotent of $LG$ and $\tilde{b}$ the unique block idempotent of $KG$ with $b\tilde{b}=b$. Moreover, let $(P,e)$ be a maximal $LGb$-Brauer pair and let $\tilde{e}$ be the unique block idempotent of $KC_G(P)$ with $e\tilde{e}=e$. Then $(P,\tilde{e})$ is a maximal $KG\tilde{b}$-Brauer pair and one has an inclusion of the fusion systems
\begin{equation*}
  \mathcal{F}:=\mathcal{F}_{(P,e)}(LGb)\subseteq \mathcal{F}_{(P,\tilde{e})}(KG\tilde{b})=:\tilde{\calF}\,.
\end{equation*}
Theorem~\ref{thm A} states that there exists an element $\sigma\in\mathrm{Aut}_{\tilde{\calF}}(P)$ such that $\tilde{\calF}=\langle\mathcal{F},\sigma\rangle$. As consequences of the nature of $\sigma$ we obtain that $\tilde{\calF}$ is saturated if and only if $\mathcal{F}$ is saturated and $p$ does not divide the index $[\Gamma_b:\Gamma_e]=[K(e):K(b)]$ of the stabilizers of $b$ and $e$ under the Galois action, or equivalently the degree of the field extensions after adjoining the coefficients of $e$ and $b$ to $K$. In the case that $L$ is chosen such that $LC_G(P)e$ is split, this gives a particularly handy criterion for a fusion system of a block $KG\tilde{b}$ in the non-split case to be saturated, see Theorem~\ref{thm C}. The main result allows an alternative easy proof for the known fact that the extension axiom holds also in the non-split case, see Theorem~\ref{thm B}. Finally, the Main Theorem implies that a weak form of Alperin's fusion theorem holds also for arbitrary block fusion systems, see Theorem~\ref{thm D}.

\begin{notation}
We will use the following standard notations without further notice:

\smallskip
For a group $G$ and $x\in G$, we denote by $c_x\colon G\to G$ the conjugation map $g\mapsto xgx^{-1}$. If $k$ is a commutative ring, its $k$-linear extension to the group algebra $kG$ is again denoted by $c_x\colon kG\to kG$. We frequently will use left-exponential notation  $\lexp{x}{(-)}:=c_x$ for these maps. The maps $c_x$, $x\in G$, define an action of $G$ on $kG$ via $k$-algebra homomorphisms.

\smallskip
For $H\le G$, we denote by $[G/H]$ a set of representatives of the cosets $G/H$.

\smallskip
If a group $G$ acts on a set $X$, we usually denote the stabilizer of an element $x\in X$ by $G_x$. Moreover, for $H\le G$, we denote by $X^H$ the set of $H$-fixed points of $X$.
\end{notation}

\section{Brauer pairs}\label{sec Brauer pairs for block algebras}

Throughout this section, $G$ denotes a finite group, $k$ denotes a field of characteristic $p>0$, and $b$ denotes a block idempotent of $kG$, i.e., a primitive idempotent of $Z(kG)$. We recall the definition and properties of Brauer pairs for $kG$ following the treatment in \cite[IV.2]{AKO2011}. We note that the blanket assumption in \cite[IV.2]{AKO2011} that $k$ is algebraically closed is not used in the proofs of any of the statements that we cite from there. Alternatively, see also \cite[Sections 5.9 and 6.3]{Linckelmann2018}.

\bigskip
Recall that, for a $p$-subgroup $P$ of $G$, the {\em Brauer homomorphism} with respect to $P$ is the $k$-linear projection map $\mathrm{Br}_P\colon (kG)^P\to kC_G(P)$, $\sum_{g\in G}\alpha_g g\mapsto \sum_{g\in C_G(P)} \alpha_g g$. This is a surjective $k$-algebra homomorphism which respects $G$-conjugation: $c_x\circ\mathrm{Br}_P=\mathrm{Br}_{\lexp{x}{P}}\circ c_x\colon (kG)^P\to kC_G(\lexp{x}{P})$ for $x\in G$. Thus, $\mathrm{Br}_P(b)$ is an idempotent of $Z(kC_G(P))=(kC_G(P))^{C_G(P)}$. Recall further that a {\em $kG$-Brauer pair} is a pair $(P,e)$ consisting of a $p$-subgroup $P$ of $G$ and a block idempotent $e$ of $kC_G(P)$. If $e$ occurs in the unique decomposition of $\mathrm{Br}_P(b)$ into a sum of primitive idempotents of $Z(kC_G(P))$ (that is, if $\mathrm{Br}_P(b)e=e$), then we call $(P,e)$ a {\em $(kG,b)$-Brauer pair}. We denote by $\mathcal{BP}(kG)$ the set of $kG$-Brauer pairs and by $\mathcal{BP}(kG,b)$ the set of $(kG,b)$-Brauer pairs. Clearly, $\mathcal{BP}(kG)$ is the disjoint union of the subsets $\mathcal{BP}(kG,b)$, where $b$ runs through the block idempotents of $kG$. The set $\mathcal{BP}(kG)$ is a $G$-set under the conjugation action given by $\lexp{x}{(P,e)}:=(\lexp{x}{P},\lexp{x}{e})$, and the subset $\mathcal{BP}(kG,b)$ is $G$-stable. Finally, we say that an idempotent $i$ of $(kG)^P$ is {\em associated} to a $kG$-Brauer pair $(P,e)$ if
\begin{equation*}
  e \mathrm{Br}_P(i) = \mathrm{Br}_P(i)\neq 0\,.
\end{equation*}
Note that if $i$ is primitive in $(kG)^P$ then $e\mathrm{Br}_P(i)\neq 0$ implies that $\mathrm{Br}_P(i)\neq 0$ and that $\mathrm{Br}_P(i)$ is primitive in $kC_G(P)$. Thus, $e\mathrm{Br}_P(i)=\mathrm{Br}_P(i)$.
One writes $(Q,f)\le (P,e)$ if $Q\le P$ and if any primitive idempotent $i$ of $(kG)^P$ which is associated to $(P,e)$ is also associated to $(Q,f)$, see \cite[Definition~2.9]{AKO2011}. This relation has the following properties.

\begin{theorem}(\cite[Theorems~2.10, 2.16]{AKO2011})\label{thm Brauer pairs}
{\rm (a)} Let $(P,e)\in\mathcal{BP}(kG)$ and let $Q\le P$. Then there exists a unique block idempotent $f$ of $kC_G(Q)$ such that $(Q,f)\le (P,e)$.

\smallskip
{\rm (b)} Let $(Q,f)\le(P,e)$ be in $\mathcal{BP}(kG)$ with $Q\trianglelefteq P$. Then $f$ is the unique block idempotent of $kC_G(Q)$ which is $P$-stable and satisfies $Br_P(f)e=e$.

\smallskip
{\rm (c)} The relation $\le$ on $\mathcal{BP}(kG)$ is a partial order which is respected by the conjugation action of $G$.
\end{theorem}

Clearly $(\{1\},b)\in\mathcal{BP}(kG,b)$ and Part~(b) of the above theorem implies that if $(P,e)\in\mathcal{BP}(kG,b)$ then $(\{1\},b)\le(P,e)$. Parts~(a) and (c) further imply that if $(Q,f)\le(P,e)$ holds for elements in $\mathcal{BP}(kG)$ then $(Q,f)\in\mathcal{BP}(kG,b)$ if and only if $(P,e)\in\mathcal{BP}(kG,b)$.

\smallskip
For Brauer pairs $(Q,f), (P,e)\in\mathcal{BP}(kG)$ one writes $(Q,f)\trianglelefteq (P,e)$ if $Q\trianglelefteq P$, $f$ is $P$-stable and $\mathrm{Br}_P(f)e=e$, cf.~\cite[Definition~IV.2.13]{AKO2011}. The following result is well-known to specialists. We state it for convenient future reference and give a proof for the convenience of the reader.

\begin{theorem}\label{thm (Q,f)le(P,e) equivalences}
For $(Q,f),(P,e)\in \mathcal{BP}(kG)$ with $Q\le P$ the following statements are equivalent:

\smallskip
{\rm(i)} One has $(Q,f)\le (P,e)$.

\smallskip
{\rm (ii)} There exist primitive idempotents $i$ of $(kG)^P$ and $j$ of $(kG)^Q$ such that $ij=j=ji$, $\mathrm{Br}_P(i)e\neq 0$ and $\mathrm{Br}_Q(j)f\neq 0$.

\smallskip
{\rm (iii)} There exist Brauer pairs $(Q_i,d_i)\in\mathcal{BP}(kG)$, $i=0,\ldots,n$, such that
\begin{equation*}
  (Q,f)=(Q_0,d_0)\trianglelefteq(Q_1,d_1)\trianglelefteq\cdots\trianglelefteq(Q_n,d_n)=(P,e)\,.
\end{equation*}

\smallskip
{\rm (iv)} For every primitive idempotent $i$ of $(kG)^P$ with $Br_P(i)e\neq 0$ one has $Br_Q(i)f\neq 0$.

\smallskip
{\rm (v)} There exists a primitive idempotent $i$ of $(kG)^P$ such that $\mathrm{Br}_P(i)e\neq 0$ and $\mathrm{Br}_Q(i)f=\mathrm{Br}_Q(i)\neq 0$.

\smallskip
{\rm (vi)} There exists a primitive idempotent $i$ of $(kG)^P$ such that $Br_P(i)e\neq 0$ and $\mathrm{Br}_Q(i)f\neq 0$.
\end{theorem}

\begin{proof}
The equivalences (i)$\iff$(ii)$\iff$(iii) follow from \cite[Proposition IV.2.14]{AKO2011}. Moreover, the implications (i)$\Rightarrow$(iv) and (v)$\Rightarrow$(vi) are trivial and the implication (i)$\Rightarrow$(v) follows from the fact that the image of a primitive idempotent under a surjective $k$-algebra homomorphism is either $0$ or a primitive idempotent.

Next we show that (iv) implies (i). Let $i$ be a primitive idempotent of $(kG)^P$ such that $\mathrm{Br}_P(i)e=\mathrm{Br}_P(i)\neq 0$. By (iv), $\mathrm{Br}_Q(i)f\neq 0$. By Theorem~\ref{thm Brauer pairs}(a) there exists a block idempotent $f'$ of $kC_G(Q)$ such that $(Q,f')\le (P,e)$. Thus, $\mathrm{Br}_Q(i)f'=Br_Q(i)$ which implies that $0\neq \mathrm{Br}_Q(i)f=\mathrm{Br}_Q(i)f'f$ and further that $f=f'$ and thus $(Q,f)\le (P,e)$.

Finally, we show that (vi) implies (i). Let $i$ be as in (vi). By Theorem~\ref{thm Brauer pairs}(a) there exists a block idempotent $f'$ of $kC_G(Q)$ such that $(Q,f')\le (P,e)$. This implies $\mathrm{Br}_Q(i)f'=\mathrm{Br}_Q(i)\neq 0$ and $0\neq\mathrm{Br}_Q(i)f=\mathrm{Br}_Q(i)f'f$. Thus $f=f'$ and $(Q,f)\le(P,e)$.
\end{proof}

\medskip
Recall that if $I\le H\le G$ then we have a well-defined trace map
\begin{equation*}
  \mathrm{Tr}_I^H\colon (kG)^I\to (kG)^H\,, \quad a\mapsto\sum_{x\in[H/I]} \lexp{x}{a}\,.
\end{equation*}
A subgroup $P$ of $G$, minimal with the property that $b\in\mathrm{Tr}_P^G((kG)^P)$, is called a {\em defect group} of the block idempotent $b$ and of the block algebra $kGb$. The defect groups of $kGb$ form a  single $G$-conjugacy class of $p$-subgroups of $G$. Maximal elements in $\mathcal{BP}(kG,b)$ enjoy properties that resemble the Sylow Theorem for finite groups.

\begin{theorem}(\cite[Theorem~2.20]{AKO2011})\label{thm maximal Brauer pairs}
{\rm (a)} The maximal elements in $\mathcal{BP}(kG,b)$ with respect to $\le$ form a single $G$-orbit.

\smallskip
{\rm (b)} For $(P,e)\in \mathcal{BP}(kG,b)$ the following are equivalent.

\smallskip
\quad {\rm (i)} $(P,e)$ is a maximal element in $\mathcal{BP}(kG,b)$.

\smallskip
\quad {\rm (ii)} $P$ is a defect group of $kGb$.

\smallskip
\quad {\rm (iii)} $P$ is maximal among all $p$-subgroups of $G$ with the property $\mathrm{Br}_P(b)\neq 0$.
\end{theorem}

\section{Fusion systems of block algebras}\label{sec fusion systems}

Throughout this section, $p$ is a prime. We first recall the basic notions and properties of fusion systems, a structure introduced by Puig. Our terminology follows \cite[Chapter I]{AKO2011}.

For subgroups $Q$ and $R$ of a finite group $G$ we denote by $\mathrm{Hom}_G(Q,R)$ the set of all group homomorphisms $\varphi\colon Q\to R$ with the property that there exists $x\in G$ with $\varphi(u)=c_x(u)$ for all $u\in Q$. Moreover, we set $\mathrm{Aut}_G(Q):=\mathrm{Hom}_G(Q,Q)$.

\begin{definition}(\cite[Definition~I.2.1]{AKO2011})\label{def fusion system}
Let $P$ be a finite $p$-group. A subcategory $\mathcal{F}$ of the category of finite groups whose objects are the subgroups of $P$ is called a {\em fusion system} over $P$ if for any two subgroups $Q$ and $R$ of $P$, the set $\mathrm{Hom}_\mathcal{F}(Q,R)$ has the following properties:

\smallskip
(i) $\mathrm{Hom}_P(Q,R)\subseteq\mathrm{Hom}_\mathcal{F}(Q,R)$ and every element of $\mathrm{Hom}_{\mathcal{F}}(Q,R)$ is injective.

\smallskip
(ii) For each $\varphi\in\mathrm{Hom}_{\mathcal{F}}(Q,R)$, the group isomorphism $Q\to\varphi(Q)$, $u\mapsto \varphi(u)$, and its inverse are morphisms in $\mathcal{F}$.
\end{definition}

For instance, if $G$ is a finite group and $P$ is a $p$-subgroup of $G$, we obtain a fusion system $\mathcal{F}_P(G)$ over $P$ by setting $\mathrm{Hom}_{\mathcal{F}_P(G)}(Q,R):=\mathrm{Hom}_G(Q,R)$, for all subgroups $Q$ and $R$ of $P$. Note that the intersection of two fusion systems over $P$ is again a fusion system and that a fusion system over $P$ is determined by the isomorphisms it contains. Thus the smallest fusion system over a finite $p$-group $P$ is the fusion system $\mathcal{F}_P(P)$.

\begin{definition}(\cite[Definition~I.2.4]{AKO2011})\label{def fully centralized}
Let $\mathcal{F}$ be a fusion system over a finite $p$-group $P$. A subgroup $Q$ of $P$ is called {\em fully $\mathcal{F}$-centralized} if $|C_P(Q)|\ge|C_P(Q')|$ for any subgroup $Q'$ of $P$ which is $\mathcal{F}$-isomorphic to $Q$. Similarly, $Q$ is called {\em fully $\mathcal{F}$-normalized} if $|N_P(Q)|\ge|N_P(Q')|$ for any subgroup $Q'$ of $P$ which is $\mathcal{F}$-isomorphic to $Q$.
\end{definition}

\begin{definition}(\cite[Definition~I.2.2]{AKO2011})\label{def Nphi}
Let $\mathcal{F}$ be a fusion system on a finite $p$-group $P$ and let $\varphi\colon Q\to R$ be an isomorphism in $\mathcal{F}$. One denotes by $N_\varphi$ the set of all elements $y\in N_P(Q)$ for which there exists $z\in N_P(R)$ with the property $\varphi\circ c_y = c_z\circ\varphi\colon Q\to R$. Note that $QC_P(Q)\le N_\varphi\le N_P(Q)$ and that $N_\varphi$ does not depend on $\mathcal{F}$, but only on $\varphi$ and $P$.
\end{definition}

If $\mathcal{F}$ is a fusion system over a finite $p$-group $P$ and $Q\le P$ then we set $\mathrm{Aut}_\mathcal{F}(Q):=\mathrm{Hom}_{\mathcal{F}}(Q,Q)$, a subgroup of the automorphism group of $Q$. The following definition of saturation goes back to Stancu and is an equivalent reformulation of the original definition, see \cite[Proposition~I.9.3]{AKO2011}.

\begin{definition}\label{def saturated}
A fusion system $\mathcal{F}$ over a $p$-group $P$ is called {\em saturated} if the following two conditions hold.

\smallskip
(i) {\em Sylow axiom:} The group $\mathrm{Aut}_P(P)$ is a Sylow $p$-subgroup of $\mathrm{Aut}_\mathcal{F}(P)$.

\smallskip
(ii) {\em Extension axiom:} For every $Q\le P$ and every $\varphi\in\mathrm{Hom}_{\mathcal{F}}(Q,P)$ such that $\varphi(Q)$ is fully $\mathcal{F}$-normalized there exists a morphism $\psi\in\mathrm{Hom}_\mathcal{F}(N_\varphi,P)$ whose restriction to $Q$ equals $\varphi$.
\end{definition}

For instance, if $P$ is a Sylow $p$-subgroup of a finite group $G$ then the fusion system $\mathcal{F}_P(G)$ is saturated (see \cite[Theorem~2.3]{AKO2011}).

\begin{definition}\label{def block fusion system}
Let $G$ be a finite group, let $k$ be a field of characteristic $p$, let $b$ be a block idempotent of $kG$, and let $(P,e)$ be a maximal $(kG,b)$-Brauer pair. We define a category $\mathcal{F}_{(P,e)}(kGb)$ as follows. First, for every $Q\le P$ denote by $e_Q$ the unique block idempotent of $kC_G(Q)$ with $(Q,e_Q)\le (P,e)$. The objects of $\mathcal{F}_{(P,e)}(kGb)$ are the subgroups of $P$ and for subgroups $Q$ and $R$ of $P$ let $\mathrm{Hom}_{\mathcal{F}_{(P,e)}(kGb)}(Q,R)$ denote the set of group homomorphisms $\varphi\colon Q\to R$ such that there exists $x\in G$ with $\varphi(u)=c_x(u)$ for all $u\in Q$ and $\lexp{x}{(Q,e_Q)}\le(R,e_R)$. Composition in $\mathcal{F}_{(P,e)}(kGb)$ is the usual composition of functions.
\end{definition}

\begin{remark}\label{rem block fusion system}
Let $kG$, $b$, and $(P,e)$ be as in Definition~\ref{def block fusion system}.

\smallskip
(a) It is clear from the definition that $\mathcal{F}_{(P,e)}(kGb)$ is a fusion system over $P$.

\smallskip
(b) If $kGb$ is the principal block of $kG$, then by Brauer's third main theorem, $\mathcal{F}_{(P,e)}(kGb)$ is equal to $\mathcal{F}_P(G)$ and $P$ is a Sylow $p$-subgroup of $G$. Thus, $\mathcal{F}_{(P,e)}(kGb)$ is saturated in this case.

\smallskip
(c) Example~\ref{ex Sylow axiom fails} below shows that in general the Sylow axiom does not hold for $\mathcal{F}_{(P,e)}(kGb)$. But we will show in Theorem~\ref{thm B} that the extension axiom holds for $\mathcal{F}_{(P,e)}(kGb)$.
\end{remark}

The following theorem was first proved by Puig. It follows from Theorem~IV.3.2 and Proposition~IV.3.14 in \cite{AKO2011}. See also \cite[Theorem~8.5.2]{Linckelmann2018} and note that there the terminology is different: Fusion systems in \cite{Linckelmann2018} are defined to be saturated fusion systems in our terminology.

\begin{theorem}\label{thm splitting field implies saturated}
Let $kG$, $b$, and $(P,e)$ be as in Definition~\ref{def block fusion system} and suppose that the $k$-algebra $kC_G(P)e$ is split, i.e., for every simple $kC_G(P)e$-module $V$ one has a $k$-algebra isomorphism $\mathrm{End}_{kC_G(P)e}(V)\cong k$. Then the fusion system $\mathcal{F}_{(P,e)}(kGb)$ is saturated.
\end{theorem}

We are grateful to Radha Kessar who suggested the following example to us.

\begin{example}\label{ex Sylow axiom fails}
Let $p=2$, $k=\mathbb{F}_2$, the field with $2$ elements, and $G:=D_{24}=(C_3\times C_4)\rtimes C_2$, the dihedral group with $24$ elements, with $C_2$ acting by inversion on $C_3\times C_4$. Let $g$ denote a generator of $C_3$. Then $b:=g+g^2$ is a block idempotent of $\mathbb{F}_2 G$ and $(P,e):=(C_4,b)$ is a maximal $(\mathbb{F}_2 G,b)$-Brauer pair. We have $\mathrm{Aut}_P(P)=\{1\}$, since $P$ is abelian and an easy computation shows that $\mathrm{Aut}_{\mathcal{F}_{(P,e)}(\mathbb{F}_2 Gb)}(P)\cong C_2$. Thus, the Sylow axiom does not hold for $\mathcal{F}_{(P,e)}(\mathbb{F}_2 Gb)$ and therefore the fusion system $\mathcal{F}_{(P,e)}(\mathbb{F}_2 Gb)$ is not saturated.
\end{example}

\section{Extension of scalars}\label{sec extension of scalars}

Throughout this section $L/K$ denotes a finite Galois extension of fields of characteristic $p>0$ and $\Gamma$ denotes its Galois group. Moreover, $G$ denotes a finite group.

$\Gamma$ acts via $K$-algebra automorphisms on the group algebra $LG$ and also on $Z(LG)$ by applying $\gamma\in\Gamma$ to the the coefficients of an element in $LG$. Thus, $\Gamma$ permutes the block idempotents of $LG$ and fixes the block idempotents $b$ of $KG$. Since $\mathrm{Br}_P\colon (LG)^P\to LC_G(P)$ commutes with the $\Gamma$-action, Theorem~\ref{thm maximal Brauer pairs} implies that any $\Gamma$-conjugate of $b$ has the same defect groups as $b$. We denote by $\Gamma_b$ the stabilizer of $b$ in $\Gamma$ and set
\begin{equation*}
  \tilde{b}:=\sum_{\gamma\in[\Gamma/\Gamma_b]} \lexp{\gamma}{b}\,.
\end{equation*}
Clearly, $\tilde{b}$ is an idempotent in $(Z(LG))^\Gamma=Z(KG)$. More precisely one has the following:

\begin{proposition}\label{prop Gamma and blocks}
{\rm (a)} Let $b$ be a block idempotent of $LG$. Then $\tilde{b}:=\sum_{\gamma\in[\Gamma/\Gamma_b]} \lexp{\gamma}{b}$ is a block idempotent of $KG$.

\smallskip
{\rm (b)} The map $b\mapsto \tilde{b}$ induces a bijection between the set of $\Gamma$-orbits of block idempotents of $LG$ and the set of block idempotents of $KG$.

\smallskip
{\rm (c)} If $b$ is a block idempotent of $LG$ and $\tilde{b}$ is the block idempotent of $KG$ associated to it as in (a) then $b$ and $\tilde{b}$ have the same defect groups.
\end{proposition}

\begin{proof}
(a) By definition, $\tilde{b}$ is the sum of the distinct $\Gamma$-conjugates of $b$, thus an idempotent of $Z(KG)$. To see that $\tilde{b}$ is primitive in $Z(KG)$, assume that $\tilde{b}=c_1+c_2$ for non-zero orthogonal idempotents $c_1,c_2\in Z(KG)$ and let $I_1$ and $I_2$ denote the set of  primitive idempotents of $Z(LG)$ that occur in a primitive decomposition of $c_1$ and $c_2$ in $Z(LG)$, respectively. Then $I_1$ and $I_2$ are disjoint and $\Gamma$-stable. On the other hand $I_1\cup I_2$ is the single $\Gamma$-orbit of $b$. This is a contradiction.

\smallskip
(b) This is immediate from (a).

\smallskip
(c) Let $P$ be a defect group of $\tilde{b}$. By Theorem~\ref{thm maximal Brauer pairs}, one has $\mathrm{Br}_P(\tilde{b})\neq 0$ in $KC_G(P)\subseteq LC_G(P)$. Thus $0\neq \mathrm{Br}_P(\tilde{b})=\sum_{\gamma\in[\Gamma/\Gamma_b]} \mathrm{Br}_P(\lexp{\gamma}{b})$ implies that some $\Gamma$-conjugate of $b$, and therefore also $b$, has a defect group $Q$ containing $P$. Thus, $0\neq\mathrm{Br}_Q(b)=\mathrm{Br}_Q(b\tilde{b})=\mathrm{Br}_Q(b)\mathrm{Br}_Q(\tilde{b})$, which implies that $\mathrm{Br}_Q(\tilde{b})\neq 0$ and therefore $|Q|\le|P|$. This implies $P=Q$.
\end{proof}

Note that $\Gamma$ acts on $\mathcal{BP}(LG)$ via
\begin{equation}\label{eqn Gamma on BP}
  \lexp{\gamma}{(P,e)}=(P,\lexp{\gamma}{e})\,,
\end{equation}
for $\gamma\in \Gamma$ and $(P,e)\in\mathcal{BP}(LG)$. Note that this action commutes with the $G$-action on $\mathcal{BP}(LG)$ so that we obtain an action of $\Gamma\times G$ on $\mathcal{BP}(LG)$. Moreover, since $\mathrm{Br}_P$ commutes with the action of $\Gamma$ and since the $G$-action on $LG$ commutes with the $\Gamma$-action on $LG$, $\Gamma\times G$ acts via poset isomorphisms on $\mathcal{BP}(LG)$. Thus, if $b$ is a block idempotent of $LG$ and $\gamma\in \Gamma$, the $G$-posets $\mathcal{BP}(LGb)$ and $\mathcal{BP}(LG\lexp{\gamma}{b})$ are isomorphic via (\ref{eqn Gamma on BP}) and $\Gamma_b\times G$ acts via poset automorphisms on $\mathcal{BP}(LGb)$.

\smallskip
In the next proposition we write $\le_K$ and $\le _L$ for the poset structures of $\mathcal{BP}(KG)$ and $\mathcal{BP}(LG)$, respectively. They are related as follows.

\begin{proposition}\label{prop Gamma and le}
For $(Q,f),(P,e)\in\mathcal{BP}(LG)$ with $Q\le P$, the following are equivalent:

\smallskip
{\rm (i)} One has $(Q,\tilde{f})\le_K (P,\tilde{e})$ in $\mathcal{BP}(KG)$.

\smallskip
{\rm (ii)} There exists $\gamma\in\Gamma$ such that $(Q,f)\le_L\lexp{\gamma}(P,e)$ in $\mathcal{BP}(LG)$.
\end{proposition}

\begin{proof}
Assume first that (i) holds and let $i$ be a primitive idempotent of $(KG)^P$ such that $\mathrm{Br}_P(i)\tilde{e}=\mathrm{Br}_P(i)\neq 0$. Then, by definition also $\mathrm{Br}_Q(i)\tilde{f}=\mathrm{Br}_Q(i)\neq 0$. Let $J$ be a primitive decomposition of $i$ in $(LG)^P$. Since $\mathrm{Br}_P(i)\tilde{e}\neq 0$, there exists $j\in J$ such that $\mathrm{Br}_P(j)\tilde{e}\neq 0$. Thus, there exists $\gamma\in\Gamma$ such that $\mathrm{Br}_P(j)\lexp{\gamma}{e}\neq 0$. Since $\mathrm{Br}_P(j)$ is primitive in $LC_G(P)$, we have $\mathrm{Br}_P(j)\lexp{\gamma}{e}=\mathrm{Br}_P(j)$. Let $f'$ be the block idempotent of $LC_G(Q)$ such that $(Q,f')\le_L(P,\lexp{\gamma}{e})=\lexp{\gamma}(P,e)$. Then, by Theorem~\ref{thm (Q,f)le(P,e) equivalences} also $\mathrm{Br}_Q(j)f'=\mathrm{Br}_Q(j)\neq 0$. Thus $\mathrm{Br}_Q(j)f'\tilde{f}=\mathrm{Br}_Q(j)\mathrm{Br}_Q(i)f'\tilde{f} = \mathrm{Br}_Q(j)f' \mathrm{Br}_Q(i)\tilde{f}=\mathrm{Br}_Q(j)\mathrm{Br}_Q(i)=\mathrm{Br}_Q(j)\neq 0$ which implies that $f'\tilde{f}\neq 0$. This implies $f'=\lexp{\delta}{f}$ for some $\delta\in\Gamma$. Thus $\lexp{\delta}(Q,f)\le_L \lexp{\gamma}{(P,e)}$ and (ii) holds after applying $\delta^{-1}$.

\smallskip
Next assume that $\gamma\in\Gamma$ with $(Q,f)\le_L\lexp{\gamma}{(P,e)}$. By Theorem~\ref{thm Brauer pairs}(a) there exists a block idempotent $f_1$ of $LC_G(Q)$ such that $(Q,\tilde{f}_1)\le_K (P,\tilde{e})$. Since we already proved that (i) implies (ii), there exists $\delta\in \Gamma$ such that $(Q,f_1)\le_L\lexp{\delta}(P,e)$. Thus we have $(Q,\lexp{\gamma^{-1}}{f})\le_L (P,e)$ and also $(Q,\lexp{\delta^{-1}}{f})\le_L (P,e)$. The uniqueness part of Theorem~\ref{thm (Q,f)le(P,e) equivalences}(a) now implies that $f$ and $f_1$ are $\Gamma$-conjugate. Thus $\tilde{f}=\tilde{f}_1$ and $(Q,\tilde{f})\le_K(P,\tilde{e})$.
\end{proof}

The following corollaries are now immediate from Proposition~\ref{prop Gamma and le}.

\begin{corollary}\label{cor BP(LG) and BP(KG)}
The map
\begin{equation*}
  \mathcal{BP}(LG)\to \mathcal{BP}(KG)\,,\quad (P,e)\mapsto(P,\tilde{e})\,,
\end{equation*}
is a surjective morphism of $G$-posets, which restricts to a surjective morphism of $G$-posets $\mathcal{BP}(LGb)\to\mathcal{BP}(KG\tilde{b})$ for every block idempotent $b$ of $LG$.
\end{corollary}

\begin{corollary}\label{cor F and Ftilde}
Let $b$ be a block idempotent of $LG$ and let $(P,e)\in\mathcal{BP}(LGb)$ be a maximal $LGb$-Brauer pair. Then $(P,\tilde{e})\in\mathcal{BP}(KG\tilde{b})$ is a maximal $(KG\tilde{b})$-Brauer pair and one obtains an inclusion of fusion systems
\begin{equation*}
  \mathcal{F}_{(P,e)}(LGb)\to \mathcal{F}_{(P,\tilde{e})}(KG\tilde{b})
\end{equation*}
which is the identity on objects and on morphisms.
\end{corollary}

\section{The Main Theorem}\label{sec main theorem}

We keep $p$, $G$, $L/K$, and $\Gamma$ as introduced at the beginning of Section~\ref{sec extension of scalars}.
Moreover we fix a block idempotent $b$ of $LG$ and denote by $\Gamma_b$ the stabilizer of $b$ in $\Gamma$. We fix a maximal $LGb$-Brauer pair $(P,e)\in\mathcal{BP}(LGb)$. For every $Q\le P$, let $e_Q$ denote the unique block idempotent of $LC_G(Q)$ such that $(Q,e_Q)\le (P,e)$ in $\mathcal{BP}(LG)$. By Proposition~\ref{prop Gamma and le}, one has $(Q,\widetilde{e_Q})\le(P,\tilde{e})$ so that $\widetilde{e_Q}=\tilde{e}_Q$. This allows us to use the notation $\tilde{e}_Q$ for both purposes.
Recall that $\Gamma\times G$ acts on $\mathcal{BP}(LG)$  and $\Gamma_b\times G$ acts on $\mathcal{BP}(LGb)$ via poset isomorphisms. Note that for any $(Q,f)\in\mathcal{BP}(LGb)$ one has $\Gamma_{(Q,f)}=\Gamma_f$. For the stabilizer in $G$ of a $KG$-Brauer pair or $LG$-Brauer pair $(Q,f)$ we will write $N_G(Q,f)$.

\bigskip
Let $p_1\colon G\times\Gamma\to G$ and $p_2\colon G\times \Gamma\to \Gamma$ denote the projection maps. For any subgroup $X$ of $G\times \Gamma$, we set $k_1(X):=\{g\in G\mid (g,1)\in X\}$ and $k_2(X):=\{\gamma\in\Gamma\mid (1,\gamma)\in X\}$. As explained in \cite[p.~24]{Bouc2010a}, one has
\begin{equation}\label{eqn q(X)}
  k_1(X)\trianglelefteq p_1(X)\le G \quad\text{and}\quad k_2(X)\trianglelefteq p_2(X)\le \Gamma\quad \text{with}\quad p_1(X)/k_1(X)\cong p_2(X)/k_2(X)
\end{equation}
via $g k_1(X) \leftrightarrow \gamma k_2(X)$ if and only if $(g,\gamma)\in X$.

\smallskip
We denote by $K(b)$ and $K(e)$ the subfields of $L$ obtained by adjoining the coefficients of the block idempotents $b\in LG$ and $e\in LC_G(P)$. Thus, $K(b)$ is the fixed field of $\Gamma_b$ in $L$ and $K(e)$ is the fixed field of $\Gamma_e$ in $L$.

\begin{proposition}\label{prop Goursat invariants}
Let $b$ be a block idempotent of $LG$.

\smallskip
{\rm (a)} For any $(R,e_R)\le (Q,e_Q)$ in $\mathcal{BP}(LGb)$ one has $\Gamma_e=\Gamma_{(P,e)}\le \Gamma_{(Q,e_Q)}\le \Gamma_{(R,e_R)}\le \Gamma_{(\{1\},b)}=\Gamma_b$. In particular, $K(b)\subseteq K(e)$.

\smallskip
{\rm (b)} Let $X:=\mathrm{stab}_{G\times\Gamma}(P,e)$ be the stabilizer of the maximal $LGb$-Brauer pair $(P,e)$. One has
\begin{equation*}
  k_1(X)=N_G(P,e)\,,\quad p_1(X)=N_G(P,\tilde{e})\,,\quad k_2(X)=\Gamma_e\,,\quad\text{and}\quad
  p_2(X)=\Gamma_b\,.
\end{equation*}

\smallskip
{\rm (c)} One has $N_G(P,e)\trianglelefteq N_G(P,\tilde{e})$ and $N_G(P,\tilde{e})/N_G(P,e)\cong \Gamma_b/\Gamma_e$. Moreover, $K(e)/K(b)$ is a Galois extension with cyclic Galois group isomorphic to $N_G(P,\tilde{e})/N_G(P,e)$.
\end{proposition}

\begin{proof}
(a) It suffices to show that $\Gamma_{(Q,e_Q)}\le\Gamma_{(R,e_R)}$. Let $\gamma\in\Gamma_{(Q,e_Q)}$. Then $\lexp{\gamma}{(R,e_R)}\le_L\lexp{\gamma}{(Q,e_Q)}=(Q,\lexp{\gamma}{e_Q})=(Q,e_Q)$. The uniqueness part of Theorem~\ref{thm Brauer pairs}(a) implies that $\lexp{\gamma}{e_R}=e_R$. Thus, $\gamma\in\Gamma_{(R,e_R)}$.

\smallskip
(b) The first equation is clear from the definition of $k_1(X)$. For the proof of the second equation, let $g\in p_1(X)$. Then there exists $\gamma\in\Gamma$ with $(P,e)=\lexp{(g,\gamma)}{(P,e)}=(\lexp{g}{P},\lexp{g\gamma}{e})$. From $\lexp{g\gamma}{e}=e$ it follows that $\lexp{g}{\tilde{e}}=\tilde{e}$. Thus $\lexp{g}(P,\tilde{e})=(P,\tilde{e})$ and $g\in N_G(P,\tilde{e})$. Conversely, if $g\in N_G(P,\tilde{e})$ then $\lexp{g}{\tilde{e}}=\tilde{e}$ which implies that there exists $\gamma\in\Gamma$ with $\lexp{g}{e}=\lexp{\gamma}{e}$. Thus, $\lexp{(g,\gamma^{-1})}{(P,e)} =(P,e)$ and $g\in p_1(X)$. The third equation follows immediately from the definition of $k_2(X)$.  For the proof of the fourth equation let $\gamma\in p_2(X)$. Then there exists $g\in G$ with $\lexp{(g,\gamma)}{(P,e)}=(P,e)$. Since $(\{1\},b)\le (P,e)$, this implies $\lexp{(g,\gamma)}{(\{1\},b)}\le\lexp{(g,\gamma)}{(P,e)}=(P,e)$. The uniqueness part in Theorem~\ref{thm Brauer pairs}(a) implies that $\lexp{(g,\gamma)}{(\{1\},b)}=(1,b)$ and that $\gamma\in\Gamma_b$. Conversely, assume that $\gamma\in \Gamma_b$. Then $(\{1\},b)\le (P,e)$ implies $(\{1\},b)=\lexp{(1,\gamma)}{(\{1\},b)}\le\lexp{(1,\gamma)}{(P,e)}=(P,\lexp{\gamma}{e})$. This implies that both $(P,e)$ and $\lexp{\gamma}{(P,e)}$ are maximal $LGb$-Brauer pairs. By Theorem~\ref{thm maximal Brauer pairs}(a), there exists $g\in G$ such that $\lexp{g}{(P,\lexp{\gamma}{e})}=(P,e)$. Thus $(g,\gamma)\in X$ and $\gamma\in p_2(X)$.

\smallskip
(c) The assertions of the first sentence follow from Part~(b) and (\ref{eqn q(X)}). For the second statement it suffices to show that $\Gamma_b/\Gamma_e$ is cyclic. Note that the coefficients of $e\in LC_G(P)$ generate a finite field extension of the prime field $\mathbb{F}_p$ in $L$, which we denote by $\mathbb{F}_p(e)$. Since $\Gamma_e\trianglelefteq\Gamma_b$, we have a Galois extension $K(e)/K(b)$ with Galois group $\Delta\cong \Gamma_b/\Gamma_e$. Now, restriction from $K(e)$ to $\mathbb{F}_p(e)$ is an injective group homomorphism from $\Delta$ to the cyclic Galois group $\mathrm{Gal}(\mathbb{F}_p(e)/\mathbb{F}_p)$. In fact, if $\delta\in\Delta$ restricts to the identity on $\mathbb{F}_p(e)$, then it is the identity on $\mathbb{F}_p(e)$ and on $K$, thus on $K(e)$. This completes the proof of Part~(c).
\end{proof}

Next we give a more precise picture of the inclusion of fusion systems from Corollary~\ref{cor F and Ftilde}. In the following theorem the term $\langle \mathcal{F},\sigma\rangle$ denotes the fusion system {\em generated} by $\mathcal{F}$ and $\sigma$, i.e., the intersection of all fusion systems over $P$ that contain $\mathcal{F}$ and $\sigma$.

\begin{theorem}\label{thm A}
Let $L/K$ be a finite Galois extension of fields of characteristic $p>0$ with Galois group $\Gamma$, let $b$ be a block idempotent of $LG$, and let $(P,e)$ be a maximal $LGb$-Brauer pair. Set $\mathcal{F}:=\mathcal{F}_{(P,e)}(LGb)$ and $\tilde{\calF}:=\mathcal{F}_{(P,\tilde{e})}(KG\tilde{b})$. Let $g_0\in N_G(P,e)$ be such that $g_0N_G(P,\tilde{e})$ generates $N_G(P,e)/N_G(P,\tilde{e})$ (see Proposition~\ref{prop Goursat invariants}(c)) and set $\sigma:=c_{g_0}\in\mathrm{Aut}(P)$. Then $\tilde{\calF}=\langle \mathcal{F}, \sigma \rangle$.

More precisely, $\sigma\in\mathrm{Aut}_{\tilde{\calF}}(P)$ and, for any subgroups $Q$ and $R$ of $P$ and any $\varphi\in\mathrm{Hom}_{\tilde{\calF}}(Q,R)$, there exist $i\in\mathbb{Z}$, $\psi\in\mathrm{Hom}_{\mathcal{F}}(Q,\sigma^{-i}(R))$ and $\psi'\in\mathrm{Hom}_{\mathcal{F}}(\sigma^i(Q),R)$ with $\varphi=\sigma^i|_{\sigma^{-i}(R)}\circ \psi=\psi'\circ\sigma^i|_Q$.
\end{theorem}

\begin{proof}
Since $g_0\in N_G(P,\tilde{e})$, we have $\sigma=c_{g_0}\in\mathrm{Aut}_{\tilde{\calF}}(P)$. It follows that $\langle \mathcal{F},\sigma\rangle\subseteq \tilde{\calF}$. In order to prove the reverse inclusion, let $Q$ and $R$ be subgroups of $P$ and let $\varphi\in\mathrm{Hom}_{\tilde{\calF}}(Q,R)$. Then there exists $g\in G$ such that $\varphi=c_g\colon Q\to R$ and $\lexp{g}{(Q,\tilde{e}_Q)}\le_K (R,\tilde{e}_R)$. By Proposition~\ref{prop Gamma and le} there exists $\gamma\in\Gamma$ such that $\lexp{g}{(Q,e_Q)}\le_L (R,\lexp{\gamma}{e_R})$. Since $(\{1\},b)=\lexp{g}{(\{1\},b)} \le_L \lexp{g}{(Q,e_Q)}\le_L(R,\lexp{\gamma}{e_R})$ and also $(\{1\},\lexp{\gamma}{b})\le_L(R,\lexp{\gamma}{e_R})$, Theorem~\ref{thm Brauer pairs}(a) implies $(\{1\},b)=(\{1\},\lexp{\gamma}{b})$ so that $\gamma\in\Gamma_b$. Thus, both $(P,e)$ and $(P,\lexp{\gamma}{e})$ are maximal $LGb$-Brauer pairs. Theorem~\ref{thm maximal Brauer pairs}(a) implies that there exists $h\in G$ such that $\lexp{h}{(P,e)}=(P,\lexp{\gamma}{e})$ and we obtain $(P,e)=\lexp{h^{-1}}{(P,\lexp{\gamma}{e})}\ge_L \lexp{h^{-1}}{(R,\lexp{\gamma}{e_R})} = (\lexp{h^{-1}}{R},\lexp{h^{-1}\gamma}{e_R})$. Again, Theorem~\ref{thm Brauer pairs}(a) implies that $\lexp{h^{-1}\gamma}{e_R}=e_{h^{-1}Rh}$ and therefore $\lexp{h^{-1}g}{(Q,e_Q)}\le_L\lexp{h^{-1}}{(R,\lexp{\gamma}{e_R})} = (\lexp{h^{-1}}{R},e_{h^{-1}Rh})$. This in turn implies that the homomorphism $\alpha:= c_{h^{-1}g}\colon Q\to \lexp{h^{-1}}{R}$ belongs to $\mathrm{Hom}_{\mathcal{F}}(Q,\lexp{h^{-1}}{R})$ and that the homomorphism $\varphi=c_g\colon Q\to R$ factors as
\begin{equation}\label{eqn phi factorization}
  \varphi=c_h\circ \alpha\colon Q\to \lexp{h^{-1}}{R}\to R\,.
\end{equation}
Since $\lexp{h}{(P,e)}=(P,\lexp{\gamma}{e})$, we obtain $h\in N_G(P,\tilde{e})$ and can write $h=g_0^ix$ for some $i\in\mathbb{Z}$ and $x\in N_G(P,e)$. This implies that the map $c_h\colon P\to P$ factors as $c_h=\sigma^i\circ\beta\colon P\to P$ where $\sigma^i=c_{g_0^i}\colon P\to P$ and $\beta:=c_x\in \mathrm{Aut}_\mathcal{F}(P)$, since $x\in N_G(P,e)$. Restriction to $\lexp{h^{-1}}{R}$ yields the factorization
\begin{equation*}
  c_h|_{h^{-1}Rh} = \sigma^i|_{\beta(h^{-1}Rh)}\circ \beta|_{h^{-1}Rh}\colon \lexp{h^{-1}}{R} \to \beta(\lexp{h^{-1}}{R})\to R
\end{equation*}
with $\beta(\lexp{h^{-1}}{R})=\sigma^{-i}(R)$ and $\beta|_{h^{-1}Rh}\in\mathrm{Hom}_{\mathcal{F}}(\lexp{h^{-1}}{R}, R)$. Setting $\psi:=\beta|_{h^{-1}Rh}\circ\alpha\colon Q\to \sigma^{-1}(R)$ and using (\ref{eqn phi factorization}) we obtain the desired factorization of $\varphi$. This also implies the inclusion $\tilde{\calF}\subseteq\langle \mathcal{F},\sigma\rangle$.

\smallskip
In order to find $\psi'$ with the desired property we use the elements $g$, $h$, $x$, and $i$ from the first part of the proof and  note that
\begin{equation*}
  (P,e) = \lexp{\gamma^{-1}h}({P,e)}\ge_L \lexp{\gamma^{-1}}{(\lexp{h}{Q},\lexp{h}{e_Q})} = (\lexp{h}{Q},\lexp{\gamma^{-1}h}{e_Q})\,,
\end{equation*}
which implies that $\lexp{\gamma^{-1}h}{e_Q}=e_{hQh^{-1}}$. Thus,
\begin{equation*}
  \lexp{gh^{-1}}{(\lexp{h}{Q},e_{hQh^{-1}})} = \lexp{gh^{-1}}{(\lexp{h}{Q},\lexp{\gamma^{-1}h}{e_Q})} = (\lexp{g}{Q},\lexp{g\gamma^{-1}}{e_Q}) \le_L(R,e_R)\,,
\end{equation*}
which implies that $\alpha':=c_{gh^{-1}}\colon \lexp{h}{Q}\to R$ belongs to $\mathrm{Hom}_\mathcal{F}(\lexp{h}{Q},R)$. Thus, $\varphi$ can be factored as
\begin{equation}\label{eqn phi factorization 2}
  \varphi= c_g=c_{gh^{-1}}\circ c_h=\alpha'\circ c_h\colon Q\to \lexp{h}{Q}\to R\,.
\end{equation}
We can rewrite $h=g_0^ix=x'g_0^i$ for some $x'\in N_G(P,e)$ and obtain an element $\beta'\in\mathrm{Aut}_{\mathcal{F}}(P)$ together with a factorization $c_h=\beta'\circ \sigma^i\colon P\to P$. Restricting this equation to $Q$ yields a factorization
\begin{equation*}
  c_h= \beta'|_{\sigma^i(Q)}\circ \sigma^i|_Q\colon Q\to \sigma^i(Q)\to \lexp{h}{Q}\,.
\end{equation*}
Setting $\psi':=\alpha'\circ\beta'|_{\sigma^i(Q)}\in\mathrm{Hom}_{\mathcal{F}}(\sigma^i(Q),R)$, the factorization in (\ref{eqn phi factorization 2}) can now be expressed as $\varphi = \psi'\circ\sigma^i|_Q$ as claimed.
\end{proof}

\section{Consequences of the Main Theorem}\label{consequences}

In this section we prove several consequences of Theorem~\ref{thm A}.

Recall that if $\mathcal{F}$ is a fusion system over a $p$-group $P$, a subgroup $Q$ of $P$ is called {$\mathcal{F}$-centric} if $C_P(R)=Z(R)$ for all subgroups $R$ of $P$ which are $\mathcal{F}$-isomorphic to $Q$.

\begin{proposition}\label{prop calF calFtilde centralized}
Let $L/K$, $b$, $(P,e)$ and $\mathcal{F}\subseteq\tilde{\calF}$ be as in Theorem~\ref{thm A}.

\smallskip
{\rm (a)} A subgroup $Q$ of $P$ is fully $\mathcal{F}$-centralized if and only if it is fully $\tilde{\calF}$-centralized.

\smallskip
{\rm (b)} A subgroup $Q$ of $P$ is fully $\mathcal{F}$-normalized if and only if it is fully $\tilde{\calF}$-normalized.

\smallskip
{\rm (c)} A subgroup $Q$ of $P$ is $\mathcal{F}$-centric if and only it is $\tilde{\calF}$-centric.
\end{proposition}

\begin{proof}
The \lq if\rq-parts follow immediately from the fact that the $\mathcal{F}$-isomorphism class of $Q$ is a subset of the $\tilde{\calF}$-isomorphism class of $Q$. For the forward implications note that by Theorem~\ref{thm A} two subgroups $Q$ and $Q'$ of $P$ are $\tilde{\calF}$-isomorphic if and only if there exists a subgroup $Q''$ of $P$ such that $Q$ is $\mathcal{F}$-isomorphic to $Q''$ and $Q'=\sigma^i(Q'')$ for some $i\in \mathbb{Z}$. Moreover, $\sigma^i(C_P(Q''))=C_P(\sigma^i(Q''))$, $\sigma^i(N_P(Q''))=N_P(\sigma^i(Q''))$, and $\sigma^i(Z(Q''))=Z(\sigma^i(Q''))$, since $\sigma^i$ is an automorphism of $P$. The result is now immediate.
\end{proof}

The following Theorem is known to experts. See for instance the part of the proof of \cite[Theorem~8.5.2]{Linckelmann2018} dealing with the extension axiom and note that it does not use any assumptions on the field of coefficients $k$. Below is a proof with a different approach, using Theorem~\ref{thm A}.

\begin{theorem}\label{thm B}
Let $k$ be a field of characteristic $p>0$ and let $c$ be a block idempotent of $kG$. Then the extension axiom holds for the fusion system of $kGc$, for any choice of maximal Brauer pair.
\end{theorem}

\begin{proof}
Let $(P,f)$ be a maximal $kGc$-Brauer pair. We apply Theorem~\ref{thm A} with $K=k$, a splitting field $L$ of $KC_G(P)f$ such that $L/K$ is a finite Galois extension with Galois group $\Gamma$, and to a block idempotent $b$ of $LG$ with $cb\neq 0$. Then $c=\tilde{b}$. Moreover, there exists a maximal $LGb$-Brauer pair $(P,e)$ such that $ef=e$ and therefore $f=\tilde{e}$. We aim to show that the fusion system $\tilde{\calF}=\mathcal{F}_{(P,\tilde{e})}(KG\tilde{b})$ satisfies the extension axiom. Note that by Theorem~\ref{thm splitting field implies saturated}, the extension axoim holds for $\mathcal{F}=\mathcal{F}_{(P,e)}(LGb)$, since $L$ is a splitting field of $LC_G(P)e$. Let $\varphi\in\mathrm{Hom}_{\tilde{\calF}}(Q,P)$ be such that $\varphi(Q)$ is fully $\tilde{\calF}$-normalized. By Theorem~\ref{thm A} we can factorize $\varphi=\sigma^i\circ \psi$ for some $\psi\in \mathrm{Hom}_{\mathcal{F}}(Q,P)$.
With $\varphi(Q)$ also $\psi(Q)=\sigma^{-i}(\varphi(Q))$ is fully $\tilde{\calF}$-normalized, since they are $\tilde{\calF}$-isomorphic and $N_P(\psi(Q))=\sigma^{-i}(N_P(\varphi(Q)))$. By Proposition~\ref{prop calF calFtilde centralized}(b), $\psi(Q)$ is fully $\mathcal{F}$-normalized. Since $\mathcal{F}$ satisfies the extension axiom, there exists $\hat{\psi}\in\mathrm{Hom}_{\mathcal{F}}(N_\psi,P)$ such that $\hat{\psi}|_Q=\psi$. It follows that $\hat{\varphi}:=\sigma^i\circ \hat{\psi}\in\mathrm{Hom}_{\tilde{\calF}}(N_\psi,P)$ extends $\varphi$. To finish the proof it suffices to show that $N_\varphi\subseteq N_\psi$. So let $x\in N_\varphi$. Then $x\in N_P(Q)$ and there exists $y\in N_P(\varphi(Q))$ with $ \varphi\circ c_x=c_y\circ\varphi\colon Q\buildrel\sim\over\to \varphi(Q)$. But this implies
\begin{equation*}
  \psi\circ c_x = \sigma^{-i}\circ \varphi\circ c_x = \sigma^{-i}\circ c_y\circ \varphi = c_{\sigma^{-i}(y)}\circ \sigma^{-i}\circ \varphi = c_{\sigma^{-i}(y)}\circ\psi\,,
\end{equation*}
with $\sigma^{-i}(y)\in \sigma^{-i}(N_P(\varphi(Q)))=N_P(\sigma^{-i}(\varphi(Q)))= N_P(\psi(Q))$. Thus, $N_\varphi\subseteq N_\psi$ and the proof is complete.
\end{proof}

\begin{theorem}\label{thm C}
Let $L/K$, $b$, $(P,e)$ and $\mathcal{F}\subseteq\tilde{\calF}$ be as in Theorem~\ref{thm A}. The fusion system $\tilde{\calF}$ is saturated if and only if the fusion system $\mathcal{F}$ is saturated and $p$ does not divide $[N_G(P,\tilde{e}):N_G(P,e)]=[\Gamma_b:\Gamma_e]=[K(e):K(b)]$. In particular, if moreover $L$ is a splitting field for $LC_G(P)e$, then $\tilde{\calF}$ is saturated if and only if $p$ does not divide $[N_G(P,\tilde{e}):N_G(P,e)]=[\Gamma_b:\Gamma_e]=[K(e):K(b)]$.
\end{theorem}

\begin{proof}
Note that the map $N_G(P,e)\to\mathrm{Aut}_{\mathcal{F}}(P)$, $g\mapsto c_g$ induces an isomorphism $N_G(P,e)/C_G(P)\to \mathrm{Aut}_{\mathcal{F}}(P)$ which maps $PC_G(P)/C_G(P)$ to $\mathrm{Aut}_P(P)$. Thus, the Sylow axiom holds for $\mathcal{F}$ if and only if $p\nmid[N_G(P,e):PC_G(P)]$. Similarly, the Sylow axiom holds for $\tilde{\calF}$ if and only if $p\nmid[N_G(P,\tilde{e}):PC_G(P)]$.
By Theorem~\ref{thm B} it suffices to show that the Sylow axiom holds for $\tilde{\calF}$ if and only it holds for $\mathcal{F}$ and $p\nmid[\Gamma_b:\Gamma_e]$. But, by Proposition~\ref{prop Goursat invariants}(c), one has $[\Gamma_b:\Gamma_e]=[N_G(P,\tilde{e}):N_G(P,e)]=[K(e):K(b)]$ which implies the result.
\end{proof}

Next we will show that a weak form of Alperin's fusion theorem holds for arbitrary block fusion systems.

\begin{definition}
Let $\mathcal{F}$ be a fusion system over a $p$-group $P$.
We say that {\em Alperin's weak fusion theorem holds for $\mathcal{F}$} if $\mathcal{F}=\langle \mathrm{Aut}_\mathcal{F}(Q)\mid Q\in\mathcal{C}\rangle$, where $\mathcal{C}$ is the set  of subgroups of $P$ which are $\mathcal{F}$-centric and fully $\mathcal{F}$-normalized.
\end{definition}

\begin{theorem}\label{thm D}
Let $k$ be a field of characteristic $p$ and let $c$ be a block idempotent of $kG$. Then Alperin's weak fusion theorem holds for the fusion system of $kGc$, for any choice of maximal $kGc$-Brauer pair.
\end{theorem}

\begin{proof}
Set $K:=k$ and choose $L$, $b$, $(P,e)$ as in the proof of Theorem~\ref{thm B} with $c=\tilde{b}$ and apply Theorem~\ref{thm A} to this situation with $\mathcal{F}:=\mathcal{F}_{(P,e)}(LGb)$ and $\tilde{\calF}:=\mathcal{F}_{(P,\tilde{e})}(KG\tilde{b})$. We need to show that Alperin's weak fusion theorem holds for $\tilde{\calF}$. Since $\mathcal{F}$ is saturated, Alperin's weak fusion theorem holds for $\mathcal{F}$, see for instance \cite[Theorem~8.2.8]{Linckelmann2018}. Thus, $\mathcal{F}=\langle \mathrm{Aut}_\mathcal{F}(Q)\mid Q\in\mathcal{C}\rangle$, where $\mathcal{C}$ denotes the set of subgroups of $P$ which are $\mathcal{F}$-centric and fully $\mathcal{F}$-normalized. Moreover, by Proposition~\ref{prop calF calFtilde centralized}, $\mathcal{C}$ is equal to the set $\tilde{\calC}$ of subgroups of $P$ which are $\tilde{\calF}$-centric and fully $\tilde{\calF}$-normalized. Thus, by Theorem~\ref{thm A}, we have
\begin{equation*}
  \tilde{\calF}=\langle \mathcal{F},\sigma\rangle = \langle\{\mathrm{Aut}_\mathcal{F}(Q)\mid Q\in\mathcal{C}\}\cup\{\sigma\}\rangle \subseteq \langle \mathrm{Aut}_{\tilde{\calF}}(Q)\mid Q\in\mathcal{C}\rangle \subseteq \tilde{\calF}\,.
\end{equation*}
But this implies $\tilde{\calF}=\langle \mathrm{Aut}_{\tilde{\calF}}(Q)\mid Q\in\mathcal{C}\rangle=\langle \mathrm{Aut}_{\tilde{\calF}}(Q)\mid Q\in\tilde{\calC}\rangle$, which  means that Alperin's weak fusion theorem holds for $\tilde{\calF}$.
\end{proof}

redpajama_set_name: RedPajamaArXiv


Compute LCMV beamformer solutions on an evoked dataset for three different choices of source orientation and store the solutions in stc files for visualisation.
Setting small MEG eigenvalues to zero.
Not doing PCA for MEG.


text:
St Ignatius of Loyola Catholic College will be a Catholic co-educational secondary school in the Jesuit tradition located in Burtt's Rd, Drury, Auckland, New Zealand. The school's's proprietor is the Catholic Bishop of Auckland and it be will be a State-integrated school. It is anticipated that this new college will open in 2024 with 340 students, growing progressively to 900 by 2028. The establishment of the school is the fruition of the long held dreams of building a school in the Jesuit tradition in service of the South Auckland community.

Part of the funding for the establishment of the school came from the Harold Plumley Endowment.

The  first principal of the college, Mr Dean Wearmouth, was appointed in 2022. The planting of the campus commenced.

References

Catholic secondary schools in Auckland
Christianity in Auckland
History of Auckland
Jesuit secondary schools in New Zealand

redpajama_set_name: RedPajamaWikipedia


Giving Back Pays is an E-Recycling Program from Tetchy Tech Benefiting the Community!
Helping People and the Planet, Together.
A better Apple & Android Recycling concept can help create a better world.
Through the Tetchy Tech 'Give Back' Program, we give to multiple organizations — each helping people or the planet in a much needed way. Every time you sell or give back any device, you can contribute to a cause.
There are two ways to participate in this program.
When you sell your device on Tetchy Tech, you can elect to have us contribute the full value of a device to a participating organization of your choice – simply by selecting the "Give Back" option and following this path. Not some of the amount, but all of it! Every penny goes to the organization participating in the program.
Alternatively, if you decide to pay yourself instead of an organization by following the "Get Paid" option, Tetchy Tech pledges to contribute 5% of all of the money paid out to consumers that elect to pay themselves for their devices to a 'Give Back Fund' – which will be distributed to all 'Give Back' Program participants. This doesn't reduce the amount of your offer or payout – but is part of Tetchy Tech's commitment to the support the community that supports us all.
Tetchy Tech is committed to changing the way we all think about selling, reusing, and recycling old and unwanted devices. And we know that we need your help. If we are successful, it will be because of you. It will be because you believe in our story and give us the chance to prove that we can provide a great experience and make the World a better place at the same time.
We are calling this movement "Socially Responsible Recycling" – in an effort to squash the common misunderstanding that a company cannot be both profitable and give back to the community at the same time. We invite you to join us – and be a part of the revolution.
If you need have a question or need assistance, please contact us using this form – or you can leave us a message on Olark (the green 'mail' floating icon that appears on the right). We WILL get back to you. We are NOT able to accept telephone calls at our processing facilities. The BEST way to reach us is using either of these methods! WE WILL CONTACT WITH THE INFORMATION YOU PROVIDE. We typically respond within 24 hours (or sooner).


text:
Q: ErrorColumn value does not exist as Lineage ID During the insert into a destination table, any error that occurs is redirected to Errors table where we can see the ErrorCode and ErrorColumn. The problem is that we got a value in ErrorColumn which does not exist anywhere within the package. Namely, there is not a single column that has LineageID that is equal to ErrorColumn.
Later, while enabling NULL entry in every single column, one by one, I found which column caused the problem. When I analyzed the column inside of a Data Flow task it did not have the LineageID that was reported in an ErrorColumn. For example, the ErrorColumn reported was 413, but LineageID is 84 during the first merge, and it changes during various sortings. Regardless of that, it never becomes 413. This ErrorColumn ID (413) does not exist at all yet it is reported during the error redirection insert into destination source (Error table).
I've checked many sites, but they all suggested enumerating through ComponenteMetaData.InputCollection or ComponentMetaData.OutputCollection in a script task, and then enumerating through columns in order to find LineageID, but it was without any success.
As I said, I've solved the problem, but as we are in the early stage of ETL process, this might happen in some other cases. How can this problem be tackled?

A: I'm copying my answer so we can get an authoritative Q&A on the site
What is the simple way to find the column name from Lineageid in SSIS
I remember saying this can't be that hard, I can write some script in the error redirect to lookup the column name from the input collection.
string badColumn = this.ComponentMetaData.InputCollection[Row.ErrorColumn].Name;
What I learned was the failing column isn't in that collection. Well, it is but the ErrorColumn reported is not quite what I needed.  I couldn't find that package but here's an example of why I couldn't get what I needed. Hopefully you will have better luck.
This is a simple data flow that will generate an error once it hits the derived column due to division by zero. The Derived column generates a new output column (LookAtMe) as the result of the division. The data viewer on the Error Output tells me the failing column is 73. Using the above script logic, if I attempted to access column 73 in the input collection, it's going to fail because that is not in the collection. LineageID 73 is LookAtMe and LookAtMe is not in my error branch, it's only in the non-error branch.

This is a copy of my XML and you can see, yes, the outputColumn id 73 is LookAtme.
<outputColumn id="73" name="LookAtMe" description="" lineageId="73" precision="0" scale="0" length="0" dataType="i4" codePage="0" sortKeyPosition="0" comparisonFlags="0" specialFlags="0" errorOrTruncationOperation="Computation" errorRowDisposition="RedirectRow" truncationRowDisposition="RedirectRow" externalMetadataColumnId="0" mappedColumnId="0"><properties>

I really wanted that data though and I'm clever so I can union all my results back together and then conditional split it back out to get that. The problem is, Union All is an asynchronous transformation. Async transformations result in the data being copied from one set of butters to another resulting in...new lineage ids being assigned so even with a union all bringing the two streams back together, you wouldn't be able to call up the data flow chain to find that original lineage id because it's in a different buffer.
Around this point, I conceded defeat and decided I could live without intelligent/helpful error reporting in my packages.
2012
The 2012 release of SSIS changed how they used LineageID to keep columns in sync. Instead of components mapping a number from a source to sink, they went with a textual representation of the element. The XML referenced above would now look like
 <outputColumn
 refId="Package\DFT Generate Errors\DER Divide by SomeNumber.Outputs[Derived Column Output].Columns[LookAtMe]"
 dataType="i4"
 errorOrTruncationOperation="Computation"
 errorRowDisposition="RedirectRow"
 lineageId="Package\DFT Generate Errors\DER Divide by SomeNumber.Outputs[Derived Column Output].Columns[LookAtMe]"
 name="LookAtMe"
 truncationRowDisposition="FailComponent">

If you look at the ErrorColumn now, they don't even reference the textual lineageid. Instead, they reference column 6. If I search through the source XML, I'm not going to find a reference to Column 6 anywhere. It must be some run-time magic.

The net result unfortunately is the same - you cannot access the error column because it's being created in this component because it only exists in the Output columns collection. It isn't available in the Error Columns collection.

A: I realize this is a late answer, but I'm new to the SSIS game.  I have created a solution that

*

*Works at package runtime (not pre-populating)

*Is automated through a Script Task and Component

*Doesn't involve installing new assemblies or custom components

*Is nicely BIML compatible

Check out the full solution here.
EDIT
Here is the short version.

*

*Create 2 Object variables, execsObj and lineageIds

*Create Script Task in Control flow, give it ReadWrite access to both variables

*Insert the following code into your Script Task

Dictionary<int, string> lineageIds = null;

public void Main()
{
    // Grab the executables so we have to something to iterate over, and initialize our lineageIDs list
    // Why the executables?  Well, SSIS won't let us store a reference to the Package itself...
    Dts.Variables["User::execsObj"].Value = ((Package)Dts.Variables["User::execsObj"].Parent).Executables;
    Dts.Variables["User::lineageIds"].Value = new Dictionary<int, string>();
    lineageIds = (Dictionary<int, string>)Dts.Variables["User::lineageIds"].Value;
    Executables execs = (Executables)Dts.Variables["User::execsObj"].Value;

    ReadExecutables(execs);

    Dts.TaskResult = (int)ScriptResults.Success;
}

private void ReadExecutables(Executables executables)
{
    foreach (Executable pkgExecutable in executables)
    {
        if (object.ReferenceEquals(pkgExecutable.GetType(), typeof(Microsoft.SqlServer.Dts.Runtime.TaskHost)))
        {
            TaskHost pkgExecTaskHost = (TaskHost)pkgExecutable;
            if (pkgExecTaskHost.CreationName.StartsWith("SSIS.Pipeline"))
            {
                ProcessDataFlowTask(pkgExecTaskHost);
            }
        }
        else if (object.ReferenceEquals(pkgExecutable.GetType(), typeof(Microsoft.SqlServer.Dts.Runtime.ForEachLoop)))
        {
            // Recurse into FELCs
            ReadExecutables(((ForEachLoop)pkgExecutable).Executables);
        }
    }
}

private void ProcessDataFlowTask(TaskHost currentDataFlowTask)
{
    MainPipe currentDataFlow = (MainPipe)currentDataFlowTask.InnerObject;
    foreach (IDTSComponentMetaData100 currentComponent in currentDataFlow.ComponentMetaDataCollection)
    {
        // Get the inputs in the component.
        foreach (IDTSInput100 currentInput in currentComponent.InputCollection)
            foreach (IDTSInputColumn100 currentInputColumn in currentInput.InputColumnCollection)
                lineageIds.Add(currentInputColumn.ID, currentInputColumn.Name);

        // Get the outputs in the component.
        foreach (IDTSOutput100 currentOutput in currentComponent.OutputCollection)
            foreach (IDTSOutputColumn100 currentoutputColumn in currentOutput.OutputColumnCollection)
                lineageIds.Add(currentoutputColumn.ID, currentoutputColumn.Name);
    }
}

4. Create Script Component in Dataflow with ReadOnly access to lineageIds and the following code.
public override void Input0_ProcessInputRow(Input0Buffer Row)
  {
      Dictionary<int, string> lineageIds = (Dictionary<int, string>)Variables.lineageIds;

      int? colNum = Row.ErrorColumn;
      if (colNum.HasValue && (lineageIds != null))
      {
          if (lineageIds.ContainsKey(colNum.Value))
              Row.ErrorColumnName = lineageIds[colNum.Value];

          else
              Row.ErrorColumnName = "Row error";
      }
      Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);
  }

A: Right click on CSV component (and many other components) and select "show advanced editor". Go to the last tab, "input and output properties"
On this screen look in the tree menu for you output columns (NOT(!) external columns). These have the lineage id in the "common properties"
There is a lot of jabber that this is hard to find, impossible to find without re-writting the code of visual studio itself and what not but i just checked this on both 2010 and 2012 on different systems and it isnt any harder then what i just described.


A 2 day bolt on to our Single Pitch Lead Climbing Course aimed at getting your head around multi pitch lead climbing on the sharp end of the rope. This climbing course is a real treat and a true opportunity to put your skills to the test and walk away with some excellent lead climbing skills.
The course dates on offer are always scheduled to start the day aftewr the 3 day Single Pitch course finishes, for those who want to progress onto multi-pitch climbing immediately.
We will be exploring all aspects of climbing, tailored to suit your needs depending on your experience. With a low ratio of 1:2 we can ensure that we have sufficient time to have an in depth approach to learning. You will leave with a broad range of skills allowing you to get climbing independently after the course. With this course, you must have 'the need to lead'.
You must either be a competent lead climber or have attended our 3 day Learn to Lead Climb (single pitch) course.
Clients attending this course would be expected to bring their own rock shoes, all other equipment can be provided. You are more than welcome to bring your own rack as that is what you will be using after the course.


text:
<?php defined('SYSPATH') or die('No direct script access.');

class Model_Blog extends ORM
{
    protected $_table_name = "blog";
    protected $_primary_key = 'id';
}

redpajama_set_name: RedPajamaGithub


text:
La selezione multilivello è una teoria esposta dal biologo evoluzionista David Sloan Wilson, la quale  propone che la selezione naturale non avvenga solo tra individui, ma che esistano spinte selettive agenti ai diversi livelli della gerarchia biologica: a livello di gene, di cellula, d'individuo, di gruppo e di specie.

Secondo Wilson i diversi livelli dei processi evolutivi interagiscono tra di loro e sono organizzati in una struttura simile alle matrioske, uno dentro l'altro.

Nell'ottica della selezione multilivello trova una spiegazione la selezione di gruppo, che era stata ipotizzata negli anni '60 dal biologo Wynne-Edwards, sebbene criticata dalla maggior parte dei biologi evoluzionisti negli anni '70 oggi viene rivalutata. Secondo Wilson, infatti, l'altruismo può essere svantaggioso per l'individuo all'interno del gruppo, ma può assumere un valore adattativo positivo per il gruppo all'interno della popolazione.

Esempi di selezione a vari livelli
 Selezione di geni: questo tipo di selezione avviene tra i geni presenti all'interno degli individui. La visione genocentrica dell'evoluzione è stata evidenziata da diversi teorici del neodarwinismo, in particolare W.D.Hamilton e G.C.Williams, ma è stata esposta in maniera esaustiva da R.Dawkins  nel libro il gene egoista..Dawkins distingue i geni, che sono i replicatori, dagli individui o i gruppi, che considera come veicoli. Secondo questo scienziato, poiché il gene è causa del fenotipo, deve essere considerato come il vero bersaglio della selezione naturale.
 Selezione cellulare: questo tipo di selezione avviene quando, in un individuo pluricellulare, esistono differenti cloni di cellule con diversa capacità proliferativa. Un esempio tipico è il cancro, nel quale la proliferazione delle cellule cancerose è favorita rispetto a quella delle cellule normali, nonostante questo comporti una diminuzione della fitness, e quindi della sopravvivenza del livello superiore, cioè l'individuo.
 Selezione di individuo: è la selezione tradizionalmente concepita dove l'individuo più adatto all'ambiente, possiede maggiore possibilità di sopravvivenza e di riproduzione nel suo habitat naturale.
 Selezione di gruppo: questo tipo di selezione si verifica quando gruppi di organismi evolvono come unità adattative per caratteri che avvantaggiano il gruppo, anche a scapito dei singoli individui. I caratteri vantaggiosi per il gruppo, tuttavia, possono evolvere solo quando il processo di selezione tra gruppi è abbastanza forte da superare la selezione tra individui all'interno del gruppo. L'esempio più evidente è rappresentato dalle colonie di insetti sociali, che si comportano come unità adattative, dove i singoli organismi cooperano per la sopravvivenza del gruppo.
 Selezione di specie: questo tipo di selezione considera le specie come unità adattative che, in alcune circostanze, possono entrare in competizione con altre, ad esempio per una nicchia ecologica, per le risorse alimentari o altro. Le conseguenze di questa competizione potrebbero essere l'estinzione di un'intera specie o la comparsa di altre (speciazione). Tuttavia, esistono notevoli divergenze tra i biologi evoluzionisti sull'esistenza di una selezione a livello di specie o di gruppi tassonomici superiori; molti infatti, tendono a spiegare questi fenomeni come la conseguenza della selezione tra gli organismi delle diverse specie che entrano in competizione.

Note

Bibliografia
 D.S. Wilson, Darwin's Cathedral, 2002, La cattedrale di Darwin. Evoluzione, religione e natura della società, 2009, Giovanni Fioriti Editore, Roma
D.S. Wilson, E.O. Wilson, Evolvere per il bene del gruppo, «Le Scienze», giugno 2009, n. 490, pp. 90–99.
Mayr, E. (1997). "The objects of selection  Proc. Natl. Acad. Sci. USA 94 (March): 2091-94.

Biologia evolutiva

en:Group selection#Multilevel selection theory


text:
Q: How do I dynamically create clickable textviews from xml data read from an asset file? I have done my homework now.
I have an application that reads an asset xml file containing entries which first field begins with an upper case letter.
I read the xml, and I would like to DYNAMICALLY create CLICKABLE textviews so that I can show the rest of the data grouped by first letter.
I include here all the relevant files from my app.
All the app does right now is show with a Log.v that I do read all the data I need.
I have deliberately left the layout.xml pretty much empty. I DO want to create the textviews dynamically.
Any one to write the rest of the code for me!
What I would like you to do for me, or show me, is how--I suppose when I read the XML file--to dynamically create one clickable textView for each new alphabet letter I find in the  field and show it on the layout...
Manifest file:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.barebonesxmlread"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.barebonesxmlread.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

layout (activity_main.xml):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />

            <LinearLayout
                android:id="@+id/linearLayout1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical" />

</RelativeLayout>

The asset order.xml (I spared you the full-length 558 records original!):
<germany_licence_plates>
<licence_plate><abbrev>A</abbrev><full_name>Augsburg</full_name><land_name>Bayern</land_name></licence_plate>
<licence_plate><abbrev>AA</abbrev><full_name>Aalen Ostalbkreis</full_name><land_name>Baden-Wuerttemberg</land_name></licence_plate>
<licence_plate><abbrev>AB</abbrev><full_name>Aschaffenburg</full_name><land_name>Bayern</land_name></licence_plate>
<licence_plate><abbrev>B</abbrev><full_name>Berlin</full_name><land_name>Berlin</land_name></licence_plate>
<licence_plate><abbrev>BA</abbrev><full_name>Bamberg</full_name><land_name>Bayern</land_name></licence_plate>
<licence_plate><abbrev>BAD</abbrev><full_name>Baden-Baden</full_name><land_name>Baden-Wuerttemberg</land_name></licence_plate>
<licence_plate><abbrev>BAR</abbrev><full_name>Barnim</full_name><land_name>Brandenburg</land_name></licence_plate>
<licence_plate><abbrev>BB</abbrev><full_name>Boeblingen</full_name><land_name>Baden-Wuerttemberg</land_name></licence_plate>
<licence_plate><abbrev>C</abbrev><full_name>Chemnitz</full_name><land_name>Sachsen</land_name></licence_plate>
<licence_plate><abbrev>CA</abbrev><full_name>Calau</full_name><land_name>Brandenburg</land_name></licence_plate>
<licence_plate><abbrev>CB</abbrev><full_name>Cottbus</full_name><land_name>Brandenburg</land_name></licence_plate>
<licence_plate><abbrev>CE</abbrev><full_name>Celle</full_name><land_name>Niedersachsen</land_name></licence_plate>
<licence_plate><abbrev>DU</abbrev><full_name>Duisburg</full_name><land_name>Nordrhein-Westfalen</land_name></licence_plate>
<licence_plate><abbrev>DUW</abbrev><full_name>Bad Duerkheim / Neustadt/Weinstrasse</full_name><land_name>Rheinland-Pfalz</land_name></licence_plate>
<licence_plate><abbrev>DW</abbrev><full_name>Dippoldiswalde-Weisseritzkreis</full_name><land_name>Sachsen</land_name></licence_plate>
<licence_plate><abbrev>DZ</abbrev><full_name>Delitzsch</full_name><land_name>Sachsen</land_name></licence_plate>
<licence_plate><abbrev>ES</abbrev><full_name>Esslingen/Neckar</full_name><land_name>Baden-Wuerttemberg</land_name></licence_plate>
<licence_plate><abbrev>ESA</abbrev><full_name>Eisenach</full_name><land_name>Thueringen</land_name></licence_plate>
<licence_plate><abbrev>ESW</abbrev><full_name>Werra-Meissner-Kreis / Eschwege</full_name><land_name>Hess</land_name></licence_plate>
<licence_plate><abbrev>EU</abbrev><full_name>Euskirchen</full_name><land_name>Nordrhein-Westfalen</land_name></licence_plate>
<licence_plate><abbrev>EW</abbrev><full_name>Eberswalde</full_name><land_name>Brandenburg</land_name></licence_plate>
<licence_plate><abbrev>F</abbrev><full_name>Frankfurt/Main</full_name><land_name>Hess</land_name></licence_plate>
<licence_plate><abbrev>FB</abbrev><full_name>Wetteraukreis / Friedberg</full_name><land_name>Hess</land_name></licence_plate>
<licence_plate><abbrev>FD</abbrev><full_name>Fulda</full_name><land_name>Hess</land_name></licence_plate>
<licence_plate><abbrev>GU</abbrev><full_name>Guestrow</full_name><land_name>Mecklenburg-Vorpommern</land_name></licence_plate>
<licence_plate><abbrev>GUB</abbrev><full_name>Guben</full_name><land_name>Brandenburg</land_name></licence_plate>
<licence_plate><abbrev>GVM</abbrev><full_name>Grevesmuehlen</full_name><land_name>Mecklenburg-Vorpommern</land_name></licence_plate>
<licence_plate><abbrev>GW</abbrev><full_name>Greifswald/Landkreis</full_name><land_name>Mecklenburg-Vorpommern</land_name></licence_plate>
<licence_plate><abbrev>GZ</abbrev><full_name>Guenzburg</full_name><land_name>Bayern</land_name></licence_plate>
<licence_plate><abbrev>WT</abbrev><full_name>Waldshut-Tiengen</full_name><land_name>Baden-Wuerttemberg</land_name></licence_plate>
<licence_plate><abbrev>WTM</abbrev><full_name>Wittmund</full_name><land_name>Niedersachsen</land_name></licence_plate>
<licence_plate><abbrev>WU</abbrev><full_name>Wuerzburg</full_name><land_name>Bayern</land_name></licence_plate>
<licence_plate><abbrev>WUG</abbrev><full_name>Weissenburg-Gunzenhausen</full_name><land_name>Bayern</land_name></licence_plate>
<licence_plate><abbrev>WUN</abbrev><full_name>Wunsiedel</full_name><land_name>Bayern</land_name></licence_plate>
<licence_plate><abbrev>WUR</abbrev><full_name>Wurzen</full_name><land_name>Sachsen</land_name></licence_plate>
<licence_plate><abbrev>WW</abbrev><full_name>Westerwald / Montabaur</full_name><land_name>Rheinland-Pfalz</land_name></licence_plate>
<licence_plate><abbrev>WZL</abbrev><full_name>Wanzleben</full_name><land_name>Sachsen-Anhalt</land_name></licence_plate>
<licence_plate><abbrev>X</abbrev><full_name>Bundeswehr fuer NATO-Hauptquartiere</full_name><land_name>Special</land_name></licence_plate>
<licence_plate><abbrev>Y</abbrev><full_name>Bundeswehr</full_name><land_name>Special</land_name></licence_plate>
<licence_plate><abbrev>Z</abbrev><full_name>Zwickauer Land</full_name><land_name>Sachsen</land_name></licence_plate>
<licence_plate><abbrev>ZE</abbrev><full_name>Zerbst</full_name><land_name>Sachsen-Anhalt</land_name></licence_plate>
<licence_plate><abbrev>ZI</abbrev><full_name>Saechsischer Oberlausitzkreis Zittau</full_name><land_name>Sachsen</land_name></licence_plate>
<licence_plate><abbrev>ZP</abbrev><full_name>Zschopau</full_name><land_name>Sachsen</land_name></licence_plate>
<licence_plate><abbrev>ZR</abbrev><full_name>Zeulenroda</full_name><land_name>Thueringen</land_name></licence_plate>
<licence_plate><abbrev>ZS</abbrev><full_name>Zossen</full_name><land_name>Brandenburg</land_name></licence_plate>
<licence_plate><abbrev>ZW</abbrev><full_name>Zweibruecken</full_name><land_name>Rheinland-Pfalz</land_name></licence_plate>
<licence_plate><abbrev>ZZ</abbrev><full_name>Zeitz</full_name><land_name>Sachsen-Anhalt</land_name></licence_plate>
</germany_licence_plates>

mainActivity.java:
package com.example.barebonesxmlread;

import java.io.InputStream;
import java.util.ArrayList;

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

import com.example.barebonesxmlread.GermanyPlatesInfo;
import com.example.barebonesxmlread.OrderXMLHandler;
import com.example.barebonesxmlread.R;

import android.os.Bundle;
import android.app.Activity;
import android.content.res.AssetManager;
import android.util.Log;
import android.view.Menu;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        parseXML();
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    private void parseXML()
    {
        AssetManager assetManager = getBaseContext().getAssets();
        try {
              InputStream is = assetManager.open("order.xml");
              SAXParserFactory spf = SAXParserFactory.newInstance();
               SAXParser sp = spf.newSAXParser();
               XMLReader xr = sp.getXMLReader();

               OrderXMLHandler myXMLHandler = new OrderXMLHandler();
               xr.setContentHandler(myXMLHandler);
               InputSource inStream = new InputSource(is);
               xr.parse(inStream);

               ArrayList<GermanyPlatesInfo> plateList = myXMLHandler.getCartList();
               int i = 0;
               for(GermanyPlatesInfo germanyPlatesInfo: plateList)
               {
                   Log.v("Data", ++i + ": " + germanyPlatesInfo.seqNo + ": "  + germanyPlatesInfo.getItemNumber() + " - " + germanyPlatesInfo.getLandName());
               } // end of do all plates
                is.close();
            } // end of try
            catch (Exception e)
            {
                Log.v("JPB catch in parseXML", e.getMessage(), e);
            } // end of catch
    } // end of parseXML function
}

orderHandler.java:
package com.example.barebonesxmlread;

import java.util.ArrayList;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class OrderXMLHandler extends DefaultHandler {

 boolean currentElement = false;
 String currentValue = "";

 GermanyPlatesInfo germanyPlatesInfo;
 ArrayList<GermanyPlatesInfo> plateList;

 public ArrayList<GermanyPlatesInfo> getCartList() {
  return plateList;
 }

 public void startElement(String uri, String localName, String qName,
   Attributes attributes) throws SAXException {

  currentElement = true;

  if (qName.equals("germany_licence_plates")){
   plateList = new ArrayList<GermanyPlatesInfo>();
  }
  else if (qName.equals("licence_plate")) {
   germanyPlatesInfo = new GermanyPlatesInfo();
  }

 }

 public void endElement(String uri, String localName, String qName)
 throws SAXException {

  currentElement = false;

  if (qName.equalsIgnoreCase("abbrev"))
   germanyPlatesInfo.setSeqNo(currentValue.trim());
  else if (qName.equalsIgnoreCase("full_name"))
   germanyPlatesInfo.setItemNumber(currentValue.trim());
  else if (qName.equalsIgnoreCase("land_name"))
   germanyPlatesInfo.setLandName(currentValue.trim());
  else if (qName.equalsIgnoreCase("Price"))
   germanyPlatesInfo.setPrice(currentValue.trim());
  else if (qName.equalsIgnoreCase("licence_plate"))
   plateList.add(germanyPlatesInfo);

  currentValue = "";
 }

 public void characters(char[] ch, int start, int length)
 throws SAXException {

  if (currentElement) {
   currentValue = currentValue + new String(ch, start, length);
  }

 }

}

GermanyPlatesInfo.java:
package com.example.barebonesxmlread;

public class GermanyPlatesInfo {

 String seqNo = null;
 String itemNumber = "";
 String land_name = "";
 String price = "";

 public String getSeqNo() {
  return seqNo;
 }
 public void setSeqNo(String seqNo) {
  this.seqNo = seqNo;
 }
 public String getItemNumber() {
  return itemNumber;
 }
 public void setItemNumber(String itemNumber) {
  this.itemNumber = itemNumber;
 }
 public String getLandName() {
  return land_name;
 }
 public void setLandName(String land_name) {
  this.land_name = land_name;
 }
 public String getPrice() {
  return price;
 }
 public void setPrice(String price) {
  this.price = price;
 }

}

strings.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">bareBonesXMLRead</string>
    <string name="action_settings">Settings</string>
    <string name="hello_world">Barebones XML Read!</string>

</resources>

Did I forget anything! Ask!

A: You need to create loop depending on the size of your arraylist containing your parsed data.
And to create dynamic textviews here is the code:
for (int i = 0; i < Tel.size(); i++) {

                final TextView phone = new TextView(context);
                phone.setTextAppearance(context,
                        android.R.style.TextAppearance_Medium);
                phone.setText(Tel.get(i));
                phone.setTypeface(Typeface.DEFAULT);
                phone.setTextColor(Color.BLUE);
                phone.setPaintFlags(phone.getPaintFlags()
                        | Paint.UNDERLINE_TEXT_FLAG);

                phone.setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {

                        Call(phone.getText().toString());

                    }
                });

                InfoContainer.addView(phone);

            }

Here Tel is my array list containing all the phone numbers. And InfoContainer is my parent linearlayout in which i am adding these dynamically created textviews.


text:
(function cdnCheck() {
    var req = new XMLHttpRequest();
    req.open("GET", "https://cdn-check.teamlab.info/api/cdn/error?status=501", true);
    req.send(null);
})();


text:
Q: Obtain attribute names from XML using VBA I need to get the distinct attributes names from the XML using VBA.
this is my code.
 sub test()
 Dim XMLFile As Object
Dim XMLFileName As String
Set XMLFile = CreateObject("Microsoft.XMLDOM")

XMLFileName = "C:\Users\Input.xml"
XMLFile.async = False
XMLFile.Load (XMLFileName)
XMLFile.validateOnParse = False

Dim mainnode As Object
Dim node As Object

Set mainnode = XMLFile.SelectNodes("//Elements")

For Each node In mainnode
    For Each child In node.ChildNodes
    Debug.Print child.BaseName
    Dim kiddo As Object
    For Each kiddo In child.ChildNodes
        Debug.Print kiddo.BaseName
    Next kiddo
Next child
Next node
End sub

Here is the sample XML. I need to get the attribute name num from the XML.
<Elements>
<Details>
    <Name>ABC</Name>
    <Address>123ABC</Address>
    <College>
        <collname>safasf</collname>
         <collnumber/>
    </College>
</Details>
<Dept num="123">
    <Deptname>IT</Deptname>
    <ID>A123</ID>
 </Dept>
</Elements>

Expected Result:
 Elements
 Details
 Name
 Address
 College
 collname
 collnumber
 Dept
 num
 Deptname
 ID

Actual Result from above code:
 Elements
 Details
 Name
 Address
 College
 collname
 Dept
 Deptname
 ID

The "num" attribute and <collnumber/> tag is not fetched by my code. Could someone let me know how to fetch the attribute names along with the tag names  from XML using VBA

A: Displaying  XML structures including attributes via recursive function calls
My example code  demonstrates a way to

*

*[1] assign the entire XML structure to a 2-dim array using XMLDOM methods and

*[2] optionally write it back to a sheet.

Amplifying hints:
I added these ► structured hints to offer more help than by displaying code only, as I remarked that many of these points lead to repeated questions by other users, too:

*

*Trying to list  XML structures you lose good view  with increasing  hierarchy  depth of your node elements (type constant  1 NODE_ELEMENT), so I urgently recommend the use of ► recursive  calls  as used in this example code.

*Furthermore you might have not considered the special construction of node text (type constant 3 NODE_TEXT) being  the first child of  a name giving parent element  -  c.f. sections A. and B. in main function listChildNodes.  Your loops through child nodes would not  distinguish between the mentioned types. Just study the comments in the cited function for details.

*I suppose your XML file starts with a needed processing instruction like e.g. <?xml version="1.0" encoding="utf-8"?>, so that it can be actually identified as XML file.

*The calling procedure DisplayXML() uses late binding instead of early bound reference to MS XML similar to your post, but uses the recommended  MSXML2 version 6.0.  It calls the main function via its DocumentElement <Elements>  (BTW a single node element) and a second argument referring to a predefined 2-dim array v.

*Versioning: If you would set your XMLFILE object  to memory with Set XDoc = CreateObject("MSXML2.DOMDocument")  generally you are getting the older  default Version (3.0), so in most cases it's preferrable to use explicitly Set XDoc = CreateObject("MSXML2.DOMDocument.6.0")  instead (including XPath automatically).

*If you don't use the Load function to get a True (file loaded successfully) or False (load error) back, it is not necessary to set the file name into brackets ().

*The XPath operator // in search strings would return any occurences at any level (c.f. XMLFile.SelectNodes("//Elements") in your OP).

*Consider  also the use of XSLT, a special-purpose language designed to tranform XML files into all kind of end-use formats.

Calling procedure DisplayXML
Hint: It would sufficient to dimension the array 's row count only with an estimated number of items in the calling procedure (e.g. 1000), as the main function executes a ReDim (including a double transposition) automatically if needed. Nevertheless I added the exact items count here from the start via XPath/XMLDOM expression XMLFile.SelectNodes("//*").Length counting any item in the entire file.
Option Explicit          ' declaration head of your code module

Sub DisplayXML()
Dim XMLFile As Object
Dim XMLFileName As String
'Set XMLFile = CreateObject("Microsoft.XMLDOM")   ' former style not recommended
Set XMLFile = CreateObject("MSXML2.DOMDocument.6.0")

XMLFileName = "C:\Users\Input.xml"                             ' << change to your xml file name
XMLFile.Async = False
XMLFile.ValidateOnParse = False
Debug.Print XMLFile.XML

If XMLFile.Load(XMLFileName) Then
' [1] write xml info to array with exact or assumed items count
  Dim v As Variant: ReDim v(1 To XMLFile.SelectNodes("//*").Length, 1 To 2)
  listChildNodes XMLFile.DocumentElement, v                 ' call helper function

' [2] write results to sheet "Dump"                         ' change to your sheet name
  With ThisWorkbook.Worksheets("Dump")
       .Range("A:B") = ""                                   ' clear result range
       .Range("A1:B1") = Split("XML Tag,Node Value", ",")   ' titles
       .Range("A2").Resize(UBound(v), UBound(v, 2)) = v     ' get  2-dim info array
  End With
Else
       MsgBox "Load Error " & XMLFileName
End If
Set XMLFile = Nothing
End Sub

Structured results displayed in sheet
Hint: If you don't want the level indentation or enumerated Level hierarchy, you can easily adapt the main function listChildNodes() below.
+----+---------------------+-----------------+
|    |         A           |       B         |
+----+---------------------+-----------------+
|1   | XML Tag             | Node Value      |
+----+---------------------+-----------------+
|2   | 0 Elements          |                 |
+----+---------------------+-----------------+
|3   |   1 Details         |                 |
+----+---------------------+-----------------+
|4   |     2 Name          | ABC             |
+----+---------------------+-----------------+
|5   |     2 Address       | 123ABC          |
+----+---------------------+-----------------+
|6   |     2 College       |                 |
+----+---------------------+-----------------+
|7   |       3 collname    | safasf          |
+----+---------------------+-----------------+
|8   |       3 collnumber  |                 |
+----+---------------------+-----------------+
|9   |   1 Dept[@num="123"]|                 |
+----+---------------------+-----------------+
|10  |     2 Deptname      | IT              |
+----+---------------------+-----------------+
|11  |     2 ID            | A123            |
+----+---------------------+-----------------+

It is also possible to refer to a precise node element, e.g. via
listChildNodes XMLFile.DocumentElement.SelectSingleNode("Dept[@num=""123""]"),v, 1, 1       ' starting from item no 1 and Level no 1

This would list the indicated node set alone:
+----+---------------------+-----------------+
|    |         A           |       B         |
+----+---------------------+-----------------+
|1   | XML Tag             | Node Value      |
+----+---------------------+-----------------+
|2   |   1 Dept[@num="123"]|                 |
+----+---------------------+-----------------+
|3   |     2 Deptname      | IT              |
+----+---------------------+-----------------+
|4   |     2 ID            | A123            |
+----+---------------------+-----------------+

Recursive main function listChildNodes()
Looping through childnode collections this function calls itself (i.e. the current node object) repeatedly ("recursively") and assigns the entire XML structure to a given 2-dim array (2nd argument). Furthermore it allows indendation and indicates the hierarchy levels. Note that the array in this example has to be 1-based.
Edit 20/8 2018 includes an automatic increase of array size if the items counter i exceeds the current array's upper boundary (UBound(v), i.e. in its first dimension = items count). Technical note: As such a ReDim isn't possible in a minor (here 1st) dimension, an intermediate transposition changing 'rows' (dim 1) to 'columns' (dim 2) is necessary.
Function listChildNodes(oCurrNode As Object, _
                        ByRef v As Variant, _
                        Optional ByRef i As Long = 1, _
                        Optional iLvl As Integer = 0 _
                        ) As Boolean
' Purpose: assign the complete node structure with contents to a 1-based 2-dim array
' Author:  T.M.
' Note: Late binding XML doesn't allow the use of IXMLDOMNodeType enumeration constants
'       (1 ... NODE_ELEMENT, 2 ... NODE_ATTRIBUTE, 3 ... NODE_TEXT etc.)
' Escape
  If oCurrNode Is Nothing Then Exit Function
  If i < 1 Then i = 1                                       ' one based items Counter
' Edit 20/8 2018 - Automatic increase of array size if needed
  If i >= UBound(v) Then                                    ' change array size if needed
     Dim tmp As Variant
     tmp = Application.Transpose(v)                         ' change rows to columns
     ReDim Preserve tmp(1 To 2, 1 To UBound(v) + 1000)      ' increase row numbers
     v = Application.Transpose(tmp)                         ' transpose back
     Erase tmp
  End If
  Const NAMEColumn& = 1, VALUEColumn& = 2                   ' constants for column 1 and 2
' Declare variables
  Dim oChildNode As Object                                  ' late bound node object
  Dim bDisplay   As Boolean
' ---------------------------------------------------------------------
' A. It's nothing but a TextNode (i.e. a parent node's firstChild!)
' ---------------------------------------------------------------------
If (oCurrNode.NodeType = 3) Then                                 ' 3 ... NODE_TEXT
  ' display pure text content (NODE_TEXT) of parent elements
    v(i, VALUEColumn) = oCurrNode.Text                           ' nodeValue of text node
  ' return
    listChildNodes = True
ElseIf oCurrNode.NodeType = 1 Then                                ' 1 ... NODE_ELEMENT
   ' --------------------------------------------------------------
   ' B.1 NODE_ELEMENT WITHOUT text node immediately below,
   '     a) e.g. <Details> followed by node element <NAME>,
   '        (i.e. FirstChild.NodeType must not be of type NODE_TEXT = 3)
   '     b) e.g. <College> node element without any child node
   '     Note: a text content (NODE_TEXT) actually is a child node(!) to an element node
   '           (see section A. getting the FirstChild of a NODE_ELEMENT)
   ' --------------------------------------------------------------
   ' a) display parent elements of other element nodes
     If oCurrNode.HasChildNodes Then
         If Not oCurrNode.FirstChild.NodeType = 3 Then             ' <>3 ... not a NODE_TEXT
            bDisplay = True
         End If
   ' b) always display empty node elements
     Else                                                           ' empty NODE_ELEMENT
            bDisplay = True
     End If
     If bDisplay Then
            v(i, NAMEColumn) = String(iLvl * 2, " ") & _
                               iLvl & " " & _
                               oCurrNode.nodename & getAtts(oCurrNode)
            i = i + 1
     End If

   ' --------------------------------------------------------------
   ' B.2 check child nodes
   ' --------------------------------------------------------------
     For Each oChildNode In oCurrNode.ChildNodes
      ' ~~~~~~~~~~~~~~~~~
      ' recursive call <<
      ' ~~~~~~~~~~~~~~~~~
        bDisplay = listChildNodes(oChildNode, v, i, iLvl + 1)

        If bDisplay Then
            v(i, NAMEColumn) = String(iLvl * 2, " ") & _
                               iLvl & " " & _
                               oCurrNode.nodename & getAtts(oCurrNode)
            i = i + 1
        End If
     Next oChildNode
   ' return
     listChildNodes = False

Else    ' just to demonstrate the use of other xml types as e.g. <!-- comments -->
     If oCurrNode.NodeType = 8 Then   ' 8 ... NODE_COMMENT
        v(i, VALUEColumn) = "<!-- " & oCurrNode.NodeValue & "-->"
        i = i + 1
     End If
   ' return
     listChildNodes = False
End If

End Function

'Helper function getAtts()
This helper function called by the above function returns a string enumerating all attribute names and values of a given node similar to XPath notation; the code can be easily adapted to your needs.
Function getAtts(ByRef node As Object) As String
' Purpose: return attribute(s) string in brackets, e.g. '[@num="123"]'
' Note:    called by above function listChildNodes()
' Author:  T.M.
  Dim sAtts$, ii&
  If node.Attributes.Length > 0 Then
      ii = 0: sAtts = ""
      For ii = 0 To node.Attributes.Length - 1
        sAtts = sAtts & "[@" & node.Attributes.Item(ii).nodename & "=""" & node.Attributes.Item(ii).NodeValue & """]"
      Next ii
  End If
' return
  getAtts = sAtts
End Function


Over the past 60 days, I have two clients negotiate their fees for speaking abroad. It's no secret that speakers aren't getting paid what they used to and professional orators have to get creative about how they earn money from the stage. But there are a number of organizations that pay experts to travel internationally to share their expertise.
So if you are following my recommendations and creating a sh*t ton of content, and promoting the heck out of it. Then it won't be long before foreign eyes find you online and ask you to come and share your knowledge with them. Another way to attract worldwide attention is to build a reputation for delivering great results consistently. Both of these strategies worked for my clients.
Chica #1 creates an obnoxious amount of YouTube content and Chica #2 has been delivering amazing results for her current clients. Both were referred to these gigs by folks seeking their specific expertise. When these ladies rang me up, I offered some advice that gave them the confidence to have kickass negotiations and land a dream working vacay.
There are some things you need to consider in addition to your actual fee. Here are a few gems I dropped on them.
Airfare – be sure you request roundtrip airfare on a reputable airline. Don't settle for an economic, bootleg airline.
Ground Transportation – once you land, you will also need to be transported to your accommodations and to other places during your trip. Be sure that they provide this or include this in your daily stipend.
Accommodations – be sure to clarify the quality of accommodations you expect. For example, you can say "3-star hotel or higher". You can also specify things like "private bathroom required".
Food – get clear on how many meals per day your host will provide. Two Meals is customary. Be sure to add the costs of food and snacks to your daily stipend. Make the amount bigger or smaller depending on the number of meals provided.
Rider Agreement – If you have special requests for ANYTHING from food to audio/visual needs to goose down pillows, you should place this in the RIDER of your Speakers Contract.
Now you know what they say. If you STAY ready, you don't have to get ready. And I would love to help you get ready with my GET BOOKED TEMPLATE BUNDLE which includes a speakers kit template and speakers contract with that Rider Agreement I mentioned earlier. This is one sure fire way to capture and apply of all the advice that I dropped in this post.
And on that note, I think I will skedaddle. Catch ya on the flip side!