- Video report by ITV News Correspondent Neil Connery
A French officer who died after swapping himself for a hostage when an extremist gunman attacked a supermarket in France has been praised as a "hero".
Arnaud Beltrame managed to leave his mobile phone switched on after the swap, establishing contact with security personnel outside the building and giving them crucial details about what was going on inside.
After officers heard shots being fired on the phone, elite forces stormed the market, shooting and killing gunman Redouane Lakdim.
Two other officers were wounded during the assault in Carcassonne on Friday.
Three people died and dozens were wounded in the incident. Lakdim, who held up a car and opened fire on police officers before taking the hostages, pledged allegiance to so-called Islamic State.
Early on Saturday, France's interior minister Gerard Collomb said Beltrame had "died for his country".
Announcing his death, Mr Collomb said: "He died for his country. France will never forget his heroism, his bravery, his sacrifice."
How did the series of attacks begin?
Authorities say Lakdim first held up a car in the historic tourist city of Carcassonne, nearly 60 miles south of Toulouse.
The passenger was killed with a bullet to the head and the driver of the car was wounded, police said.
In a drive-by shooting, he fired six times at a group of four police officers who were returning to their base after a run, police union spokesperson Yves Lefebvre said.
One officer was shot in the shoulder but the injury was not serious, Mr Lefebvre said.
The officers, based in the southern city of Marseille, were on a temporary mission in Carcassonne and were wearing athletic clothes bearing police insignia.
How did the events unfold at the supermarket?
Lakdim then drove nine miles away to the small town of Trebes where he stormed the Super U supermarket screaming "Allahu Akbar, I’ll kill you all", authorities said.
It is not known how many people were held hostage in the supermarket but police said that two were killed and dozens more injured.
What do we know about the gunman?
Interior minister Gerard Collomb described attacker Redouane Lakdim as a "radicalised petty criminal and small-time drug dealer".
He is believed to be a Moroccan who was on a 'watchlist' of suspected Islamic extremists and had been under surveillance.
But Mr Collomb said it was not clear to authorities he was a committed radical, adding: "It was more of a petty criminal who at a certain moment decided to act."
During the siege, the 26-year-old is said to have claimed allegiance to so-called Islamic State but the nature of his connection with the extremist group is not known.
Mr Collomb confirmed reports that during the siege Lakdim demanded the release of Salah Abdeslam, the last surviving member of the terrorist cell that carried out the Paris attacks in 2015.
Abdeslam is now on trial in Belgium where he was captured after the attacks that left 130 people dead.
However, it is not known whether Lakdim and Abdeslam were connected in any way.
Did the so-called Islamic State group organise the attack?
The so-called Islamic State group has claimed responsibility for the fatal shootings and hostage-taking, the Associated Press reported.
However, it is unclear at this stage whether Lakdim was inspired by the extremist group or whether others were involved in the attack.
It described Lakdim as one of its "soldiers" but Mr Collomb said Lakdim "acted alone".
"There was no one else but him," the Interior Minister added.
Macron said all evidence suggested that it was a terror attack - the first one since he became president in May.
He is to attend an emergency meeting in Paris following the attack.
The Paris prosecutor's office said counter-terrorism investigators were taking over the probe.
The IS-linked Aamaq news agency said the attacker was responding to the group's calls to target countries in the U.S.-led coalition carrying out airstrikes against IS militants in Syria and Iraq since 2014.
France has been repeatedly targeted because of its participation in the airstrikes.